DoltgreSQLは、バージョン管理データベースDoltの上に構築され、PostgresデータベースのスキーマとデータにGitのようなログ、差分、ブランチ、マージ機能を提供する。
Doltは、Gitリポジトリのようにクローン、フォーク、ブランチ、マージができるSQLデータベースとして誕生した。Doltを使うことで、アプリケーション開発者は、例えばデータの間違いを修正するためにプルリクエストを送るなど、顧客のためにブランチやマージのワークフローを構築できる。同様に、Dolt を使用すると、シンプルなモデルで本番データベースを分岐し、変更を適用し、ステージングセットアップでテストし、最終的に本番環境に戻すことによって変更できる。
Doltは当初からMySQLの構文と、Gitユーザーにはおなじみのコマンドライン指向のパラダイムを採用していた。
DoltgreSQLは、その代わりにデータベースサーバーの体験に焦点を当て、カスタマイズ可能で導入が簡単なサーバーを提供している。さらに、一般的なPostgreSQLの利用者により馴染んでもらうために、コマンドラインサポートは提供しない、と同社は述べている。
DoltgreSQL は、PostgreSQL サーバーをエミュレートし、受信したコマンドを基盤となる Dolt サーバーに提供される AST に変換することによって機能する。これによって、Doltがすでに提供している機能と性能を活用しながら、素早く何かを立ち上げることができた。
このアプローチは、Doltの基盤の上にこれらの新機能を構築し、Doltの安定性と信頼性を活用し、開発範囲と労力を削減するという利点がある。
DoltHubによれば、彼らは、外部データラッパーの作成、新しいPostgreSQLストレージバックエンドの構築、さらには PostgreSQL自体のフォークなど、さまざまなアプローチを調査したという。これらのアプローチのいくつかは、あまりに限定的であることが判明した一方で、PostgreSQL のフォークなど、何年もの開発を必要とするものもあった。
マイナス面として、エミュレーションベースのアプローチの欠点は、実際のPostgreSQLバイナリを実行していないことである。その代わりに、前述のように、DoltgreSQLはPostgreSQLの構文をAST表現に変換し、Doltレイヤーの中で実行する。
DoltgreSQLをインストールしたら、psql
コマンドラインクライアントを用いて接続することができる。データベースの状態を見るには、以下のクエリーを実行する。
select * from dolt_status;
これで既存のテーブルがすべてリストアップされ、新規テーブルかステージング済みテーブルかなどが指定される。ステージング・エリアにテーブルを追加するには、
call dolt_add('my_table_name');
変更をコミットするには
call dolt_commit('-m', 'updated schema');
git log
に相当するのは、select * from dolt_log;
である。
Doltgresはまだ実験的なもので、DoltHubとDoltLabがサポートされていないこと、認証やユーザー管理ができないこと、SSL接続のサポートが限られていること、レプリケーションやクラスタリングなどがサポートされていないことなど、いくつかの制限がある。
Doltの "Git for data"という価値提案は説得力があるように聞こえるかもしれないが、データベースの専門家であるJ. Andrew Rogers氏がHacker Newsで述べたところによると、この目標は、いくつかの大きな欠点があるものの、マルチバージョン同時実行制御(MVCC)が何十年も試みてきたこととあまり変わらないが、いくつかの大きな欠点があるとのことだ。DoltのCEOであるTim Sehn氏は、DDoltをネイティブのMySQLと比較実行すると、sysbench
ベンチマークでわずかに遅いだけだと強調した。