https://github.com/dbiir/redt
Last synced: 6 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/dbiir/redt
- Owner: dbiir
- License: apache-2.0
- Created: 2023-02-24T02:38:24.000Z (about 2 years ago)
- Default Branch: RedT
- Last Pushed: 2024-05-28T15:32:50.000Z (12 months ago)
- Last Synced: 2024-05-29T06:53:07.169Z (12 months ago)
- Language: C++
- Size: 9.8 MB
- Stars: 4
- Watchers: 4
- Forks: 4
- Open Issues: 0
-
Metadata Files:
- Readme: README
- License: LICENSE
- Authors: Authors
Awesome Lists containing this project
README
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 20122. 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 EC2PAGE_SIZE : memory page size
CL_SIZE : cache line sizeDONE_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 nodeTS_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