Реклама
Перетяжка // Коробка 3.0

DoltLite вышел в бету: SQLite с ветками и merge, но запись дороже

Формат хранения объявлен стабильным; мелкие autocommit-записи в 3,1 раза медленнее SQLite.

Обложка: DoltLite вышел в бету: SQLite с ветками и merge, но запись дороже

Компания DoltHub 31 августа объявила, что DoltLite, её форк SQLite с Git-подобным контролем версий, достиг стадии Beta и получил версию 0.50.0. Для разработчика это значит: формат хранения объявлен стабильным, и базу с ветками, diff и merge теперь можно пробовать в настоящих проектах, а не только в экспериментах. Цена версионирования тоже названа: мелкие записи в несколько раз медленнее SQLite.

DoltLite запустили 25 марта 2026 года как замену SQLite, у которой вместо B-tree под капотом content-addressed Prolly Tree. Всё остальное, по описанию основателя DoltHub Тима Сена, от SQLite: парсер SQL, анализатор, файловый слой и тестовый harness. До беты ушло около 2000 pull request и пять месяцев.

Ключевые выводы
  • DoltLite 0.50.0 объявлен бетой: стабильный формат хранения, SQL-совместимость и полный набор операций контроля версий.
  • Поддерживаются branch, merge, diff, rebase, cherry-pick, reset, а также push, pull, clone и fetch на свой remote или DoltHub.
  • Из 892 277 TCL-тестов SQLite проходят 99,46%; sqllogictest на 5,8 млн запросов проходит полностью; известно 4809 расхождений.
  • В памяти чтение медленнее SQLite на 10%, запись на 60%; для файловых баз чтение на уровне SQLite, пакетная запись медленнее на 10%.
  • Мелкие autocommit-записи медленнее в 3,1 раза: около 400 мкс против 125 мкс у SQLite.

Что «бета» означает у DoltHub

Компания перечисляет четыре условия. Стабильный формат хранения: до беты он менялся 12 раз, а текущий вариант продержался 57 релизов, больше трёх месяцев, и для будущих несовместимых изменений обещан путь миграции. SQL-совместимость: DoltLite проходит 100% sqllogictest, это 5,8 млн запросов, и 99,46% из 892 277 TCL-тестов самого SQLite. Полный контроль версий: ветки, слияния, diff, rebase, cherry-pick, reset и удалённые операции. И производительность, пригодная для production, с оговорками ниже.

Оставшиеся 4809 расхождений с SQLite DoltHub объясняет архитектурой: отказ от rowid, chunk вместо page и отсутствие WAL и journal-файлов рядом с базой. Если код полагается на эти детали SQLite, миграция не будет прозрачной; проверить стоит именно их.

Сколько стоит версионирование

Замеры приводит сам вендор. Для базы в памяти чтение медленнее SQLite примерно на 10%, запись примерно на 60%. Для файловой базы чтение на уровне SQLite, пакетная запись медленнее примерно на 10%. Хуже всего мелким autocommit-транзакциям: каждая такая запись занимает около 400 мкс против 125 мкс у SQLite, то есть в 3,1 раза дольше. Причина в природе Prolly Tree: каждое изменение порождает новые chunk с хешами, и на одиночной вставке эта работа не амортизируется.

На практике это значит, что DoltLite подходит для сценариев, где данные меняются пакетами и важна история: конфигурации, справочники, наборы данных для ML, локальные базы в приложениях, где нужен откат и сравнение версий. Для очереди с тысячами мелких вставок в секунду SQLite по-прежнему быстрее, и вендор этого не скрывает.

Что можно сделать уже сегодня

Рабочий цикл похож на Git: создать ветку, изменить данные, посмотреть diff, слить. Удалённые операции push, pull, clone и fetch работают с собственным remote или с DoltHub. 7 августа DoltHub добавила поддержку DoltLite в Dolt Workbench, свой графический клиент, где ветвление, diff и merge доступны из интерфейса.

Сборки, по данным репозитория, есть для Linux, macOS, Windows, Python, Node.js, Rust, Android и WebAssembly. Лицензия в анонсе беты не указана, и перед использованием в коммерческом продукте её стоит уточнить в репозитории.

Релиз 0.50.0 не содержит изменений кода относительно 0.11.57: номер версии подняли, чтобы обозначить бету. Если вы уже на 0.11.57, обновляться ради кода не нужно.

Контекст

DoltHub с 2018 года развивает Dolt, версионируемую базу, совместимую с MySQL. DoltLite переносит ту же идею на встраиваемый движок: Prolly Tree даёт дешёвое сравнение версий по хешам и структурное слияние, а SQLite даёт зрелый SQL-слой. По нашей оценке, главный практический вопрос беты не в фичах, а в том, насколько быстро проект закроет разрыв в мелких записях: именно там пройдёт граница между «база для датасетов» и «замена SQLite в приложении».

Сроков выхода стабильной версии DoltHub не называет; редакция проверит, изменится ли производительность записи в следующих релизах.

Источники: Блог DoltHub: DoltLite Beta, Релиз v0.50.0 на GitHub