nmdb - A multiprotocol network database



nmdb is a network database (dbm-style) for controlled networks that can use different protocols to communicate with its clients. It supports TIPC, TCP, UDP and SCTP.

It consists of an in-memory cache that saves (key, value) pairs, and a persistent backend that stores the pairs on disk.
Both work combined, but the use of the backend is optional, so you can use the server only for cache queries, pretty much like memcached.

As memcached, it supports client-side distribution of queries, although replication is not implemented yet.

A library is provided to interact with the database and the cache in a very simple way. Python (both 2 and 3), D, NewLISP, Ruby, Bigloo Scheme, and Haskell bindings are also available and come with the distribution (although except for the Python bindings, the rest are not widely tested).

It's written in C, in about 5000 lines of code, and depends on libevent (network polling) and can use qdbm, berkeley db, tokyo cabinet or tdb as database backends.

It's in the public domain (BOLA), completely open source, so you can run the software anywhere, and link the library with whatever you want.


nmdb comes with manpages for both the server and the client, as well as with the following documents:


The current version is 0.23 (released on 2010-10-10): You can also browse all released files.

Patches are welcome. The source code is managed using git. You can browse the repository, or clone it by running:

git clone git://blitiri.com.ar/nmdb

If you have any questions, suggestions, comments, please let me know.

Alberto Bertogli (albertito@blitiri.com.ar) - Last updated 30/Oct/2013