Skip to content

Commit c3d3e71

Browse files
committed
Initial push
1 parent 0b682bc commit c3d3e71

9 files changed

+1840
-2
lines changed

README.md

+129-2
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,129 @@
1-
# CrossBench
2-
Embedded database benchmarking tool
1+
**CrossBench** is an utility designed for evaluating performance of embedded databases.
2+
The goal of this project is to provide a standart and simple in use instrument for benchmarking, so any database developer or user can reference to or repeat obtained results.
3+
4+
Storage modes: `on disk`, `in memory`, `on ramdisk`
5+
6+
Benchmarking methods: `insert`, `load`, `query`, `update`, `delete`
7+
8+
Access Sequence: `random`, `sequential`
9+
10+
Supported databases: `crosdb`, `sqlite3`, `lmdb`, `STL map`, `STL hashmap(unordered_map)`
11+
12+
13+
## Usage
14+
15+
```
16+
./crossdb-bench.bin -h
17+
Usage: {count unit can be k or K (*1000) m or M (*1000000)}
18+
-h show this help
19+
-t <db type> ramdisk | inmem | ondisk, default is ramdisk
20+
shortcut r: ramdisk m: inmem d: ondisk
21+
ondisk store db in current folder crossbench
22+
-i <insert count> default 1000000, do insert test, conflict with -l load
23+
-r <row count> open db which already has these rows
24+
-q <query count> default 1000000, do query test
25+
-u <update count> default 1000000, do update test
26+
-d <delete count> default 1000000, do delete test
27+
-c <cpu core> bind cpu core
28+
-l <load count> quick load data, conflict with -i insert
29+
-k <key type> default | hash | tree
30+
shortcut h: hash t: tree d: default
31+
-s sequential, defaut is random
32+
-V verify driver basic CRUD operations
33+
-Q quiet mode, only show last result
34+
35+
Example:
36+
default: do ramdisk random mode test, insert 1M rows, query 1M times, update 1M times, delete 1M rows
37+
-t m: do inmem random mode test, insert 1M rows, query 1M times, update 1M times, delete 1M rows
38+
-t d: do ondisk random mode test, insert 1M rows, query 1M times, update 1M times, delete 1M rows
39+
-i 500k -q 5m: do ramdisk random mode test, insert 500K rows, query 5M times, updat 1M times, delete 500k rows
40+
-i 10k -q 0 -u 0 -d 0: do ramdisk random mode test, insert 10K rows
41+
-r 10k -q 100k -u 0 -d 0: do ramdisk random mode test, query 100K times
42+
-r 10k -q 0 -u 100k -d 0: do ramdisk random mode test, update 100K times
43+
-r 10k -q 0 -u 0 -d 10k: do ramdisk random mode test, delete 10K rows
44+
-V: verify db driver is ok
45+
```
46+
47+
48+
## Build
49+
50+
Install `sqlite3` and `lmdb`
51+
```
52+
sudo apt install libsqlite3-dev
53+
sudo apt install liblmdb-dev
54+
```
55+
Install [CrossDB Library](https://github.com/xxxdb-org/CrossDB/releases)
56+
```
57+
sudo cp libxxxdb.so /usr/lib/
58+
```
59+
Build
60+
```
61+
./build.sh
62+
```
63+
64+
65+
## New Driver
66+
67+
To make a new xxxdb driver, following the simple template below.
68+
69+
```c
70+
#include "benchmark.h"
71+
72+
const char* xxxdb_create (char *dbname, dbtype_e type, keytype_e key, uint32_t flags)
73+
{
74+
// credata database or table, Primary Key: prefix+mask
75+
}
76+
77+
void xxxdb_close ()
78+
{
79+
// close database
80+
}
81+
82+
void xxxdb_begin ()
83+
{
84+
// begin transaction
85+
}
86+
87+
void xxxdb_commit ()
88+
{
89+
// commit transaction
90+
}
91+
92+
void xxxdb_insert (route_t *pRoute)
93+
{
94+
// insert route
95+
}
96+
97+
bool xxxdb_query (route_t *pRoute)
98+
{
99+
// query route by Primary Key
100+
}
101+
102+
void xxxdb_update (route_t *pRoute)
103+
{
104+
// update route set birth by Primary Key
105+
}
106+
107+
void xxxdb_delete (route_t *pRoute)
108+
{
109+
// delete route by Primary Key
110+
}
111+
112+
#define db_name "xxxDB"
113+
#define db_create xxxdb_create
114+
#define db_close xxxdb_close
115+
#define db_insert xxxdb_insert
116+
#define db_query xxxdb_query
117+
#define db_update xxxdb_update
118+
#define db_delete xxxdb_delete
119+
#define db_begin xxxdb_begin
120+
#define db_commit xxxdb_commit
121+
122+
#include "benchmark.c"
123+
124+
```
125+
126+
Verify the driver can work
127+
```
128+
./xxxdb-bench -V
129+
```

0 commit comments

Comments
 (0)