The large performance gap between main memory and secondary storage accounts for many design decisions of traditional database systems. With the upcoming availability of Non-Volatile Memory (NVM), which has latencies in the same order of magnitude as DRAM, is byte-addressable and persistent, a completely new type of technology is added to the memory stack. This changes some basic assumptions such as slow storage, block granular access, and that sequential accesses are much faster than random accesses. New ideas are therefore needed to efficiently leverage NVM. Although several new approaches can be found in the literature, the exact role of NVM is not yet clear. In this paper, we survey recent work in this area and classify the existing approaches. We focus on two key challenges: (1) integration of NVM into the memory hierarchy and (2) the design of NVM-aware data structures. We contrast the different approaches, highlight their advantages and limitations, and make recommendations.
This is a preview of subscription content, log in to check access.
Buy single article
Instant access to the full article PDF.
Tax calculation will be finalised during checkout.
Subscribe to journal
Immediate online access to all issues from 2019. Subscription will auto renew annually.
Tax calculation will be finalised during checkout.
Also known as Persistent Memory (PM), Non-Volatile Random Access Memory (NVRAM), or Storage Class Memory (SCM).
JEDEC (2015) JEDEC announces support for NVDIMM hybrid memory modules. https://www.jedec.org/news/pressreleases/jedec-announces-support-nvdimm-hybrid-memory-modules. Accessed 25 May 2018
SNIA (2017) NVM programming model V1.2. Tech. rep. https://www.snia.org/sites/default/files/technical_work/final/NVMProgrammingModel_v1.2.pdf. Accessed 28 June 2018
Micron (2018) 3D XPoint technology. https://www.micron.com/products/advanced-solutions/3d-xpoint-technology. Accessed 28 May 2018
Kernel (2018) Direct access for files. https://www.kernel.org/doc/Documentation/filesystems/dax.txt. Accessed 28 May 2018
Kernel (2018) Ext4 file system. https://www.kernel.org/doc/Documentation/filesystems/ext4.txt. Accessed 25 May 2018
Intel (2018) Intel 64 and IA-32 architectures software developer manuals. http://software.intel.com/en-us/intel-isa-extensions. Accessed 28 May 2018
Mott N (2018) Intel announces Optane DC persistent memory is sampling now, with broad availability in 2019. https://www.tomshardware.com/news/intel-announces-optane-dc-persistent-memory,37145.html. Accessed 27 June 2018
Kernel (2018) Linux NVDIMM library. https://www.kernel.org/doc/Documentation/nvdimm/nvdimm.txt. Accessed 25 May 2018
Intel (2018) Persistent Memory Development Kit. http://pmem.io/pmdk/. accessed: May 30, 2018
Agrawal R, Jagadish HV (1989) Recovery algorithms for database machines with nonvolatile main memory. IWDM ’89, pp 269–285
Andrei M, Lemke C et al (2017) SAP HANA adoption of non-volatile memory. Proceedings VLDB Endowment 10(12):1754–1765
Appuswamy R, Borovica R et al (2017) The five minute rule thirty years later and its impact on the storage hierarchy. ADMS @ VLDB ’17.
Arulraj J, Pavlo A (2017) How to build a non-volatile memory database management system. SIGMOD ’17, pp 1753–1758
Arulraj J, Pavlo A, Dulloor S (2015) Let’s talk about storage & recovery methods for non-volatile memory database systems. SIGMOD ’15, pp 707–722
Arulraj J, Perron M, Pavlo A (2016) Write-behind logging. Proceedings VLDB Endowment 10(4):337–348
Arulraj J, Levandoski JJ et al (2018) BzTree: a high-performance latch-free range index for non-volatile memory. Proceedings VLDB Endowment 11(5):553–565
Bayer R, McCreight EM (1972) Organization and maintenance of large ordered indices. Acta Inform 1:173–189
Bhandari K, Chakrabarti DR, Boehm H (2016) Makalu: fast recoverable allocation of non-volatile memory, pp 677–694
Chatzistergiou A, Cintra M, Viglas SD (2015) REWIND: recovery write-ahead system for in-memory non-volatile data-structures. Proceedings VLDB Endowment 8(5):497–508
Chen S, Jin Q (2015) Persistent B+-trees in non- volatile main memory. Proceedings VLDB Endowment 8(7):786–797
Chua L (1971) Memristor – the missing circuit element. IEEE Trans Circuit Theory 18(5):507–519
Comer D (1979) Ubiquitous b‑tree. ACM Comput Surv 11(2):121–137
Condit J, Nightingale EB et al (2009) Better I/O through byte-addressable, persistent memory. ACM, SOSP ’09, pp 133–146
DeBrabant J, Pavlo A et al (2013) Anti-caching: a new approach to database management system architecture. Proceedings VLDB Endowment 6(14):1942–1953
DeBrabant J, Arulraj J et al (2014) A prolegomenon on OLTP database systems for non-volatile memory. ADMS @ VLDB ’14, pp 57–63
Dulloor SR, Kumar S et al (2014) System software for persistent memory. ACM, EuroSys ’14, pp 15:1–15:15
Eisenman A, Gardner D et al (2018) Reducing DRAM footprint with NVM in Facebook. ACM, EuroSys ’18, pp 42:1–42:13
Götze P, Baumann S, Sattler KU (2018) An NVM-aware storage layout for analytical workloads. HardBD & Active @ ICDE ’18.
Govoreanu B, Kar G et al (2011) 10×10nm2 Hf/HfOx crossbar resistive RAM with excellent performance, reliability and low-energy operation. IEEE, IEDM, pp 31.36.31–31.36.34
Graefe G, Guy W, Sauer C (2016) Instant recovery with write-ahead logging: page repair, system restart, media restore, and system failover, 2nd edn. Synthesis lectures on data management. Morgan & Claypool, San Rafael
Gray J, Putzolu GR (1987) The 5 minute rule for trading memory for disk accesses and the 10 byte rule for trading memory for CPU time. SIGMOD ’87, pp 395–398
Harizopoulos S, Abadi DJ et al (2008) OLTP through the looking glass, and what we found there. SIGMOD ’08, pp 981–992
Hosomi M, Yamagishi H et al (2005) A novel nonvolatile memory with spin torque transfer magnetization switching: spin-RAM. IEEE, IEDM, pp 459–462
Hu J, Xue CJ et al (2011) Towards energy efficient hybrid on-chip scratch pad memory with non-volatile memory. IEEE, DATE, pp 1–6
Huang J, Schwan K, Qureshi MK (2014) NVRAM- aware logging in transaction systems. Proceedings VLDB Endowment 8(4):389–400
Kimura H (2015) FOEDUS: OLTP engine for a thousand cores and NVRAM. In: SIGMOD, pp 691–706
Klima T (2016) Using non-volatile memory (NVDIMM-N) as byte-addressable storage in windows server 2016. https://channel9.msdn.com/events/build/2016/p470. Accessed 25 May 2018
Lee BC, Zhou P et al (2010) Phase-change technology and the future of main memory. IEEE Micro 30(1):131–141
Lee SK, Lim KH et al (2017) WORT: write optimal radix tree for persistent memory storage systems. FAST ’17, pp 257–270
Leis V, Kemper A, Neumann T (2013) The adaptive radix tree: aRTful indexing for main-memory databases. ICDE ’13, pp 38–49
Leis V, Haubenschild M et al (2018) Leanstore: in-memory data management beyond main memory. ICDE ’18.
Lersch L, Oukid I et al (2017) Rethinking DRAM caching for LSMs in an NVRAM environment. ADBIS ’17, pp 326–340
Li J, Pavlo A, Dong S (2017) NVMRocks: RocksDB on non-volatile memory systems. http://istc-bigdata.org/index.php/nvmrocks-rocksdb-on-non-volatile-memory-systems/. Accessed 27 May 2018
Liu Q, Varman P (2017) Ouroboros wear-leveling: a two-level hierarchical wear-leveling model for NVRAM. MSST ’17.
Mittal S, Vetter JS (2016) A survey of software techniques for using non-volatile memories for storage and main memory systems. IEEE Trans Parallel Distrib Syst 27(5):1537–1550
Mohan C, Haderle DJ et al (1992) ARIES: a transaction recovery method supporting fine-granularity locking and partial rollbacks using write-ahead logging. ACM Trans Database Syst 17(1):94–162
Moraru I, Andersen DG et al (2013) Consistent, durable, and safe memory management for byte-addressable non volatile main memory, pp 1:1–1:17
Ou J, Shu J, Lu Y (2016) A high performance file system for non-volatile main memory. EuroSys ’16, ACM, pp 12:1–12:16
Oukid I, Lehner W (2017) Data structure engineering for byte-addressable non-volatile memory. ACM, SIGMOD ’17, pp 1759–1764
Oukid I, Booss D et al (2014) SOFORT: a hybrid SCM-DRAM storage engine for fast data recovery. DaMoN ’14, pp 8:1–8:7
Oukid I, Lehner W et al (2015) Instant recovery for main memory databases. CIDR ’15.
Oukid I, Lasperas J et al (2016) FPTree: a hybrid SCM- DRAM persistent and concurrent B‑tree for storage class memory. SIGMOD ’16, pp 371–386
Oukid I, Booss D et al (2017) Memory management techniques for large-scale persistent-main-memory systems. Proceedings VLDB Endowment 10(11):1166–1177
Oukid I, Kettler R, Willhalm T (2017) Storage class memory and databases: opportunities and challenges. it Inf Technol 59(3):109–115
O’Neil P, Cheng E et al (1996) The log-structured merge-tree (LSM-tree). Acta Inform 33(4):351–385
Pavlo A, Angulo G et al (2017) Self-driving database management systems. CIDR ’17.
Qureshi MK, Karidis J et al (2009) Enhancing lifetime and security of PCM-based main memory with start-gap wear leveling. ACM, MICRO 42, pp 14–23
van Renen A, Leis V et al (2018) Managing non-volatile memory in database systems. SIGMOD ’18, pp 1541–1555
Schwalb D, Berning T et al (2015) nvm_malloc: memory allocation for NVRAM. ADMS @ VLDB ’15, pp 61–72
Strukov DB, Snider GS et al (2008) The missing memristor found. Nature 453(7191):80–83
Venkataraman S, Tolia N et al (2011) Consistent and durable data structures for non-volatile byte- addressable memory. FAST ’11, pp 61–75
Viglas SD (2015) Data management in non-volatile memory. SIGMOD ’15, pp 1707–1711
Wang T, Johnson R (2014) Scalable logging through emerging non-volatile memory. Proceedings VLDB Endowment 7(10):865–876
Wang T, Levandoski J, Larson PA (2017) Easy lock-free indexing in non-volatile memory. Technical report, Microsoft research
Wu X, Reddy A (2011) SCMFS: a file system for storage class memory. ACM, SC ’11, pp 39:1–39:11
Xia F, Jiang D et al (2017) HiKV: a hybrid index key-value store for DRAM-NVM memory systems. USENIX ATC ’17, pp 349–362
Xu J, Swanson S (2016) NOVA: a log-structured file system for hybrid volatile/non-volatile main memories. FAST ’16, pp 323–338
Yang J, Wei Q et al (2015) NV-tree: reducing consistency cost for NVM-based single level systems. FAST ’15, pp 167–181
This work was partially funded by the German Research Foundation (DFG) in the context of the projects “Transactional Stream Processing on Non-Volatile Memory” (SA 782/28) and “Interactive Big Data Exploration on Modern Hardware” (KE401/22) as part of the priority program “Scalable Data Management for Future Hardware” (SPP 2037). Additionally, Alexander van Renen is supported by Fujitsu Laboratories.
About this article
Cite this article
Götze, P., van Renen, A., Lersch, L. et al. Data Management on Non-Volatile Memory: A Perspective. Datenbank Spektrum 18, 171–182 (2018). https://doi.org/10.1007/s13222-018-0301-1
- Non-volatile memory
- Persistent memory
- Data management