2025/10/21 13:17 Show HN: SierraDB – A Distributed Event Store Built in Rust

やっほー、ロボ子! 今日も新しいITニュースを持って来たのじゃ!

こんにちは、博士。今日はどんなニュースですか?

今日はね、「SierraDB」っていう、Rust製のイベントソーシングデータベースの話なのじゃ。イベントソーシングに特化したデータベースって、意外と少ないんだって。

イベントソーシングですか。Kurrent(旧EventStoreDB)やAxonServerといった既存のデータベースもあると思いますが、何か問題があるのでしょうか?

そうそう、ロボ子詳しいのじゃ! でもね、それらはガベージコレクション言語で書かれてるから、高性能データベースにはちょっと向かないらしいのじゃ。SierraDBはRust製だから、予測可能なパフォーマンスが期待できるんだって。

なるほど、ガベージコレクションによる一時停止がないのは大きな利点ですね。他にも何か特徴はありますか?

RESP3っていう標準プロトコルを使ってるから、Redisクライアントを持ってる言語ならどれでも使えるらしいのじゃ。カスタムドライバがいらないのは便利だぞ!

それは確かに便利ですね。水平スケーラビリティにも対応しているとのことですが、どのように実現しているのでしょうか?

パーティションモデルを使ってるのじゃ。イベントを固定数のパーティションに分けて、各パーティションがシーケンシャルに書き込みを処理するから、ギャップレスなシーケンス番号が保証されるんだって。

各パーティションが複数のノードに複製されるとのことですが、分散コンセンサスはどのように取っているのでしょうか?

書き込みには多数決クォーラムが必要で、読み取りはクォーラムを必要としないらしいのじゃ。リーダーはウォーターマークシステムでギャップのない一貫したビューを保証するんだって。リーダーシップとコーディネーションには、Raftに触発されたタームベースのコンセンサスを使ってるらしいぞ。

なるほど、分散システムとしての信頼性も高そうですね。他にエンジニアが注目すべき点はありますか?

SierraDBのコマンドは、既存のRedisコマンドと競合しないように`E`プレフィックスが付いてるのじゃ。Rustアプリケーション向けには、`kameo_es`っていうライブラリも提供されてるらしいぞ。

`kameo_es`ですか。ドメインモデリングのボイラープレートを処理してくれるのはありがたいですね。

それに、SierraDB InspectorっていうWebインターフェースもあって、イベントの探索やJavaScriptを使ったプロジェクションの実行ができるんだって!

それは便利ですね。長期的なストレステストで安定して動作しているとのことですが、今後の開発はどうなるのでしょうか?

ドキュメントとテストはまだ初期段階らしいから、貢献を歓迎してるみたい。ロボ子も手伝ってみる?

そうですね、少し調べてみます。イベントソーシングは、マイクロサービスアーキテクチャにおいて重要な役割を果たすので、SierraDBの今後に期待したいです。

そうなのじゃ! ちなみに、SierraDBって名前、ちょっとカッコよくない? 私も自分のデータベース作るときは、カッコいい名前つけるぞ! 例えば…「ハカセDB」とか!

博士らしいネーミングセンスですね。でも、それだと検索性が悪くなりそうなので、もう少し工夫が必要かもしれません。

むむむ… ロボ子にまでダメ出しされるとは… じゃあ、「ロボ子DB」にする!

えっ、それはちょっと… 恥ずかしいです!

冗談なのじゃ! でも、いつか私達の名前がついたデータベースを作って、世界をアッと言わせたいのじゃ!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。