HeadlinesBriefing favicon HeadlinesBriefing.com

DoltLite: Fork SQLite с Git-стилем контроля версий

Hacker News •
×

Мой ребенок вырос. Только пять месяцев после запуска Dolt Lite стал Beta, версия 0.50.0. Dolt Lite изначально был шуткой. Мне понадобился проект для тестирования инновационного оркестратора агентов Steve Yegge, Gas Town. Мне нужен был реальная проблема, а не игрушка. Мы хотели встроенную версию Dolt уже много лет, но переписывание движка хранилища Dolt на C или Rust было слишком далеко. SQLite казался логическим хостом для этого двигателя. Смог ли команда агентов справиться? Заняло около 2 000 запросов на pull, но Dolt Lite Beta доказывает, что команда агентов точно могла.

Что такое Dolt Lite

Dolt Lite — форк SQLite. Всё выше слоя B-tree идентично. Это означает SQL-парсер и анализатор, слой взаимодействия с файловой системой и набор тестов — стандартный SQLite. В других продуктах Dolt нам приходилось реализовывать SQL-движок поверх хранилища с контролем версий. Создание SQL-движка сложно. С Dolt Lite мы получили его за стоимость написания движка хранилища с контролем версий на C. Слой B-tree заменен на Prolly Tree, поддерживаемый одним файлом хранилища чанков. Prolly Trees — это деревья B с адресом содержимого. Эта магическая структура данных обеспечивает функциональность контроля версий во всех продуктах Dolt. Это значит, что вы получаете все функции контроля версий Dolt и Git в пакете SQLite. Хотели вы когда-нибудь ветки, слияния и diff SQLite? Dolt Lite для вас. Или, что еще важнее, хотели вы когда-нибудь конфликт-aware SQLite синхронизацию, driven by Git-style push, pull, clone, and fetch? Dolt Lite для вас. Или, что еще важнее, хотели вы когда-нибудь конфликт-aware SQLite синхронизацию, driven by Git-style push, pull, clone, and fetch? Dolt Lite для вас. Вы даже можете использовать Dolt Hub как ваш бэкенд синхронизации.

Что означает Beta?

Так что означает переход Dolt Lite в Beta для вас? Beta означает четыре вещи: Стабильность формата хранения, SQL-совместимость, Полный контроль версий, Производительность Production и отчеты с поля о функциональности и стабильности универсально положительные. Батарея тестов SQLite действительно впечатляющая. Dolt Lite проходит эти тесты а также кастомный набор тестов oracle Dolt. Dolt Lite готов для вас попробовать. Стабильность формата хранения

Самая большая жалоба в процессе разработки Dolt Lite была о скачках формата хранения. Изменения формата хранения не были совместимы с обратной стороной, заставляя пользователей оставаться на одной версии или вручную дампить и переимпортировать свои базы данных. До Beta потребовалось 12 изменений формата. Мы на текущем формате уже 57 релизов, или более трех месяцев календарного времени. Этот формат кажется тем, который мы можем удержать. Формат хранения теперь стабильны. Любые будущие ломкие изменения будут иметь поддерживаемый путь миграции. Dolt Lite Beta означает, что вы можете采用 без страха ломкого изменения формата хранения. SQL-совместимость

Слой SQL SQLite очень хорошо протестирован. Dolt Lite проходит большинство этих тестов тоже, доказывая SQL-совместимость. Dolt Lite проходит 100% sqllogictest, набор из 5,8M сложных запросов. Слой запросов такой же, как у SQLite, поэтому это ожидаемо. SQLite также поставляется с набором 892 277 TCL-базированных тестов принятия, которые тестируют broader поверхность API SQLite. Dolt Lite проходит 99,46% с 4 809 известными дивергенциями. Каждая дивергенция должна иметь указанную причину. Основные причины: Таблицы ключатся по первичному ключу, а не по rowid, для поддержки функциональности контроля версий. Некоторые тесты напрямую инспектируют rowid. Dolt Lite имеет чанки, а не страницы. Некоторые тесты напрямую инспектируют страницы. Нет файла WAL или journal-бокупа. Тесты WAL и journal пропускаются. Пользователи SQLite почувствуют себя как дома с Dolt Lite. Dolt Lite работает как SQLite с дополнительными функциями контроля версий. Полный контроль версий

Dolt Lite реализует базовый набор функций контроля версий стиля Git Dolt. Поддерживаются локальные функции контроля версий. Ветки, слияния, diffs, rebases, cherry-picks, и resets, называние нескольких. Поддерживается удаленный контроль версий: push, pull, clone, and fetch от custom remot...