← All projects
2026Active development

StrataDB

C++26 · CMake · TSAN / ASAN · Google Benchmark

An embedded key-value storage engine, built from the allocator up.

Ring BufferEpoch Cursor: 1
C++26TSAN-validated, 16-thread stressNUMA-aware

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