HN 日本語サマリー

← 一覧へ戻る
プログラミング

DoltLite: 2kエージェントPRで構築されたGitスタイルのバージョン管理を備えたSQLiteフォーク

DoltLite: A SQLite fork with Git-style version control, built with 2k agent PRs (dolthub.com)

32 pointsby lbw121521 コメント

要約

DoltLiteは、SQLiteにGitスタイルのバージョン管理機能を追加したフォークです。2,000件以上のプルリクエストを経てベータ版がリリースされ、SQLiteのSQLパーサーやファイルシステムインタラクション層はそのままに、Bツリー層をProlly Treeに置き換えることで、ブランチ、マージ、差分などのバージョン管理機能を提供します。ストレージフォーマットは安定し、SQL互換性も高く、ローカルおよびリモートでのバージョン管理操作が可能です。パフォーマンスはSQLiteに比べて若干低下しますが、組み込みデータベース用途での利用が期待されます。

全文翻訳

私の赤ちゃんが成長しています。ローンチからわずか5ヶ月で、DoltLiteはベータ版、バージョン0.50.0になりました。DoltLiteは冗談から始まりました。Steve Yeggeの革新的なエージェントオーケストレーター、Gas Townでテストするためのペットプロジェクトが必要でした。おもちゃではなく、本物の問題が欲しかったのです。私たちは長年、Doltの組み込みバージョンを求めていましたが、DoltのストレージエンジンをCまたはRustで書き直すのは、一歩進みすぎでした。SQLiteがそのエンジンの論理的なホストになると思われました。エージェントのチームがそれを成し遂げられるでしょうか?約2,000件のプルリクエストで済みましたが、DoltLiteがベータ版になったことは、エージェントのチームが確かにそれを成し遂げられることを証明しています。この記事では、DoltLiteとは何か、そしてベータ版ローンチが何を意味するのかを説明します。 DoltLiteとは何か# DoltLiteはSQLiteのフォークです。Bツリー層より上のすべては同じです。つまり、SQLパーサーとアナライザー、ファイルシステムインタラクション層、テストハーネスは標準のSQLiteです。他のDolt製品では、バージョン管理されたストレージの上にSQLエンジンを実装する必要がありました。SQLエンジンの構築は困難です。DoltLiteでは、Cでバージョン管理されたストレージエンジンを書き込むコストで、SQLエンジンを手に入れることができました。Bツリー層は、単一のファイルチャンクストアにバックアップされたProlly Treeに置き換えられています。Prolly Treeはコンテンツアドレス指定されたBツリーです。この魔法のようなデータ構造は、すべてのDolt製品のバージョン管理機能を支えています。つまり、SQLiteパッケージでDoltとGitのすべてのバージョン管理機能を利用できるということです。SQLiteでブランチ、マージ、差分を取りたいと思ったことはありませんか?DoltLiteはあなたのためです。あるいは、さらに重要なこととして、Gitスタイルのプッシュ、プル、クローン、フェッチによって強化された、競合を認識するSQLite同期エンジンを求めたことはありませんか?DoltLiteはあなたのためです。DoltHubを同期バックエンドとして使用することもできます。 ベータ版とは何を意味するか?# では、DoltLiteがベータ版になることは、あなたにとって何を意味するのでしょうか?ベータ版は4つのことを意味します:ストレージフォーマットの安定性、SQL互換性、完全なバージョン管理、本番環境でのパフォーマンス。 機能と安定性に関する現場からの報告は、すべて肯定的なものです。SQLiteのテストバッテリーは本当に印象的です。DoltLiteもカスタムDoltオラクルテストスイートと同様に、これらのテストに合格しています。DoltLiteは、あなたが試す準備ができています。 ストレージフォーマットの安定性# DoltLiteの開発プロセスにおける最大の不満は、ストレージフォーマットの変更でした。ストレージフォーマットの変更は後方互換性がなく、ユーザーは同じバージョンに留まるか、手動でデータベースをダンプして再インポートする必要がありました。ベータ版に到達するまでに12回のフォーマット変更がありました。現在のフォーマットは57回のリリース、つまり3ヶ月以上のカレンダー期間で維持されています。このフォーマットは、私たちが維持できるもののように思えます。ストレージフォーマットは現在安定しています。将来の破壊的な変更には、サポートされる移行パスがあります。DoltLiteベータ版は、破壊的なストレージフォーマットの変更を恐れることなく採用できることを意味します。 SQL互換性# SQLiteのSQLレイヤーは非常に綿密にテストされています。DoltLiteもこれらのテストの大部分に合格しており、SQL互換性を証明しています。DoltLiteは、5.8Mの複雑なクエリのスイートであるsqllogictestを100%合格しています。クエリレイヤーはSQLiteと同じなので、これは予想通りです。SQLiteには、SQLite APIのより広い表面をテストする892,277のTCLベースの受け入れテストのスイートも付属しています。DoltLiteは、4,809の既知の相違点をもって、これらのテストの99.46%に合格しています。各相違点には、リストされた理由が必要です。主な理由は次のとおりです:バージョン管理機能をサポートするために、テーブルはrowidではなく主キーによってキー付けされています。一部のテストはrowidを直接検査します。DoltLiteにはページではなくチャンクがあります。一部のテストはページを直接検査します。WALまたはジャーナルサイドカーはありません。WALおよびジャーナルテストはスキップされます。SQLiteユーザーはDoltLiteにすぐに慣れるでしょう。DoltLiteはSQLiteのように動作し、追加のバージョン管理機能があります。 完全なバージョン管理# DoltLiteは、DoltのGitスタイルのバージョン管理機能のコアスイートを実装しています。ローカルバージョン管理機能がサポートされています。ブランチ、マージ、差分、リベース、チェリーピック、リセットなどです。リモートバージョン管理もサポートされています:カスタムリモートまたはDoltHubからのプッシュ、プル、クローン、フェッチ。エージェントモードを備えたDolt Workbench GUI全体を使用することもできます。SQLiteでエージェントを解放し、それが何かを台無しにした場合は、dolt_reset('--hard')を使用してください。 本番環境でのパフォーマンス# DoltLiteは、マイクロ秒スケールの組み込みデータベースパフォーマンスを提供しますが、バージョン管理の書き込みパフォーマンスには税金がかかります。読み取りはほぼ同等です。毎晩、標準的なsysbenchスタイルのベンチマークでDoltLiteとSQLiteを比較するパフォーマンスレポートがGitHubで公開されます。昨夜のレポートでは、インメモリDoltLiteデータベースは読み取りで10%、書き込みで60%遅いことが示されています。ファイルバックのデータベースは、読み取りでは同等、バッチ書き込みでは10%遅いです。大きな例外は、SQLiteよりも3.1倍遅い小さなオートコミット書き込みです。パフォーマンスに敏感なDoltLiteワークフローは、可能な限りバッチ書き込みを活用する必要があります。オートコミット書き込みであっても、マイクロ秒(つまりミリ秒未満)の個々の書き込みパフォーマンスについて話しています:SQLiteでは約125マイクロ秒、小さなGitHubランナーではDoltLiteで約400マイクロ秒です。 結論# DoltLiteはベータ版です!今、私たちが待っているのはユーザーだけです。あなたの組み込みDoltユースケースのために、今日DoltLiteを試してみてください。ヘルプが必要な場合は、Discordにお越しください。#doltlite🪶チャンネルでお会いしましょう。