Wildcat
lastmod 2025-06-26created 2025-06-261 edits
High-performance embedded key-value database (storage engine)
About
- A high-performance key-value DB written in Go, with a C interface, incorporating modern DB design principles such as LSM trees, MVCC, and lock-free structures
- Provides high write/read performance through WAL (Write Ahead Logging)-based immediate consistency and durability guarantees, background flush/compaction, lock-free parallel processing, and more
- Single-node embedded architecture aimed at lightweight, fast data storage without networking or distribution
Key features of Wildcat
- LSM tree-based, optimized for write-heavy workloads
- MVCC (multi-version concurrency control) and lock-free data structures for lock-free processing on the main paths
- WAL logging: records full transaction state and supports recovery
- Version-aware skip list accelerates in-memory MVCC
- Thread-safe/lock-free writes and atomic cache/memory management
- SSTables are immutable BTree structures, with key-value separation and Bloom filter optimization
- ACID transaction guarantees and selectable durability levels (Full/Partial/None)
- Crash recovery restores both committed and incomplete transactions
- Batch/iterator: supports range, prefix, and bidirectional iteration
- Modern design including Bloom filters, key-value separation (.klog, .vlog), and tombstone/version-aware compaction
- Stats/logging/monitoring: various diagnostic and statistics interfaces such as Stats() and LogChannel
- C library build and API: builds as a Go shared library, usable directly from many languages
- Supports Go 1.24+ and Linux/macOS/Windows (64-bit)
Why does it matter? (How it differs from other embedded KV stores)
- An LSM+MVCC architecture similar to RocksDB, Badger, etc., but its Go-native lock-free, multithreaded design gives optimized usability in Go environments
- Specialized as an embedded DB: achieves immediate consistency/durability/high performance without network/replication overhead
- High reliability and transparency, with transaction recovery, preservation of incomplete state, and more
- Workload-specific tuning through various compaction/buffer/cache parameters