Skip to content
/ deneva Public
forked from mitdbg/deneva

Deneva is a distributed in-memory database framework that supports the evaluation of various concurrency control algorithms.

License

Notifications You must be signed in to change notification settings

qadahtm/deneva

 
 

Repository files navigation

SETUP

== Dependencies == nanomsg (nanomsg.org) jemalloc (www.canonware.com/jemalloc)

HOW TO RUN

Create a file called ifconfig.txt with IP addresses for the servers and clients, one per line.

$ make $ ./rundb -nid[unique server ID] & $ ./runcl -nid[unique client ID] &

DBMS BENCHMARK

== General Features ==

ddbms is a OLTP database benchmark with the following features.

  1. Seven different concurrency control algorithms are supported. NO_WAIT[1] : no wait two phase locking WAIT_DIE[1] : wait and die two phase locking TIMESTAMP[1] : basic T/O MVCC[2] : multi-version T/O OCC[3] : optimistic concurrency control (MaaT) CALVIN[4] : Calvin

[1] Phlip Bernstein, Nathan Goodman, "Concurrency Control in Distributed Database Systems", Computing Surveys, June 1981 [2] Phlip Bernstein, Nathan Goodman, "Multiversion Concurrency Control -- Theory and Algorithms", Transactions on Database Systems, Dec 1983 [3] H. Mahmoud et al, "MaaT: Effective and Scalable Coordination of Distributed Transactions in the Cloud", VLDB 2014 [4] A. Thomson et al, "Calvin: Fast Distributed Transactions for Partitioned Database Systems", SIGMOD 2012

  1. Three benchmarks are supported. 2.1 YCSB[5] 2.2 TPCC[6] Only Payment and New Order transactions are modeled. 2.2 Product-Parts-Supplier (PPS)

[5] B. Cooper et al, "Benchmarking Cloud Serving Systems with YCSB", SoCC 201 [6] http://www.tpc.org/tpcc/

== Config File ==

dbms benchmark has the following parameters in the config file. Parameters with a * sign should not be changed.

  • CORE_CNT : number of cores modeled in the system.

  • NODE_CNT : number of computation nodes modeled in the system

  • PART_CNT : number of logical partitions in the system; Should equal CORE_CNT * NODE_CNT

  • THREAD_CNT : number of worker threads

  • REM_THREAD_CNT : number of message receiver threads

  • SEND_THREAD_CNT : number of message sender threads

  • TPORT_TYPE : communication protocol (TCP, IPC)

  • ENVIRONMENT_EC2 : true if running on Amazon EC2

  • PAGE_SIZE : memory page size

  • CL_SIZE : cache line size

  • DONE_TIMER : number of nanoseconds to run experiment

  • WARMUP_TIMER : number of nanoseconds to run for warmup

  • SEQ_BATCH_TIMER : number of nanoseconds between CALVIN batches

  • WORKLOAD : workload supported (TPCC, YCSB, or PPS)

  • CC_ALG : concurrency control algorithm (WAIT_DIE, NO_WAIT, TIMESTAMP, MVCC, CALVIN, or MAAT)

  • ISOLATION_LEVEL : system isolation level (SERIALIZABLE, READ_COMMITTED, READ_UNCOMMITTED, or NOLOCK)

  • THREAD_ALLOC : per thread allocator.

  • * MEM_PAD : enable memory padding to avoid false sharing.

  • MEM_ALLIGN : allocated blocks are alligned to MEM_ALLIGN bytes

  • * ROLL_BACK : roll back the modifications if a transaction aborts.

  • ENABLE_LATCH : enable latching in btree index

  • * CENTRAL_INDEX : centralized index structure

  • * CENTRAL_MANAGER : centralized lock/timestamp manager

  • INDEX_STRCT : data structure for index.

  • BTREE_ORDER : fanout of each B-tree node

  • TS_TWR : enable Thomas Write Rule (TWR) in TIMESTAMP

  • HIS_RECYCLE_LEN : in MVCC, history will be recycled if they are too long.

  • MAX_WRITE_SET : the max size of a write set in OCC.

  • MAX_ROW_PER_TXN : max number of rows touched per transaction.

  • QUERY_INTVL : the rate at which database queries come

  • MAX_TXN_PER_PART : maximum transactions to run per partition.

// for YCSB Benchmark

  • SYNTH_TABLE_SIZE : table size
  • ZIPF_THETA : theta in zipfian distribution (rows accessed follow zipfian distribution)
  • READ_PERC :
  • WRITE_PERC :
  • SCAN_PERC : percentage of read/write/scan queries. they should add up to 1.
  • SCAN_LEN : number of rows touched per scan query.
  • PART_PER_TXN : number of logical partitions to touch per transaction
  • PERC_MULTI_PART : percentage of multi-partition transactions
  • REQ_PER_QUERY : number of queries per transaction FIRST_PART_LOCAL : with this being true, the first touched partition is always the local partition.

// for TPCC Benchmark

  • NUM_WH : number of warehouses being modeled.
  • PERC_PAYMENT : percentage of payment transactions.
  • DIST_PER_WH : number of districts in one warehouse
  • MAX_ITEMS : number of items modeled.
  • CUST_PER_DIST : number of customers per district
  • ORD_PER_DIST : number of orders per district
  • FIRSTNAME_LEN : length of first name
  • MIDDLE_LEN : length of middle name
  • LASTNAME_LEN : length of last name

// for PPS Benchmark

  • MAX_PPS_PART_KEY : number of parts in the parts table
  • MAX_PPS_PRODUCT_KEY : number of products in the products table
  • MAX_PPS_SUPPLIER_KEY : number of suppliers in the suppliers table
  • MAX_PPS_PARTS_PER : number of parts per product or supplier

About

Deneva is a distributed in-memory database framework that supports the evaluation of various concurrency control algorithms.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 75.5%
  • Python 21.6%
  • C 2.1%
  • Other 0.8%