Quick guide for the patience-impaired ------------------------------------- At the top level directory, run: $ make install to build and install the server, library and utilities. How to compile and install -------------------------- The only mandatory requisite to build nmdb is libevent (http://www.monkey.org/~provos/libevent/). There are several build-time options, in two groups: supported network protocols, and backend databases. The network protocols: * TCP and UDP, the well-known network protocols. * TIPC (http://tipc.sf.net/), a cluster-oriented network protocol. You will need a Linux kernel >= 2.6.16 with TIPC support (most distributions enable it by default). * SCTP, a network protocol similar to UDP and TCP, offering reliable message passing over IP, among other very useful things. You will need the libsctp-dev (or equivalent) package. The backend databases: * qdbm (http://qdbm.sf.net/) * bdb (http://www.oracle.com/database/berkeley-db/) * Tokyo Cabinet (http://1978th.net/tokyocabinet/) * tdb (http://tdb.samba.org/) * A null backend (to use when you don't need a real one) By default, network protocols and backends are automatically detected according to the available libraries. You can change the defaults by passing parameters to make, like this: $ make BE_ENABLE_$BACKEND=[1|0] ENABLE_$PROTO=[1|0] Where $PROTO can be TCP, UDP, TIPC or SCTP, and $BACKEND can be QDBM, BDB, TC, TDB or NULL. For instance, to build with bdb backend and without TIPC support, use: $ make BE_ENABLE_BDB=1 ENABLE_TIPC=0 Bindings -------- To compile the Python bindings, you need to have the library already installed. Use "make python_install" at the top level directory to build and install the modules. The module will be named "nmdb". The same goes for Python 3, use "make python3_install". The other bindings do not have a properly defined install procedure, and you'll need knowledge of the language to install them. Tests ----- Tests are available in the "tests/" directory. Some are written in C ("tests/c/"), some in Python ("tests/python/"). Python tests are useful for stress and coverage tests, while the C ones are useful for performance measurements.