The Dolt project develops a DBMS that combines SQL support with Git-style data versioning. Dolt allows you to clone tables, fork and merge tables, and perform push and pull operations similar to those in a git repository. At the same time, the DBMS supports SQL-queries compatible with MySQL. The project code is written in Go and is distributed under the Apache 2.0 license.
Database versioning capabilities allow tracking data origin – binding to commits makes it possible to capture state for obtaining identical results that, regardless of the current state, can be repeated at any time on other systems. In addition, users can navigate through history, track changes in tables using SQL without the need to reconcile backups, audit changes, and generate queries covering data at a specific point.
The DBMS provides two modes of operation – Offline and Online. After being taken offline, the contents of the database become available as a repository, with which you can perform actions using a git-like command line utility. It works a lot like git and differs mainly in that changes are tracked not for files, but for the contents of tables. Through the proposed CLI, you can import data from CSV or JSON files, add commits with changes, display differences between versions, create branches, set tags, push requests to external servers, and merge changes submitted by other contributors.
If desired, data can be placed in the DoltHub directory, which can be viewed as a GitHub analog for data hosting and collaboration with data. Users can fork data repositories, propose changes, and merge with their data. For example, in DoltHub you can find various databases with statistics about coronavirus, collections annotated data for machine learning systems, language lexical bases , image collections , with object classification kits and information about the ownership of IP addresses.