GitとMySQLが合体!テーブルをブランチ・マージ・差分管理できるバージョン管理付きSQLデータベース — dolt

dolthub/doltGo21.2k

Doltは、Gitのバージョン管理機能とMySQLデータベースの機能を組み合わせた革新的なデータベースです。通常のMySQLクライアントから接続してSQLを実行できるだけでなく、テーブルのデータやスキーマ(テーブルの構造)に対してブランチ(枝分かれ)、マージ(統合)、差分確認、コミット(変更の記録)といったGitと同じ操作が可能です。誤ってテーブルを削除してしまっても一瞬で元に戻せるため、データベース運用の安全性が大幅に向上します。DoltHubという共有プラットフォームも用意されており、データベースをGitHubのように公開・共有することもできます。データの変更履歴をセル単位(表の1マス1マス)まで追跡できるため、「いつ、誰が、なぜ変更したか」を完全に把握できます。

🔥 なぜ話題?

データの品質管理や変更追跡がますます重要視される中、従来のデータベースにGitのバージョン管理を組み合わせるという発想が開発者の支持を集めています。特に、既存のMySQLからレプリケーション(複製)で移行でき、すべての書き込みが自動的にコミットになる仕組みが、導入のハードルを下げて注目を集めています。

💡 こう使える!

チームで顧客データベースを運用しているとき、新しいカラム(列)を追加するスキーマ変更を本番に反映する前に、ブランチ上で安全にテストし、問題がなければメインのデータベースにマージする、という使い方ができます。万が一、誰かが間違ってテーブルを削除しても、`dolt_reset('--hard')`一発で元通りに復元できます。

ユースケース: データベースの変更履歴を完全に記録・追跡しながら、チームで安全にデータやスキーマを共同編集したい場面で活躍します。

  • MySQLと完全互換のSQLデータベースにGitのバージョン管理機能を統合
  • テーブルの削除やデータ変更を一瞬で元に戻せる安全性
  • ブランチ上でスキーマ変更やデータ編集をテストし、マージで本番に反映可能
  • セル単位で変更履歴を追跡できる強力な監査機能
  • 既存のMySQLデータベースからバイナリログレプリケーションで移行可能
GitHubで見る →

Dolt – Git for Data

技術情報

言語

Go

ライセンス

Apache-2.0

最終更新

2026-03-14

スター数

21,226

フォーク数

680

Issue数

517

トピック

agent-memoryagent-memory-serverai-agentsai-databasedata-version-controldata-versioningdatabasedatabase-version-controldatabase-versioningdecentralized-databasegitgit-databasegit-for-datagit-for-databasesgit-sqlimmutable-databasemariadbmysqlsqlversion-controlled-database

技術詳細

アーキテクチャ・仕組み

  • Go言語で開発されたシングルバイナリ(約103MB)
  • 内部データ構造は Noms プロジェクトをベースにしたコンテンツアドレッサブルストレージ
  • MySQLのワイヤプロトコルと互換性があり、Vitessベースのサーバー(Server version: 5.7.9-Vitess)として動作
  • cgoに依存するため、ビルドにはCコンパイラが必要

MySQL互換性

  • 外部キー、セカンダリインデックス、トリガー、CHECK制約、ストアドプロシージャをサポート
  • 最大12テーブルのJOINに対応
  • MySQL 8.4(LTS)クライアントとの接続を推奨(MySQL 9.0はcaching_sha2_password認証の設定が別途必要)
  • TCPおよびソケットインターフェースの両方をサポート

バージョン管理機能(SQL経由)

  • システムテーブル: dolt_log, dolt_diff, dolt_status, dolt_branches, dolt_history_<table>, dolt_diff_<table>
  • ストアドプロシージャ: dolt_add(), dolt_commit(), dolt_checkout(), dolt_merge(), dolt_reset(), dolt_revert(), dolt_undrop()
  • SQL AS OF構文: SELECT * FROM table AS OF 'branch_or_commit' で任意の時点・ブランチのデータを参照可能
  • テーブル関数: dolt_diff('from', 'to', 'table') でブランチ間の差分を取得
  • @@dolt_transaction_commit システム変数で、SQLトランザクションごとに自動Doltコミットを生成可能

CLIコマンド

Gitと同じコマンド体系に加えて、以下のDolt独自コマンドを搭載:

  • dolt sql / dolt sql-server : SQLクエリ実行・サーバー起動
  • dolt blame : 各行の最終変更者を表示
  • dolt filter-branch : コミット履歴をクエリで書き換え
  • dolt dump : 全テーブルをファイルにエクスポート
  • dolt gc : 未参照データのクリーンアップ

既存MySQLからの移行

  • 標準的なMySQLバイナリログレプリケーションを使って、既存のMySQLのレプリカとしてDoltを設定可能
  • すべての書き込みが自動的にDoltコミットになる

関連サービス・エコシステム

  • DoltHub: データベースを共有するプラットフォーム(パブリックデータは無料ホスティング)
  • DoltLab: セルフホスト版DoltHub
  • Hosted Dolt: マネージドDoltサーバーサービス
  • Doltgres: PostgreSQL互換バージョン(ベータ版)

Docker対応

  • dolthub/dolt : CLIツールとして実行
  • dolthub/dolt-sql-server : サーバーモードで実行

対応プラットフォーム

  • Linux(Arch Linux公式パッケージあり)
  • macOS(Homebrew、MacPorts対応)
  • Windows(MSIインストーラー、Chocolatey対応)

ライセンス

  • Apache License, Version 2.0(商用利用可能)

インストール・クイックスタート

Linux / Mac

ターミナルで以下を実行:

sudo bash -c 'curl -L https://github.com/dolthub/dolt/releases/latest/download/install.sh | bash'

Mac(Homebrew)

brew install dolt

Windows

リリースページから.msiファイルをダウンロードして実行。 または Chocolatey で:

choco install dolt

初期設定

dolt config --global --add user.email YOU@DOMAIN.COM
dolt config --global --add user.name "YOUR NAME"

サーバー起動とクイックスタート

mkdir ~/dolt && cd ~/dolt
dolt sql-server

別ターミナルから接続:

dolt -u root -p "" sql

参考になる外部の関連記事

関連リポジトリ

sqlc-dev/sqlc

sqlc-dev/sqlcGo17.0k

sqlcは、SQLクエリから型安全なコードを自動生成するツールです。データベーススキーマとSQLクエリを元に、Go、TypeScript、Pythonなどの言語で型安全なデータアクセス層のコードを生成

無料で使える企業レベルのBIツール!60以上のデータベースに対応するダッシュボード作成プラットフォーム — superset

apache/supersetTypeScript72.1k

Apache Supersetは、データの分析や可視化をブラウザ上で行える無料のビジネスインテリジェンス(BI)ツールです。プログラミングの知識がなくても、マウス操作だけで棒グラフや地図などの美しいグ

金融データを「一度つないで、どこでも使える」オープンソースの統合基盤 — OpenBB

OpenBB-finance/OpenBBPython64.8k

OpenBBは、株価や経済指標などの金融データをさまざまなデータソースから集めて、Python・Excel・AIエージェント・REST API(ソフト同士をつなぐ仕組み)など複数の場所から簡単に使える

surrealdb/surrealdb

surrealdb/surrealdbRust31.2k

SurrealDBは、スケーラブルで分散型のマルチモデルデータベースで、ドキュメント型とグラフ型の両方の機能を持ちます。リアルタイムWebアプリケーションに最適化されており、従来のSQLライクなクエリ

rustfs/rustfs

rustfs/rustfsRust21.8k

RustFSは、S3互換の高性能オブジェクトストレージシステムです。4KBのオブジェクトペイロードでMinIOより2.3倍高速な処理性能を実現し、MinIOやCephなどの他のS3互換プラットフォーム