1. Wasn't it simpler to just store the Key/Pointer(Offset) in RocksDB and put the values in the value log? Then the whole database just becomes a simple wrapper on top of RockDB(or whatever K/V database) with bunch of files as value log.
2. Why 16 bytes for value pointer? 8 bytes is sufficient.
3. If LSM size is around 5GB, screw LSM. I would rather use a simple immutable HashTable which gives you consistent snapshot out of the box for persisting to disk. Every 15 minutes launch a thread to serialize the index to disk.
Am I missing something or there is some more detail missing? I mean the reasoning to write a whole database from scratch isn't convincing.