Jepsen: TigerBeetle 0.16.11
a year ago
- #database
- #financial-technology
- #distributed-systems
- TigerBeetle is an OLTP database optimized for double-entry accounting, emphasizing safety and speed.
- It uses the Viewstamped Replication (VR) consensus protocol for Strong Serializable consistency.
- TigerBeetle's data model is specialized for financial transactions, storing only accounts and transfers.
- The database is designed for high-contention workloads like central bank switches or brokerages.
- TigerBeetle employs batching, IO parallelization, and hardware-friendly optimizations for performance.
- It offers robust fault tolerance models for memory, process, clock, storage, and network faults.
- TigerBeetle uses deterministic simulation testing (VOPR) to verify safety under various faults.
- The database supports seamless upgrades by including multiple versions in each binary.
- TigerBeetle defines an explicit model of time, using logical and physical timestamps with strict monotonicity.
- Its data model includes immutable accounts and transfers, with specific fields for tracking balances.
- Operations in TigerBeetle are atomic, with no interactive or mixed read-write transactions.
- Jepsen testing revealed issues like uninitialized memory access, missing query results, and panic on disk faults.
- Performance issues include elevated latencies during single-node faults due to the ring replication design.
- TigerBeetle lacks a safe recovery path for single-node disk failures, though a recovery command is planned.
- The database's client design retries requests indefinitely, complicating error handling.
- TigerBeetle's defensive programming includes assertions that crash the process to preserve safety.
- Future work includes improving timeout semantics, testing upgrades, and membership changes.