Хранение версий текста в SQLite через сжатие: эксперимент с 250-кратным уменьшением объёма
Саймон Уиллисон протестировал идею хранения истории изменений текста в SQLite через сжатие JSON-массива всех версий. Результат: 1000 ревизий документа (20.4 МБ сырого текста) сжались до 80.3 КБ с помощью Zstandard. Прототип сгенерировал ChatGPT Voice mode + GPT-5.6 Sol Pro за 38 минут.
Показывает, как простая идея и новые AI-инструменты (ChatGPT Voice) могут за полчаса решить проблему, над которой раньше бились днями. Плюс конкретное решение для всех, кто строит версионность в SQLite.
Что произошло
Саймон Уиллисон (автор Datasette) поделился экспериментом с хранением версионности в SQLite. Классическая проблема: каждая правка документа в 20 КБ добавляет ещё 20 КБ в базу. Диффы сложны, дельта-кодирование хрупкое.
Новый подход: сложить все версии текста в JSON-массив строк и сжать одним куском через zlib/zstd. Гипотеза: повторяющиеся фрагменты между версиями должны отлично сжиматься.
Проверял через ChatGPT Voice mode (новый GPT-Live на iPhone) — надиктовал идею голосом, потом дал команду «Use Python and build experimental prototypes». GPT-5.6 Sol Pro работал 38 минут, выдал рабочий код.
Результаты теста: 1000 симуляций правок документа → 20.4 МБ сырого текста → 80.3 КБ в Zstandard (коэффициент сжатия ~250x). Для оптимизации предложено разбивать историю на чанки по 128 ревизий или 3 МБ несжатых данных — чтобы не распаковывать всё при каждой правке.
Хранится в двух колонках: blob со сжатым JSON-массивом текстов + несжатый массив timestamp'ов (целые числа, сжимать не нужно).
Автор: Марина Соколова · Источник: simonwillison.net
Разработчикам. Готовое решение для версионности в SQLite без сложных диффов: два BLOB-поля (сжатый JSON-массив версий + массив timestamp'ов), коэффициент сжатия до 250x на реальных данных. Можно адаптировать под CMS, wiki-движки, collaborative editors. Код и прототип уже есть.
Бизнесу. Радикальное снижение затрат на хранение истории изменений в SaaS-продуктах (документы, заметки, коллаборативные редакторы). Вместо дорогих версионных хранилищ — обычная SQLite с компрессией. Потенциально удешевляет инфраструктуру для Notion-подобных сервисов.
Инвесторам. Показательный кейс использования новых возможностей ChatGPT (voice mode + долгая генерация кода) для прототипирования. Подход может повлиять на архитектуру collaborative software (Notion, Coda, Linear) — упрощение стека и снижение costs на хранение.
- Открытая библиотека для Python/JS с этим паттерном — продать как sqlite-versioning или добавить в Datasette как плагин
- SaaS-сервис для версионности: API, который принимает текст и отдаёт сжатую историю (managed SQLite в облаке)
- Интеграция в low-code платформы (Retool, Baserow, NocoDB) — кнопка «включить версионность» без костылей
- Консалтинг для enterprise: миграция legacy систем с раздутыми revision-таблицами на сжатую схему — экономия на storage
- Educational контент: курс «Эффективная работа с SQLite» с кейсами вроде этого — монетизация через Gumroad/Maven
- Распаковка всей истории при каждом чтении старой версии — если нужен быстрый доступ к произвольной ревизии, подход не подходит
- Corruption риск: если сжатый blob повредится, теряется вся история разом (в отличие от построчного хранения)
- Масштабируемость под вопросом: на миллионах документов и тысячах ревизий в каждом могут быть проблемы с памятью при декомпрессии
- Это эксперимент одного человека, а не production-tested решение — реальные edge cases не проверены
Это один из тех кейсов, когда простое решение оказывается лучше умных алгоритмов. Вместо сложных диффов и дельта-кодирования — тупо запаковать всё вместе, и компрессор сам найдёт повторы. Работает отлично для 90% задач (аудит, wiki, CMS), где старые версии читаются редко.
Второй инсайт — ChatGPT Voice mode уже не игрушка. Саймон надиктовал идею на ходу, модель поняла с полуслова, сгенерила рабочий прототип за 38 минут. Это новый уровень для solo-разработчиков: от мысли до MVP без отрыва от прогулки. Да, это ещё эксперимент, но направление очевидно — voice-first coding станет нормой быстрее, чем мы думаем.
Инструменты из статьи
Универсальный AI-ассистент OpenAI: тексты, код, анализ, изображения, голос.
Доступ из РФ →
Комментарии