SLM-DB exploits persistent memory to maintain a B+-tree index and adopt an LSM-tree approach to stage inserted KV pairs in a PM resident memory buffer. SLM-DB has a single-level organization of KV pairs on disks and performs selective compaction for the KV pairs, collecting garbage and keeping the KV pairs sorted sufficiently for range query operations.
The flow of SLM-DB is:
- KVs are first inserted to a persistent skiplist – MemTable.
- When MemTable are full, KVs are then persisted to Disk without ordering.
- After the KVs are persisted to Disk, they are finally inserted to a persistent b+tree on PM.