分散SQLite12年史:rqliteの軌跡

原題: Twelve years of distributed SQLite

なぜ重要か

分散SQLiteがニッチから複数のベンチャー投資・買収案件を生む本格カテゴリへ成長した過程を、一次情報として文書化した点で技術史的に価値がある。

rqliteの作者Philip O'Tooleが、2014年9月に自身が公開した分散SQLiteプロジェクトの12年間の歴史を振り返るブログ記事を2026年10月23日に公開した。SQLiteにRaftコンセンサスプロトコルを組み合わせた最初のオープンソース実装として始まったrqliteは、現在「分散SQLite」カテゴリが十数プロジェクトを擁し、うち数件がベンチャー投資を受け、2件が買収されるまでに至った経緯を詳述している。

2014年9月、Philip O'Tooleは勤務先jut.ioでのクラスター型システムの課題をきっかけにrqliteを開発した。小規模なリレーショナルストレージをどのノードに置くかという問題を、SQLiteにRaftログを組み合わせることで解決しようとしたものだ。同週末にGitHubで公開され、これがRaftとSQLiteを組み合わせた初のオープンソース実装だったとO'Toole氏は主張する。

当初はgoraft(InfluxDB・etcdが使用していたライブラリ)を採用したが、2016年初頭にHashicorpのRaft実装へ切り替え、現在もそれを継続している。設計の根幹となったのは「CPシステム」という選択で、書き込みはリーダーを経由し、過半数の承認が必要で、分断されたマイノリティノードは書き込みを拒否する。この方針は以来変わっていない。

O'Toole氏は先行事例にも正直だ。ExpensifyはPaxosスタイルのプロトコルでSQLiteを自社インフラ内で長年レプリケーションしており、2016年にBedrockとして公開した。またErlangベースのActorDB(各アクターがRaftでレプリケートされる独自SQLite DBを持つ)もrqliteとほぼ同時期に登場している。ただいずれも発生元の外では広く普及しなかった。

2017年にはCanonicalがdqliteを開発。LXDやMicroK8sにetcdを使わずに組み込み型レプリケーションストアを持たせるためだ。Mark Shuttleworth氏がO'Toole氏に直接電話し、rqliteの活用を検討したが折り合わなかった。dqliteはライブラリとして組み込むもので、サーバーとして独立稼働するrqliteとは設計思想が異なる。

2021年にはInfluxDBで共に働いたBen JohnsonがLitstreamを公開。コンセンサスを使わずSQLiteのWALを監視してS3にストリーミングするという、まったく異なるアプローチで注目を集めた。O'Toole氏は2021年以降から語り始める書き手が多い中、2014年からの全経緯を記録に残す必要があると判断し、本稿を執筆したと述べている。

出典

philipotoole.com — 元記事を読む →