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.