curl -v -XPOST http://localhost:8080/api/v1/set/:key -d 'value'
curl -v http://localhost:8080/api/v1/get/:key
curl -v http://localhost:8080/api/v1/flush
flush memory data to disk table and delete wal log.
- command -> memory SSTable -> WAL
- memory SSTable -> swich SSTable to immutable
- flush immutable to sdb
- delete WAL
- query -> memory SSTable -> active SSTable -> immutable SSTable -> sparse Index -> sdb file
N |
|
N |
N |
40 |
blockLength, blockData |
... |
blockLength, blockData |
sparse index |
metainfo |
4 |
4 |
N |
index.start |
keyLength |
index.key |
8 |
8 |
8 |
8 |
2 |
2 |
4 |
dataStart |
dataLength |
indexStart |
indexLength |
blockKeyNum |
tableBlockNum |
version |
4 |
N |
4 |
N |
|
4 |
N |
commandLength |
command |
commandLength |
command |
... |
commandLength |
command |
1 |
4 |
N |
4 |
N |
commandType |
keyLength |
key |
valueLength |
value |
- block data use LZ4 compressed
- wal log is not compressed
- memory SSTable
- disk SSTable
- WAL
- memory flush to disk
- memory SSTable use skiplist
- L0 data has repeat key, need read latest key
- disk SSTable compaction: Tiering compaction / Leveling compaction
- use bitmap to improve performance