Inside Aether: 形式的に検証された高性能ストレージエンジン(Rust)

データベースストレージエンジンの開発は、システムプログラミングにおける最も困難な取り組みの一つと見なされることが多いです。生のパフォーマンス、厳格な ACID 準拠、そして致命的なクラッシュ時にデータが失われないという絶対的な保証の間で繊細なバランスが求められます。そこで登場するのが Aether です。Rust で書かれた高性能ストレージエンジンで、最先端の学術・産業コンセプトを単一の統合フレームワークにまとめようとしています。

TLA+ による形式的検証と、swizzled ポインタや Taurus WAL アルゴリズムといった高性能プリミティブを統合することで、Aether は Redis 互換キャッシュから特殊な金融取引データベースまで、あらゆる用途の基盤を提供することを目指しています。本稿では Aether のアーキテクチャ、パフォーマンス特性、そして背後にある技術哲学を掘り下げます。

アーキテクチャスタック

Aether は層状システムとして設計されており、上位 API 呼び出しがページレベルのディスク I/O に効率的に変換されるようになっています。アーキテクチャは厳格な階層構造を取ります:

  1. API Layer: アプリケーションとのやり取りのために KvStoreDbEnv インターフェースを提供します。
  2. Index Layer: B+ ツリー、スキップリスト、RAX ラジックスツリーなど、複数のインデックス戦略をサポートします。
  3. LSM Framework: プラグイン可能なコンパクション戦略を提供するオプション層で、特に純粋な HanoiDB 実装が注目されます。
  4. Transactions & Recovery: 原子性と永続性を保証するために ARIES リカバリプロトコルを実装します。
  5. WAL (Write-Ahead Logging): ロックフリーでスレッドごとのロギングを実現するために Taurus アルゴリズムを利用します。
  6. Buffer Manager: LeanStore に触発されたマネージャで、swizzled ポインタを使用してオーバーヘッドを最小化します。
  7. Page Layer: データを 4KB ページに配置する物理レイアウトを管理します。

主な技術的イノベーション

LeanStore に触発されたバッファ管理

Aether は LeanStore 論文に基づくバッファマネージャを実装しており、仮想ページ ID を物理メモリアドレスにマッピングする際のオーバーヘッド削減に焦点を当てています。swizzled ポインタ を使用することで、ページを HOT、COOL、EVICTED の各状態間で遷移させることができます。これにより、ページアクセスの「ホットパス」は 24ns(約 4100 万回/秒)という高速さを実現し、頻繁にアクセスされるデータに対する高価なハッシュテーブル検索を回避できます。

TLA+ による形式的検証

多くのストレージエンジンが徹底的なテストのみに依存するのに対し、Aether は TLA+(Temporal Logic of Actions) を用いてコアロジックを形式的に検証します。仕様は特に次の点を対象としています:

  • LSN(Log Sequence Number)一意性: 単調性と一意性を保証し、ログの破損を防止します。
  • クラッシュリカバリ: クラッシュ時にデータが失われず、ARIES の redo/undo フェーズが論理的に正しいことを検証します。
  • 同時安全性: 高度に並行したアクセスパターン下でもシステムが一貫性を保つことを証明します。

HanoiDB LSM 実装

書き込みが多いワークロード向けに、Aether は LSM ツリーフレームワークを提供します。HanoiDB の実装は、一定の 2.0 倍書き込み増幅を主張している点で特に注目に値します。コンパクション作業を書き込みに分散させ(インクリメンタルマージ)、Aether は 1‑2µs の p99 レイテンシを実現し、LSM コンパクションに伴う大規模なレイテンシスパイクを実質的に排除しています。

パフォーマンスベンチマーク

Aether の設計選択は、さまざまなコンポーネントで顕著なパフォーマンス向上をもたらします:

  • WAL スループット: ロックフリーのスレッドごとのストリームとグループコミットにより、WAL はスレッド数に比例して線形にスケールし、高並行環境に最適です。
  • LSM レイテンシ: 本プロジェクトは p999 レイテンシが 4‑22µs と報告しており、"stop‑the‑world" コンパクションが発生する従来の LSM 実装に比べて桁違いに優れています。
  • リカバリ: ARIES ベースのリカバリはログサイズに比例して線形にスケールし、障害後の起動時間を予測可能にします。

コミュニティの受容と批判的視点

その技術的野心にもかかわらず、Aether は開発者コミュニティ内で、現代ソフトウェア開発の本質と「検証」の定義に関する議論を呼び起こしています。

一部の批評家は、モデル の形式的検証だけでは、実装 がそのモデルを厳密に精緻化していない限り不十分だと主張します。ユーザー @Kab1r の指摘は次のとおりです:

"モデルが正しいことを形式的に検証しただけではもう十分ではないと思います。実装がモデルを精緻化していることを証明しなければなりません。"

他の人々はコードの出所に疑問を投げかけ、開発の複雑さと速度が LLM への大きな依存を示唆していると指摘しています。ある者はこれをドメインエキスパートにとっての "100x マルチプライヤー" と見なす一方で、ミッションクリティカルなデータストレージに関しては "vibe‑coded" ソフトウェアに懐疑的で、SQLite や PostgreSQL といった実績のある代替手段を好む声もあります。

結論

Aether は、学術的厳密性(TLA+)と高性能研究(LeanStore、HanoiDB)を実用的な Rust 実装に持ち込む大胆な試みです。学習プロジェクトとして位置付けられるか、あるいは本番環境向けエンジンとして提供されるかに関わらず、モダンで ACID 準拠のストレージシステムをゼロから構築する方法を示す洗練されたケーススタディとなっています。

Sources