
2026/01/29 7:05
**Bf‑Tree:メモリサイズ超過範囲インデックスのための、読み書き最適化された現代型並行処理構造**
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
Bf‑Tree は Microsoft Research によって Rust で書かれた新しい並列範囲インデックスです。オープンソースの Cargo クレートとして利用可能(
bf-tree = "0.1.0")で、メモリ容量を超えるワークロードにも対応します。このプロジェクトには研究論文と設計ドキュメントが含まれ、Microsoft の Open Source Code of Conduct に従い、標準的な CONTRIBUTING.md と SECURITY.md が用意されています。
主な特徴
• 例として
"key" → "value" を挿入し、バッファに読み込み、LeafReadResult::Found(5) をアサートする使用方法。• クロスプラットフォーム開発(Linux, Windows, macOS)で、Linux が最も厳密にテストされたプラットフォームです;Rust ツールチェーンが必要です。
• コード品質は CI 実行前のフォーマッティングとリントを強制する pre‑commit フックによって保証されます。
•
shuttle(cargo test --features "shuttle" …)を用いた決定的な並列テストと操作シーケンスのファズテスト。• ベンチマークスクリプトが利用可能:インメモリベンチマーク、NUMA およびハングページを含む高度な指標。
• 商標・ブランドガイドラインが適用されます;問い合わせは bftree@microsoft.com までお願いします。
本文
Bf‑Tree(ビーフツリー)
Bf‑Tree は、RAM を超えるメモリ上で動作する、読み書き最適化された並行範囲インデックスです。
Rust で実装され、Microsoft Research (MSR) が保守しています。
設計の詳細
ユーザーガイド
Rust
Bf‑Tree をプロジェクトに追加するには:
[dependencies] bf-tree = "0.1.0"
使用例:
use bf_tree::{BfTree, LeafReadResult}; let mut config = bf_tree::Config::default(); config.cb_min_record_size(4); let tree = BfTree::with_config(config, None).unwrap(); tree.insert(b"key", b"value"); let mut buffer = [0u8; 1024]; let read_size = tree.read(b"key", &mut buffer); assert_eq!(read_size, LeafReadResult::Found(5)); assert_eq!(&buffer[..5], b"value");
機能追加よりもプルリクエストを優先します。設計に関するご質問があれば、遠慮なくお問い合わせください。
開発者ガイド
ビルド
前提条件
- 対応 OS:Linux, Windows, macOS(実際には Linux のみ徹底的にテスト済み)
- Rust ツールチェーンがインストールされていること
フォーマットと lint を強制する pre‑commit フックを設定します:
# Ubuntu 環境の場合 sudo apt update && sudo apt install pre-commit pre-commit install
ビルド
cargo build --release
テスト
| テスト種別 | コマンド | 備考 |
|---|---|---|
| ユニットテスト | | 標準のユニットテストです。 |
| Shuttle テスト(決定論的並行性) | | 実行時間は約 5 分です。 |
| フォッジテスト | ディレクトリに詳細があります | ランダム操作列を生成し、クラッシュや不整合を検出します。 |
ベンチマーク
基本ベンチマークを実行するには:
cd benchmark env SHUMAI_FILTER="inmemory" MIMALLOC_LARGE_OS_PAGES=1 cargo run --bin bftree --release
メトリクス、NUMA バインディング、大ページを使用した高度なベンチマークは次のように実行します:
env MIMALLOC_SHOW_STATS=1 \ MIMALLOC_LARGE_OS_PAGES=1 \ MIMALLOC_RESERVE_HUGE_OS_PAGES_AT=0 \ numactl --membind=0 --cpunodebind=0 \ cargo bench --features "metrics-rt" micro
コード・オブ・コンダクト
本プロジェクトは Microsoft の Open Source Code of Conduct に準拠しています。
詳細は FAQ をご覧いただくか、
opencode@microsoft.com までお問い合わせください。
貢献
貢献方法については
CONTRIBUTING.md を参照してください。
セキュリティ
セキュリティ報告に関する詳細は
SECURITY.md に記載されています。
商標
本プロジェクトには Microsoft の商標やロゴが含まれる場合があります。使用にあたっては、Microsoft Trademark & Brand Guidelines を遵守してください。他社の商標についてはそれぞれのポリシーに従う必要があります。
お問い合わせ先
- メール:
bftree@microsoft.com