SpanDB
SpanDB is a research RocksDB extension that places its write-ahead log and selected LSM-tree levels on a fast NVMe SSD while retaining bulk data on cheaper storage.
Placement changes redirect newly created SST files, so the configured level boundary need not describe every existing file's location. The speed disk is a storage tier, not merely a disposable cache. [1]
At revision 9a82d5a5, the logger polls SPDK completions before publishing completed log requests. Its callback terminates the process on a device-reported I/O error; submission return and completion are different observations. [2]
Deployment requires deliberate device binding and hugepage allocation for the prototype's cache. This is not an ordinary RocksDB configuration switch. [3]
For the active log, the pinned reader treats a page whose tag differs from the expected log tag as an end marker; older logs have recorded end addresses. Page membership is not payload integrity. [5]
LogEntry::Check compares the assembled byte count with the declared entry size; it does not calculate a checksum. SPDKLoggingRecover passes reconstructed bytes to WriteBatch, whereas the ordinary file-log recovery path constructs a checksum-enabled log::Reader. Do not assume the two readers perform identical validation. This is a source-level distinction, not a measured corruption outcome. [6] [7]
CreateWAL records the preceding log's end address, and DeleteLog removes obsolete log descriptors before writing metadata. A matching page tag does not itself authorize reclamation. [8]
Relations
Limitations
- Log-page reuse relies on the paper's atomic 4 KiB write assumption; this is not a guarantee for every NVMe device. [1]
Citations
- Chen, Ruan, Li, Ma and Xu. SpanDB. USENIX FAST 2021, pp. 17-32, sections 3-5.
- SpanDB 9a82d5a5: SPDKWrite callback and logger completion processing, lines 98-244.
- SpanDB 9a82d5a5: author artifact setup, hugepage budget and test configuration.
- SpanDB 9a82d5a5: active-log tag checks and entry assembly in ReadFromSPDK and ProcessData.
- SpanDB 9a82d5a5: LogEntry::Check compares accumulated and declared byte counts.
- SpanDB 9a82d5a5: SPDKLoggingRecover and ordinary RecoverLogFiles use different input readers.
- SpanDB 9a82d5a5: DeleteLog, CreateWAL and WriteMetadata lifecycle.
Further reading
Sources & caveats
- Primary-source synthesis and pinned-code inspection on 2026-11-14. No SpanDB execution, benchmark reproduction or power-loss test.