nessDB is an embedded key-value DBMS written in ANSI C with BSD license. It does not require any external dependencies and works in most POSIX systems.
As for storage engine, nessDB used LSM-tree (Log-Structured Merge Tree) in v1.8, B-epsilon-tree in v2.0, and will use fractal-tree in v3.0. nessDB also used fractional cascading to speed up query.
N-ary Storage Model (Row/Record)
nessDB v2.0 used a Small-Splittable Tree (SST), a variant of B-Epsilon-tree, for storage engine. SST has multiple levels with exponential expanding size. For level0, the data is un-sorted and the other levels are sorted. This data structure has good performance for random write.
Two-Phase Locking (Deadlock Detection)
nessDB v3.0 will use two-phase locking with deadlock detection, but this part does not finish yet. For deadlock detection, nessDB v3.0 will use Helgrind, a thread error detector that can detect potential deadlocks arising from lock ordering problems.
For nessDB v2.0, it is a single-thread engine. The engine can process a single request at a time.
nessDB v3.0 used Snappy, a data compression and decompression library written in C++ by Google, to compress the buffered-tree node data when serializing the node to disk and decompress it when deserializing. nessDB v2.0 used QuickLZ, a compression library written in C, to compress the key-value pair.
https://github.com/BohuTANG/nessDB
https://github.com/BohuTANG/nessDB
https://github.com/BohuTANG/nessDB/wiki
Bohu Tang
2011
2016