...
/Evaluating and Extending the Design of SILT
Evaluating and Extending the Design of SILT
Evaluate how our design meets our goals and learn about extensions that can be made to our design.
We'll cover the following...
Evaluation
We designed our key-value store to meet many goals. Let's assess how well our store meets those goals. We will offer possible extensions to our design as well.
Reduced per-key memory consumption
Our three stores in decreasing per-key memory consumption are the write-friendly store, the intermediary store, and the memory-efficient store. In our design, the proportion of key-value entries stored increases in this order. We have ensured that our most memory-efficient store has most of our entries.
We cannot avoid storing keys in the write-friendly and intermediary stores since it is required to make our write requests efficient.
Low read amplification
Just because our entries are stored in multiple stores it does not mean that our design requires storage lookups for each store.
For the write-friendly and intermediary stores, their in-memory hash table serves as a filter. If the key does not exist in these stores, the request is forwarded to the next store without looking it up in storage. So all read requests that make it to the memory-efficient store have been filtered by the hash filters from the write-friendly store and the intermediary stores.
This design offers a near 1
read amplification (the value of 1
for the read amplification is the best possible value). The only cases where read amplification exceeds 1
are false positives, when the partial key hash matches the computed hash for GET
requests in the write-friendly and intermediary stores, and the extracted key from storage does not match the lookup key. This can be kept low by selecting good criteria for extracting a partial key out of the complete key for partial-key cuckoo hashing.
Fast lookup
The first two stores provide constant time lookup, while the memory-efficient store provides a lookup in ...