-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCargo.toml
198 lines (166 loc) · 5.02 KB
/
Cargo.toml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
[package]
name = "n2db"
version = "0.1.0"
authors = ["jzc"]
edition = "2018"
build = "build.rs"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
chrono = "0.4.26"
jemallocator = "0.3"
log = "0.4"
log4rs = "0.11.0"
libc = "0.2"
memmap = "0.7"
thiserror = "1.0"
bitvec = "0.20"
env_logger = "0.8"
bytes = "0.6"
lazy_static = "1.1"
serde = { version = "1.0", features = ["derive"] }
serde_bytes = "0.11"
byteorder = "1.3.0"
bincode = "1.3.1"
rand = "0.7.3"
once_cell = "1.5.2"
numeric-enum-macro = "0.2"
twox-hash = "1.6.0"
dashmap = "5.5.0"
crossbeam = "0.8.1"
parking_lot = "0.10.2"
bztree = "0.2.0"
crossbeam-epoch = "0.9.4"
concurrent-map = "5.0.27"
[features]
# If you have set up Dash and want to use Dash index, change "rust_dash" to "dash".
default = ["dash", "nbtree", "nvm_server", "local_allocator", "serializable", "local_cc_cfg_occ", "option", "txn_clock", "new_order_clock", "clwb_delta"]
option = ["ycsb_a", "sysname"]
basic = ["dash", "nbtree", "nvm_server", "local_allocator", "serializable"]
basic_dram = ["rust_dash", "nbtree", "nvm_server", "local_allocator", "serializable"]
# choose one of system
sysname = ["Falcon"]
Falcon = ["n2db_local", "ilog", "clwb_tuple", "hot_unflush"]
Falcon_All_Flush = ["n2db_local", "ilog", "clwb_tuple"]
Falcon_No_Flush = ["n2db_local", "ilog"]
Inp = ["n2db_local", "clwb_delta", "clwb_tuple"]
Outp = ["n2db_append", "clwb_tuple"]
ZenS = ["zen_local", "clwb_tuple"]
ZenS_No_Flush = ["zen_local"]
Inp_No_Flush = ["n2db_local"]
Inp_Hot_Tuple_Cache = ["n2db_local", "clwb_delta", "clwb_tuple", "hot_unflush"]
# intermediate parameter
n2db_local= ["update_local", "delta"]
n2db_append= ["update_local", "append"]
zen_local= ["buffer_pool", "zen", "update_local", "append"]
# concurrency control config
local_cc_cfg_to = ["cc_cfg_to", "read_ts"]
local_cc_cfg_2pl = ["cc_cfg_2pl", "read_ts"]
local_cc_cfg_occ = ["cc_cfg_occ"]
direct_cc_cfg_occ = ["cc_cfg_occ", "update_direct"]
cc_cfg_to = []
cc_cfg_occ = []
cc_cfg_2pl = []
read_ts = []
# mvcc: enable multi-version concurrency control
# ilog: enable small log window
# hot_unflush: enable hot tuple trancing
mvcc = []
ilog = []
hot_unflush = []
# rust_hash: Rust hashtable
# rust_dash: Rust dashmap
# index_bplus_tree: Rust bplus_tree
# lock_index: added for unconcurrency index: rust_hash, index_bplus_tree
# nbtree(Requires other modifications for integration): NBTree refer to https://github.com/SJTU-DDST/NBTree
# dash: Dash, refer to https://github.com/baotonglu/dash
# There is and must be one of index
rust_hash = []
rust_dash = []
index_bplus_tree = []
lock_index = []
nbtree = []
dash = []
rust_map = []
# serializable: enable serializable snapshot isolation
serializable = []
# native: work on local
# nvm_server: work on the NVM nvm_server
native = []
nvm_server = []
# local_allocator(Must): thread-local allocator
# center_allocator(Deprecated): shared allocator
local_allocator = []
center_allocator = []
# update_local(Must): lazy update
# update_direct(Deprecated): eager update
update_local = []
update_direct = []
# ycsb_wh: 90% update & 10% read for YCSB
# ycsb_: YCSB-* workloads
# ycsb_mvcc: readonly ratio evaluation for MVCC in YCSB
# ycsb_wh or ycsb_*
# There is and must be one of ycsb_wh/ycsb_*, not including ycsb_mvcc
ycsb_wh = []
ycsb_a = []
ycsb_b = []
ycsb_c = []
ycsb_d = []
ycsb_e = []
ycsb_f = []
ycsb_size = []
ycsb_mvcc = []
# buffer_pool: enable buffer_pool
# zen: enable zen
buffer_pool = []
zen = []
# delta: use delta storage schema
# append: use append-only storage schema
# travel: use time-travel storage schema
# refer to "An Empirical Evaluation of In-Memory Multi-Version Concurrency Control"
# There is and must be one of delta/append/travel
delta = []
append = []
travel = []
# buffer_direct(Deprecated): eager mode for buffer pool based database
buffer_direct = []
# clock: enable latency statistics
# txn_clock: sample transaction latency
clock = []
txn_clock = []
# clwb_tuple: add clwb for tuple writing (insert & update)
# clwb_delta: add clwb for delta version (log)
# clwb_txn: add clwb for transaction state saving
# clwb: incluing clwb_tuple, clwb_delta and clwb_txn
clwb = ["clwb_tuple", "clwb_delta", "clwb_txn"]
clwb_tuple = []
clwb_delta = []
clwb_txn = []
# payment_clock: sample the latency of payment transaction in TPCC
# new_order_clock: sample the latency of new_order transaction in TPCC
# tpcc: manual parameter configuration for TPCC
payment_clock = []
new_order_clock = []
stock_level_clock = []
order_status_clock = []
deliver_clock = []
tpcc = []
# latency_read: sample read latency
# latency_write: sample write latency
# ycsb_read_tuple: read the whole tuple instead of read the needed column in YCSB
latency_read = []
latency_write = []
ycsb_read_tuple = []
# align: padding tuple header
# a64/128/256/512: use 64/128/256/512 bytes date for YCSB tests.
align = []
large = []
a64 = []
a128 = []
a256 = []
a512 = []
# clwb_fence: use clwb+sfence instead of sfence+clwb on tuple updating
clwb_fence = []
[profile.release]
debug = true
[build-dependencies]
cmake = "0.1.48"