nmdb - A multiprotocol network database
About
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.
Documentation
nmdb comes with manpages for both the server and the client, as well as with the following documents:- User guide (recommended starting point)
- Design information
- C library API
- Network protocol
- nmdb manpage (HTML may not be up to date)
- libnmdb manpage (HTML may not be up to date)
Download
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