Сжатие истории правок в SQLite: 20 МБ текста превратились в 80 КБ с помощью zstd
Саймон Уиллисон (Simon Willison) поделился идеей эффективного хранения истории изменений текста в реляционной базе. Вместо отдельных строк для каждой версии он предлагает собирать все предыдущие варианты в JSON-массив строк и сжимать его алгоритмом zstd (или zlib). Повторяющиеся фрагменты текста при таком подходе отлично упаковываются.
Для проверки концепции он использовал голосовой режим ChatGPT в iPhone, а затем передал задачу GPT-5.6 Sol Pro (вероятно, внутренняя модель). За 38 минут ИИ написал прототип на Python, который симулировал 1000 последовательных правок документа. Результат: 20,4 МБ сырого текста сжались до 80,3 КБ — коэффициент сжатия около 250:1.
Чтобы избежать перепаковки всего массива при каждом редактировании, прототип разбивает историю на несколько строк: каждая содержит не более 128 ревизий или 3 МБ несжатого JSON. Это компромисс между степенью сжатия и скоростью записи. Исходный код и файлы доступны в репозитории автора.