分散SQLiteの12年間──rqlite登場からの歴史と設計上のトレードオフ
分散SQLiteの技術は2014年9月のrqlite公表から約12年にわたり発展し、現在はおよそ一ダースのプロジェクトが存在する。著者Philip O'Toole氏はその設計上のトレードオフと商用化の流れを振り返っている。
著者のPhilip O'Toole氏は、2014年9月にrqlite を公表して以降の分散SQLiteの系譜を振り返っている。dqlite、Litestream、LiteFS、cr-sqlite、libSQL/Turso、Cloudflare D1などのプロジェクトが、この分野でどのように展開されたかを整理している。
rqlite の公表と初期設計
著者は2014年9月に短い投稿でrqlite を公表した。構想は、SQLiteの前段にRaftのログを置き、すべての書き込みをクラスタに複製することで、1ノードの喪失がデータの喪失にならないようにするものだった。
ソースコードは公表と同じ週末にGitHubへ公開された。著者の知る限り、これはRaftとSQLiteを組み合わせた最初のオープンソースシステムだったとされる。
初期版はgoraftを使用していた。2016年初頭に著者はgoraftをHashicorpのRaft実装に置き換え、rqlite は現在もこれを使用している。

rqlite は CP システムとして説明され、書き込みはリーダーを経由し、過半数の確認を必要とする。
分散SQLiteの系譜
主要プロジェクトの複製方式は以下のとおりである。
| プロジェクト | 関連組織 | 複製方式 |
|---|---|---|
| rqlite | 著者 | Raft による合意 (CP) |
| dqlite | Canonical | Raft ライブラリ (C 実装) |
| Litestream | Ben Johnson | SQLite WAL を S3 へストリーミング、合意なし |
| LiteFS | Fly.io | ファイルシステムレベルの複製、Consul のリース |
| cr-sqlite | 記載なし | CRDT を拡張として追加 |
- Expensify は自社インフラ内でSQLiteを複製する仕組みを構築し、2016年に Bedrock として公開した。
- Canonical は LXD と後の MicroK8s に、etcd を使わずに組み込み型の複製ストアを提供するため dqlite を開発した。
- Ben Johnson 氏は2021年初頭に Litestream を公開し、2022年に Fly.io に採用された後は LiteFS を出荷した。
- 2022年には Cloudflare が SQLite ベースのサーバーレスデータベース D1 を発表した。同年、cr-sqlite が拡張として CRDT を追加している。
商用化と買収
Expensify が Bedrock を公開してから、この構想は8年間にわたりオープンソースとして存在したが、その期間に誰かが販売することはなかったとされる。
ChiselStrike、後の Turso は SQLite 本体をフォークした libSQL 上にホステッドサービスを構築し、ベンチャー資金を調達した。2026年には Supabase が Turso を買収した。
分散SQLiteの分野にはおよそ一ダースのプロジェクトがあり、そのうち2つが買収されている。また、少なくとも8チームが SQLite とレプリケーションの組み合わせを、異なる要件とプロトコルで再構築したとされる。
筆者の見立て
- SQLiteをストレージエンジンとし、外側にレプリケーションを加えるという中核のアイデアは正しかったと論じている。
- 設計空間には合意、ストリーミング、マージという3つの角があり、その順に現れたと解釈している。
- 各設計の角はそれぞれ異なる問いに対して正しく、多くの議論は利用者がどの問いを立てているかをめぐるものだと論じている。
- 資金はプラットフォームに流れたが、これはインフラ構想の通常の行き先であり、著者はそれを気にしていないと論じている。
- Ben Johnson 氏は多くのアプリケーションについて正しかったと論じている。
- SQLite への関心の高まりは、Litestream の主張に大きく負っていると解釈している。
- cr-sqlite のアプローチは AP の角にあたり、rqlite の CP の保証が障害になるローカルファーストのアプリケーションに適していると解釈している。
- dqlite と rqlite の主な違いはパッケージングにあると解釈している。
- rqlite は2014年と同じことを、かなり良くやっていると論じている。
- 著者は、この物語における rqlite の立ち位置に満足していると論じている。
- rqlite を CP システムとしたという設計判断が、最も重要だったと論じている。
この記事は元記事の事実のみに基づいて自動生成されました。
出典
- 媒体名: Philip O'Toole
- 原題: Twelve years of distributed SQLite – Philip O'Toole
- URL: https://philipotoole.com/twelve-years-of-distributed-sqlite/