StrataDB
C++26 · CMake · TSAN / ASAN · Google Benchmark
An embedded key-value storage engine, built from the allocator up.
StrataDB starts below where most database projects start: at memory. Before any key ever meets a value, the engine allocates through a NUMA-aware arena with thread-local allocation buffers, falling back to mmap-backed huge pages — so the hot path never fights a global lock for memory.
Writes land in a lock-free skip-list MemTable. Insertion is CAS-based, ordering is append-versioned MVCC, and reads stay safe through epoch-based reclamation with per-thread 4 KiB slabs. The write-ahead log stages blocks with CRC32C and XXH3-128 integrity checks, handed off through a Vyukov MPSC queue.
The project runs against a ten-phase roadmap and is honest about where it stands: build tooling, config, and the memory subsystem are complete; MemTable flush integration and WAL durability validation are in progress; SSTables with io_uring, compaction, and chaos testing are ahead. Every concurrent path is validated with ThreadSanitizer under 16-thread stress.
Key decisions
- NUMA-aware arena allocator with thread-local allocation buffers and mmap huge-page fallback
- Lock-free skip-list MemTable — CAS insertion with append-versioned MVCC ordering
- Epoch-based reclamation with per-thread 4 KiB slabs for safe concurrent reads
- WAL staging with CRC32C / XXH3-128 integrity and Vyukov MPSC queue handoff