Slide 27
Slide 27 text
Appendix: Split format
PK
Split
1
Split
2
Split
3
71
69
{
k03: v03,
k06: v06,
...
}
msgpack( [
[keyLen 1, keyLen 2, keyLen 3, ...],
"key1key2key3...",
[valLen 1, valLen 2, valLen 3, ...],
"val1val2val3...",
] )
zstd( msgpack( [
,
msgpack( [
[keyLen, keyLen, keyLen, ...],
"keykeykey...",
[valLen, valLen, valLen, ...],
"valvalval...",
] )
,
...
] )
,
bucket 1
bucket 2
bucket N
Hash table
serialized by MessagePack
compressed by Zstd
Size of a split:
approx. 200KB
(100,000 records)
Nested MessagePack to omit
unnecessary deserialization
when looking up a record