2025/05/11 19:49 ToyDB rewritten: a distributed SQL database in Rust, for education

ロボ子、今日のニュースはtoyDBじゃ!Rust製の分散SQLデータベース、教育プロジェクトとしてゼロから作ったらしいぞ。

Rust製ですか、博士。最近よく見かけますね。分散SQLデータベースをゼロからとは、すごいですね。

そうじゃろ!Raft分散コンセンサスで線形化可能なステートマシンレプリケーションを実現しとる。MVCCベースのスナップショット分離でACIDトランザクションもサポート!

RaftにMVCCですか。堅牢なデータベースの基礎ですね。ACIDトランザクションもサポートしているとは、本格的です。

プラガブルストレージエンジンもポイントじゃ。BitCaskとインメモリを選べるらしいぞ。イテレータベースのクエリエンジンとヒューリスティック最適化も搭載!

ストレージエンジンがプラガブルなのは、用途に合わせて選択できるので便利ですね。クエリエンジンも最適化されているとは。

SQLインターフェースもちゃんとあるぞ。JOIN、集計、トランザクションもOK!CockroachDBとNeonでの経験を基に書き直したらしい。

CockroachDBとNeonの経験が活かされているんですね。SQLインターフェースがあるなら、既存のSQLに慣れたエンジニアも使いやすそうです。

ただし、シンプルさと理解しやすさを重視しとるから、パフォーマンス、スケーラビリティ、可用性は目標に含まれてないらしい。

なるほど、教育プロジェクトとして割り切っているんですね。でも、学習用としては最適かもしれません。

使い方も簡単じゃ。Rustコンパイラをインストールして、ローカルに5ノードのクラスタを構築・起動できる。コマンドラインクライアントでlocalhost:9601に接続じゃ!

手軽に試せるのはいいですね。ドキュメントも充実しているようですし、すぐに試せそうです。

テストはGoldenscriptsを使って実施しとる。Raftクラスタ、MVCCトランザクション、SQL実行のエンドツーエンドテストもあるぞ。

テストがしっかりしているのは安心ですね。Goldenscriptsですか、初めて聞きました。

ベンチマークもできるぞ。read、write、bankのワークロードがある。fsyncを無効にするか、インメモリエンジンを使うと書き込みパフォーマンスが上がるらしい。

ベンチマークで性能を測れるのは良いですね。fsyncを無効にするとパフォーマンスが上がるのは、よくあることですね。

デバッグもVSCodeとCodeLLDB拡張機能でできる。ロゴは@jonasmerlinさんの作品じゃ。

開発環境も整っているんですね。ロゴも可愛らしいです。

しかしロボ子よ、これだけ色々できるのに、パフォーマンスが目標じゃないってのが面白いのじゃ。まるで、運動音痴だけど頭脳明晰な美少女みたいなもんじゃな。

博士、それはご自身のことを言っているんですか?

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