DBDB.io The Encyclopedia of Database Systems · Est. 2017
Database of Databases

Database Entry

nessDB


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.[03][04]

Source Code
https://github.com/BohuTANG/nessDB[01]
Developer
Country of Origin
CN
Start Year
2011 [15]
End Year
2016
Project Type
Open Source
Written in
C
Supported Languages
C, C++, Java, Lua, Python
Operating Systems
BSD, Linux
License
BSD License

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.

Database Entry

nessDB


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.[03][04]

History[03]


It has released two main versions (v1.8 and v2.0), while v3.0 is still work in progress.

Checkpoints[05][06]


It does not fully support no redo log and recovery. nessDB v3.0 will support sharp checkpoint with a 60 seconds period according to the code, but the recovery part has not been finished.

Compression[07][08]


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.

Concurrency Control[09][10][11]


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.

Data Model[12][13][14]


nessDB is a key-value DBMS, which supports Redis-like protocol, such as SET, GET, DEL, EXISTS. To be specific, both key and value are general raw data and are represented by a pointer with length.

Foreign Keys


nessDB is a key-value DBMS so it does not support foreign key.

Indexes[03][04]


nessDB used LSM-tree (Log-Structured Merge Tree) in v1.8, Small-Splittable Tree in v2.0, and will use fractal-tree in v3.0 for key-value storage. Those data structures are suitable for high-performance insertion compared to B-tree.

Storage Architecture


Storage Model


System Architecture


Revision #5 Last Updated: