СУБД Dolt, позволяющая манипулировать данными в стиле Git

Проект Dolt развивает СУБД, сочетающую поддержку SQL со средствами версионирования данных в стиле Git. Dolt позволяет клонировать таблицы, создавать форки и выполнять слияния таблиц, а также выполнять операции push и pull по аналогии с действиями в git-репозитории. При этом СУБД поддерживает SQL-запросы, совместимые с MySQL. Код проекта написан на языке Go и распространяется под лицензией Apache 2.0.

Возможности по версионированию данных в БД позволяют отслеживать происхождение данных – привязка к коммитам даёт возможность фиксировать состояние для получения идентичных результатов, которые независимо от текущего состояния в любое время могут быть повторены на других системах. Кроме того, пользователи могут перемещаться по истории, отслеживать изменения в таблицах при помощи SQL без необходимости сверки резервных копий, проводить аудит изменений, а также формировать запросы, охватывающие данные в определённый момент.


СУБД предоставляет два режима работы – Offline и Online. После перевода в offline содержимое БД становится доступно как репозиторий, с которым можно выполнять действия с использованием git-подобной утилиты командной строки. Работа во многом напоминает git и отличается главным образом тем, что изменения отслеживаются не для файлов, а для содержимого таблиц. Через предлагаемый CLI-интерфейс можно импортировать данные из файлов в формате CSV или JSON, добавлять коммиты с изменениями, выводить различия между версиями, создавать ветки, устанавливать теги, выполнять push-запросы к внешним серверам и выполнять слияния изменений, предложенных другими участниками.

При желании данные могут размещаться в каталоге DoltHub, который можно рассматривать как аналог GitHub для размещения данных и совместной работы с данными. Пользователи могут создавать форки репозиториев данными, предлагать свои изменения и осуществлять слияния со своими данными. Например, в DoltHub можно найти различные БД со статистикой о коронавирусе, коллекциями аннотированных данных для систем машинного обучения, языковыми лексическими базами, коллекциями изображений, наборами для классификации объектов и информацией о принадлежности IP-адресов.

В режиме “online” запускается Dolt SQL Server, который позволяет манипулировать с данными при помощи языка SQL. Предоставляемый интерфейс близок к MySQL и может использоваться через подключение совместимых с MySQL клиентов или при помощи CLI-интерфейса. При этом Dolt скорее является инструментом для манипулирования данными, чем системой обработки запросов. Например, по умолчанию SQL-сервер может обрабатывать только одно активное соединение пользователя к репозиторию, размещённому в текущей директории (через настройки данное поведение можно изменить). Возможен перевод сервера в режим только для чтения. Многие действия, связанные с управлением версиями, также можно выполнять через SQL, например, совершать коммиты или переключаться между ветками.

Release. Ссылка here.