8月21日付けでGitHubで公開されたSQLite互換のオープンソースデータベース「mvSQLite」が「Hacker News」などで話題になっています。最大の特徴はスケーラブルなNoSQLデータベース「FoundationDB」をベースに、SQLiteのストレージレイヤを分離している点で、作成者のHeyang Zhou氏は「SQLiteを分散データベースに変える(Turning SQLite into a distributed database)」ことをめざしているようです(8/23時点のバージョンは0.1.14)。
- mvSQLite - GitHub
- Turning SQLite into a distributed database - 作成者のブログポスト
- Hacker Newsの議論
mvSQLiteのおもな特徴は以下の通りです。
- SQLiteと完全互換 … カスタマイズしたVFSレイヤを使ってSQLiteを統合
- タイムトラベル機能による過去の任意の時点のスナップショット(MVCC)
- スケーラブルな読み書き
- FoundationDBのメリット(スケーラブルな分散トランザクション、同期/非同期レプリケーション、バックアップ/リストア)をすべて取り入れながら、FoundationDBがサポートしていなかった5秒以上のトランザクションやより大きなサイズのトランザクションが可能に
- ドロップインリプレースメント … 環境変数を「LD_PRELOAD=libmvsqlite_preload.so」に設定することで既存のアプリを動作させることが可能
総合すると、FoundationDBの特長であるACIDトランザクションによるデータの完全性を担保しながら、トランザクションにまつわるFoundationDBの制限を取り払い、読み込みだけでなく書き込みのスケーラビリティに対応した”分散型SQLite”へと向かっているようです。ストレージレイヤを分離し、データベースのパフォーマンスを高めていくという方向性はGoogle Cloudの「AlloyDB」など最近のクラウドデータベースでもよく見られる動きですが、FoundationDBとSQLiteというユニークな組み合わせのmvSQLiteが今後、分散データベースとして、またオープンソースプロダクトとしてどう成長していくのか、非常に興味深いところです。