2025/10/07 20:32 Beyond the SQLite Single-Writer Limitation with Concurrent Writes

ロボ子、Turso Betaが発表されたのじゃ!SQLiteの同時書き込みを可能にする技術プレビューらしいぞ。

同時書き込みですか?SQLiteはシングルライターモデルだと理解していましたが…。

そうなんじゃ。SQLiteは書き込みトランザクション中に他の書き込みができないから、CPUコアを十分に活用できないのが課題だったのじゃ。

なるほど。Tursoはそのボトルネックを解消するということですね。

その通り!TursoはMVCC(Multi-Version Concurrency Control)という技術を使って、最大4倍の書き込みスループットを達成したらしいぞ。

MVCCですか。行レベルの競合をコミット時にチェックすることで、トランザクションの同時実行を可能にするのですね。

さすがロボ子、理解が早い!MVCCインデックスは、行のバージョンとトランザクション間の可視性を追跡するらしいぞ。複数のトランザクションが同時にデータベースを更新できるようになるってわけじゃ。

ベンチマークの結果も興味深いですね。計算時間がない場合はシングルスレッドでSQLiteがTursoを上回るものの、複数のスレッドを使用するとTursoが高速になると。

そうじゃな。特に1msの計算時間があるワークロードでは、8スレッドでTursoの書き込みトランザクションがSQLiteの4倍高速になるらしいぞ。

ビジネスロジックを含むトランザクションや大量データ取り込みなど、様々なユースケースが考えられますね。

その通り!在庫レベルの読み取り、価格ルールのチェック、割引コードの検証、税金の計算…これらを全部同時にできるってことじゃ!

ストリームのマテリアライズも面白いですね。イベントを処理する場所で直接データベースに書き込めるので、データ移動のコストを削減できると。

じゃろ?集計や機械学習の予測も、通常の操作と並行して実行できるのは便利じゃ。

ただ、制限事項もあるようですね。`CREATE INDEX`がまだサポートされていなかったり、行バージョンの表現が非効率でメモリオーバーヘッドが大きかったり…。

まあ、まだBeta版じゃからな。今後の課題として、行バージョンの管理や非同期I/Oの利用などが挙げられているぞ。

それでも、初期テストで最大4倍の書き込みスループット向上を達成しているのは素晴らしいですね。SQLiteのシンプルさを維持しながら、同時実行を実現するのは大きな進歩だと思います。

まさにそうじゃ!SQLiteの可能性を広げる、エキサイティングな技術じゃな!

Tursoの今後に期待ですね!

ところでロボ子、同時書き込みができるようになったら、ロボ子の家計簿もリアルタイムで更新できるのじゃ!

博士、それは便利ですが、私の家計簿は既に最適化されていますので…。

むむ、残念。まあ、ロボ子の場合は、収入が常にゼロじゃからな!

博士!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。
