VolD - Volatile Directory Service

VolD is a key-value data storage with a REST based interface written in Java. Basically, it is a map with a set of keys assigning to each key a set of values. For physical storage, either a file system directory or BabuDB, an embedded non-relational database system, can be configured.

The keys can be configured to be volatile, i.e. a key will be deleted if its age has exceeded a certain time to live and it has not been refreshed in between.

The keys are stored in a hierarchical structure (wherefore the service is called Directory Service). The keys are typed and stored per source. If two sources (e.g. different clients on the REST interface) store the same key in the same directory (called scope), a lookup for this key will merge the sets of values, given by both sources.

VolD also supports a flexible but easy to configure multi master replication.

The project is shipped with a server and a client.

Compiling

The latest sources can be downloaded at github:

$ git clone git://github.com/zibhub/VolD

To compile the whole project, run the following command in the root of VolD:

$ buildr vold:package

After compiling, there will be .jar and .war files in common/target/, client/target/ and server/target/. The file server/target/vold-server-VERSION.war can be used in an application container such as tomcat or jetty (where VERSION is the actual version string like 0.1.0).

Dependencies

The project depends on the following archives:

When compiling the project using buildr, these resources should be downloaded automatically and stored in ~/.m2/repository/.

Structure

The project is subdivided into three packages: ‘common’, ‘client’ and ‘server’. The server and client packages depend on the common archive. Additionally, the server package depends on the client archive. Hence, it is possible to install the client without installing the server.