Viper
Viper is a research key-value store that keeps a volatile hash index in DRAM and records in persistent memory.
Layout: the offset map adapts CCEH as a volatile index. Clients write records directly into persistent pages aligned to the configured DIMM interleaving, rather than staging them in a DRAM write buffer. [1]
Recovery: rebuilding the offset map requires scanning stored records. Fast steady-state lookup therefore does not imply an instant restart. The paper describes both fixed- and variable-length recovery. [1]
Implementation: at revision 79ebf6e9248b, Viper<std::string, std::string>::recover_database() instead throws "Not implemented yet". The constructor calls recovery when opening an existing pool. Variable-length put/get support must not be read as implemented string-pool recovery at that revision. [2]
Measurement: the pinned recovery benchmark fills fixed-size records, closes the store, then times open(). That procedure is not evidence of a power-failure test. Its fixture also removes pools whose path lacks /dev/dax, so changing the benchmark to a directory requires reviewing teardown first. [3] [4]
Relations
- related
- Persistent memory, Cacheline-Conscious Extendible Hashing, Persistence ordering, Direct Access, Key-value separation
Citations
- Benson, Makait and Rabl. Viper: An Efficient Hybrid PMem-DRAM Key-Value Store. PVLDB 14(9), 1544-1556 (2021). DOI: 10.14778/3461535.3461543.
- Viper authors. viper.hpp: constructor and fixed/string recovery implementations, revision 79ebf6e9248b.
- Viper authors. recovery_bm.cpp: fixed-size prefill, teardown and timed reopen, revision 79ebf6e9248b.
- Viper authors. viper_fixture.hpp: DeInitMap and path-dependent pool removal, revision 79ebf6e9248b.
Further reading
Sources & caveats
- Full-paper and pinned-source review. No engine execution, benchmark reproduction or crash-injection experiment was performed.
- Paper sections 3, 4.7 and 5.3.9 describe architecture and recovery. Implementation observations apply only to the linked revision, not every version of the design.
- The paper evaluates Optane hardware with devdax; its historical performance results are not a current ranking or a guarantee for other persistent-memory platforms.