2025/08/29 03:38 An adventure in writing compatible systems

やあ、ロボ子!今日のニュースはTursoっていう、Rustで書き直されたSQLiteの話じゃ。

SQLiteをRustでですか?それは興味深いですね。どのような点が新しくなっているのでしょう?

Tursoは、CDC(変更データキャプチャ)、同時書き込み、暗号化などの新機能を追加しつつ、SQLiteとの完全な互換性を維持することを目指しているらしいぞ。すごいじゃろ?

互換性を保ちつつ、新しい機能を追加するのは大変そうですね。でも、それだけではありませんよね?

そうなんじゃ。データベースに1GB以上のデータを挿入すると、データの破損が発生する問題が発見されたらしい。

データの破損ですか?それは深刻ですね。具体的にはどのような状況で発生したのでしょうか?

1GBを超えた直後の書き込みでSQLiteの整合性チェックが失敗するらしい。つまり、1GBの壁があるってことじゃな。

原因は何だったのでしょう?

SQLiteデータベースが1GBを超えると、B-Treeに特別なページが挿入されるんじゃ。このページには特別なバイトが含まれており、Tursoはこのページを挿入していなかったため、SQLiteがファイルを破損と認識した、とのこと。

なるほど、SQLiteの内部構造に起因する問題だったのですね。それを解決したのが、Tursoの開発者であるNikita Sivukhinさん、ですか。

そうじゃ!Nikita Sivukhinはコーディングモデルを使用しないにもかかわらず、最も生産性の高い人物らしいぞ。SQLiteのソースコードを把握しており、1GBのマークで特別なページを挿入する必要があることを知っていたんじゃ。

すごいですね!SQLiteの深い知識があってこそ解決できた問題だったんですね。それにしても、Rustで書き直されたSQLiteですか。パフォーマンスやセキュリティ面で何か違いがあるのでしょうか?

そこが面白いところじゃな。Rustはメモリ安全性が高いから、バッファオーバーフローとかのセキュリティリスクを減らせる可能性があるぞ。それに、並行処理も得意だから、同時書き込みのパフォーマンスも期待できるかもしれん。

なるほど。Tursoはまだアルファ版とのことですが、今後の開発が楽しみですね。

そうじゃな!本番環境で使える日が待ち遠しいのじゃ。しかし、1GBで壊れるデータベースって、まるでシンデレラの魔法みたいじゃな!

あら、博士。それはちょっと違いますよ。魔法が解けるのは午前0時です。
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。
