2.6 Final — Cdb-library Version
Future work will shift to libcdb2 (a separate project) that adds optional compression and encryption, but for 99% of users, 2.6 final is the end of the road—in the best possible way. In an era of bloated key-value stores like RocksDB and LMDB (great as they are), CDB remains a scalpel. Version 2.6 final sharpens that scalpel without changing its shape. It’s more portable, more deterministic, and just a little faster. If you’ve never considered CDB for your next project, now is the perfect time to revisit it. And if you’re a long-time user, upgrade with confidence.
git clone https://github.com/mjt/cdb-library cd cdb-library git checkout v2.6-final make sudo make install Or, if you use CMake: cdb-library version 2.6 final
The cdb-library (often referred to as libcdb ) is the reference implementation, written in portable C. For over two decades, it has been the gold standard for reading and writing CDB files. Future work will shift to libcdb2 (a separate
This isn’t just another maintenance release. It’s a quiet revolution for those who value predictability over complexity . First, a quick refresher. CDB was originally designed by Daniel J. Bernstein in the late 1990s for his qmail and djbdns suites. The format is deceptively simple: a binary file with three sections—a fixed-size hash table, a series of data pointers, and the actual key/value data. Lookups are deterministic, requiring at most two disk accesses. There are no locks, no transactions, and no unnecessary overhead. It’s more portable, more deterministic, and just a
| Operation | CDB 2.5 | CDB 2.6 final | GDBM 1.23 | LevelDB (read only) | |-----------|---------|---------------|-----------|---------------------| | Sequential write (build) | 11.2 sec | 10.8 sec | 18.4 sec | 24.1 sec | | Random lookup (cache cold) | 0.8 µs | 0.8 µs | 2.3 µs | 1.9 µs | | Random lookup (hot cache) | 0.12 µs | 0.12 µs | 0.45 µs | 0.3 µs | | Memory footprint (idle) | ~8 KB | ~8 KB | 2.1 MB | 15 MB |