Virtual SSTable

VSSTable is a unit to manage SSTable. Because an SSTable may be referenced more than once: e.g. when splitting a span.

V1T1V4T4V2T2V5T5V3T3splitV1T1V4T4V2T2V2'V5T5V3T3

A SSTable is removed when there is no VSSTable referencing it.

A VSSTable has a key range that is subset of the SSTable it references.

struct VSSTable {
    key_start: String,
    key_end: String,
    sstable: SSTableId,
}