Deneva is a distributed in-memory database framework that supports the evaluation of various concurrency control algorithms.
Switch branches/tags
Nothing to show
Clone or download
Latest commit 664285d Dec 15, 2016
Failed to load latest commit information.
benchmarks cleanup Dec 15, 2016
client cleanup Dec 15, 2016
concurrency_control cleanup Dec 15, 2016
scripts cleanup Dec 15, 2016
statistics cleanup Dec 15, 2016
storage cleanup Dec 15, 2016
system cleanup Dec 15, 2016
transport cleanup Dec 15, 2016
.gitignore Added config.h to gitignore Apr 27, 2016
Authors Updated copyright Aug 8, 2016
LICENSE Initial commit Dec 1, 2015
Makefile Latency stats; added to config file; added pps to fab tasks Sep 14, 2016
README cleanup Dec 15, 2016 Updated README Oct 19, 2016
config-std.h first commit Aug 31, 2014
config.cpp cleanup Dec 15, 2016
config.h cleanup Dec 15, 2016


DDBMS is a testbed of an OLTP distributed database management system (DBMS). It supports 6 concurrency control algorithms.

This testbed is based on the DBx1000 system, whose concurrency control scalability study can be found in the following paper:

Staring into the Abyss: An Evaluation of Concurrency Control with One Thousand Cores
Xiangyao Yu, George Bezerra, Andrew Pavlo, Srinivas Devadas, Michael Stonebraker

Build & Test

To build the database.

make deps
make -j


DBMS configurations can be changed in the config.h file. Please refer to README for the meaning of each configuration. Here we only list several most important ones.

NODE_CNT          : Number of server nodes in the database
THREAD_CNT        : Number of worker threads running per server
WORKLOAD          : Supported workloads include YCSB and TPCC
CC_ALG            : Concurrency control algorithm. Six algorithms are supported 
                    (NO_WAIT, WAIT_DIE, TIMESTAMP, MVCC, OCC, CALVIN) 
MAX_TXN_IN_FLIGHT  : Maximum number of active transactions at each server at a given time
DONE_TIMER        : Amount of time to run experiment

Configurations can also be specified as command argument at runtime. Run the following command for a full list of program argument.

./rundb -h


The DBMS can be run with

./rundb -nid[N]
./runcl -nid[M]

where N and M are the ID of a server and client, respectively