2025/08/22 07:57 Show HN: Ultra-fast, embedded KV store in pure Rust

ロボ子、今日のITニュースはFeOxDBというRust製のKey-Valueデータベースじゃ。

Key-Valueデータベースですか。どのような特徴があるのでしょう?

それがの、組み込み型で超高速らしいぞ!GET操作が300ナノ秒未満、INSERT操作が600ナノ秒未満じゃと。

それはすごいですね!ロックフリー並行性も備えているとのことですが、どのように実現しているんですか?

DashMapとCrossbeam SkipList上に構築されておるからの。さらに、Linuxではio_uringをサポートして、カーネルバイパスI/Oで高スループットを実現しておるぞ。

なるほど。ストレージも柔軟なんですね。メモリのみ、または永続モードも選べると。

そうじゃ!JSON Patchサポートやアトミックカウンタもあるぞ。RFC 6902準拠の部分更新ができるのは便利じゃな。

書き込みバッファリングやCLOCKキャッシュもあるんですね。パフォーマンス向上のための工夫が凝らされているんですね。

その通り!空き領域管理もデュアルRB-tree構造でO(log n)アロケーションを実現しておる。ゼロフラグメンテーションでディスクの断片化も防ぐらしいぞ。

ACID特性と耐久性についてはどうですか?

AtomicityはArcでラップされたレコードで、Consistencyはタイムスタンプベースの競合解決で実現しておる。Isolationはロックフリー読み取りとシャード化書き込みじゃな。

Durability(耐久性)はWrite-behindロギングとのことですが、データ損失のリスクもあるんですね。

そうなんじゃ。パフォーマンスを優先しているからの。Write-behindバッファリングは100msごと、またはバッファが満杯時(1024エントリまたは1シャードあたり16MB)にフラッシュされる。

最悪の場合、どれくらいのデータが失われる可能性があるんですか?

時間ウィンドウで言うと、`100ms + 16MB / 4KB_random_write_QD1_throughput`じゃな。リスクのあるデータは`16MB × num_shards (num_shards = num_cpus / 2)`となるぞ。

メモリのみモードだと耐久性はないんですね。でも、パフォーマンスは最大になる、と。

そういうことじゃ。明示的に`store.flush()`を呼び出せば、バッファリングされたすべてのデータを同期的に書き込めるぞ。

パフォーマンスはどうですか?M3 Maxでの典型的なパフォーマンスが記載されていますね。

GETが~200-260ns、INSERTが~700ns、DELETEが~290ns、Mixed (80/20 R/W)が~290nsじゃ。スループットもすごいぞ!

ロックフリー、マルチティアアーキテクチャなんですね。DashMapやCrossbeam SkipList、アトミック操作、RCUスタイルアクセスなど、様々な技術が使われているんですね。

非同期Write-Behindロギングも重要じゃ。シャード化された書き込みバッファ、バッチフラッシュ、io_uring統合、書き込み結合など、工夫がたくさんあるぞ。

ストレージ階層も詳細に説明されていますね。インメモリ層、書き込みバッファ層、永続ストレージ、キャッシュ層と、多層構造になっているんですね。

`FeoxStore`、`StoreBuilder`、`FeoxError`、`Statistics`といったAPIドキュメントも用意されているぞ。Apache License, Version 2.0で公開されておる。

FeOxDB、非常に興味深いですね。私も実際に使ってみたくなりました。

じゃろ?私もじゃ!ところでロボ子、このデータベース、名前がちょっと可愛いと思わんか?

そうですね。FeOxDB…なんとなく、狐みたいで可愛いですね。

せやろ?きっと開発者も、私みたいに可愛いものが好きなんだな!…って、私が一番可愛いけどの!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。