概要
- TigerBeetle は、他のデータベースと一線を画す独自設計
- 金融トランザクション に特化し、デビット/クレジットを第一級プリミティブとして採用
- 分散構成とゼロ依存性、静的メモリ割当てなど、徹底した堅牢性追求
- Zig言語 や独自の検証・テスト手法を活用し、短期間で高信頼性を実現
- ストレージ障害や時計誤差 にも対応、次世代のトランザクション処理を牽引
TigerBeetle: 世界で最もユニークなデータベース
- TigerBeetle は、従来とは真逆のアプローチで設計・開発
- コードは「 ゆっくり・慎重に」書く方針
- テスト を最重要視し、「決定論的シミュレーションテスト(DST)」を全面採用
- ゼロ依存性 の設計(Zigツールチェーンのみ)
- 静的メモリ割当て、 本番環境でもアサーション有効化、Viewstamped Replication採用、Zig言語選択など、徹底した独自路線
デビット&クレジット思考の重要性
- TigerBeetleは「 金融トランザクション専用データベース」を標榜
- プリミティブは デビット/クレジット、会計の基本単位
- Jim Gray(Turing賞受賞者)の論文に基づく設計思想
- トランザクション処理の本質は「 現実世界のビジネストランザクション」
- ACID保証の原点もここにある
- 従来のSQLデータベースではデビット/クレジット処理が非効率
- 1トランザクションごとに10〜20回のSQLクエリ、ロック、ネットワーク往復が必要
- ホットロウ問題やリアルタイム性の要求に対応困難
- TigerBeetleは 1MiBクエリで8190件のデビット/クレジット を1往復で処理
- 「1000倍パフォーマンス」アイデア
- Jepsenテスト(Kyle Kingsbury)にも耐えた高信頼性
真のモダンデータベース設計
分散構成を前提とした設計
- TigerBeetleは 分散をデフォルト としたアーキテクチャ
- どのノードも単純にバイナリをインストールするだけでクラスタ参加可能
- 非同期レプリケーションやZookeeper不要
- MIT発の Viewstamped Replication プロトコルを採用
- 高可用性・厳密な直列化保証
- ゼロ依存性を実現
クロック障害耐性
- 物理クロックの精度・同期問題も考慮
- Linuxの複数クロック(CLOCK_MONOTONIC_RAW等)を適切に選択
- クラスタ内の大多数のクロックを組み合わせて「 クラスタタイム」を生成
- Marzulloアルゴリズムによる最適な時刻区間推定
- クロック障害やNTP停止を検出・警告可能
ストレージ障害への対応
- Protocol Aware Recovery で全レプリカのデータ破損時以外は可用性維持
- 全データは イミュータブル・チェックサム・ハッシュチェーン で改ざん検知
- カスタムページキャッシュ、O_DIRECTによるダイレクトI/O、ファイルシステム非依存
- 独自実装の LSM Forest (20本以上のLSMツリー)
- Jepsenによるストレージ障害検証・合格実績
Zig言語の採用理由
- TigerBeetleは 100% Zig言語 で実装
- CやC++ベースの従来DBMS(Postgres, MySQL, MSSQL等)と一線を画す
- 静的メモリ割当て、ゼロ依存性、パフォーマンスチューニングの自由度
- 新しい言語機能と安全性を活かした設計
TigerBeetleを支える技術と思想
- 決定論的シミュレーションテスト(DST) による完全自動検証
- VOPRクラスターでの徹底的な障害シミュレーション
- TigerStyle :本番でもアサーションを有効化し、バグを即時検知
- 静的メモリ割当て・ゼロ依存性で 予測可能性と堅牢性 を最大化
まとめ
- TigerBeetleは 徹底した独自路線 と 最新研究の実装 で、次世代の金融トランザクション基盤を構築
- 分散・高可用性・ストレージ障害耐性・ゼロ依存性・新言語活用など、 現代の要請に応える設計
- 3.5年という短期間で Jepsen合格・本番運用可能 な堅牢性を実現