Data Management on Non-Volatile Memory: A Perspective

Abstract

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.

Fig. 1
Fig. 2
Fig. 3

Notes

  1. 1.

    Also known as Persistent Memory (PM), Non-Volatile Random Access Memory (NVRAM), or Storage Class Memory (SCM).

References

  1. 1.

    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

    Google Scholar 

  2. 2.

    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

    Google Scholar 

  3. 3.

    Micron (2018) 3D XPoint technology. https://www.micron.com/products/advanced-solutions/3d-xpoint-technology. Accessed 28 May 2018

    Google Scholar 

  4. 4.

    Kernel (2018) Direct access for files. https://www.kernel.org/doc/Documentation/filesystems/dax.txt. Accessed 28 May 2018

    Google Scholar 

  5. 5.

    Kernel (2018) Ext4 file system. https://www.kernel.org/doc/Documentation/filesystems/ext4.txt. Accessed 25 May 2018

    Google Scholar 

  6. 6.

    Intel (2018) Intel 64 and IA-32 architectures software developer manuals. http://software.intel.com/en-us/intel-isa-extensions. Accessed 28 May 2018

    Google Scholar 

  7. 7.

    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

    Google Scholar 

  8. 8.

    Kernel (2018) Linux NVDIMM library. https://www.kernel.org/doc/Documentation/nvdimm/nvdimm.txt. Accessed 25 May 2018

    Google Scholar 

  9. 9.

    Intel (2018) Persistent Memory Development Kit. http://pmem.io/pmdk/. accessed: May 30, 2018

  10. 10.

    Agrawal R, Jagadish HV (1989) Recovery algorithms for database machines with nonvolatile main memory. IWDM ’89, pp 269–285

    Google Scholar 

  11. 11.

    Andrei M, Lemke C et al (2017) SAP HANA adoption of non-volatile memory. Proceedings VLDB Endowment 10(12):1754–1765

    Article  Google Scholar 

  12. 12.

    Appuswamy R, Borovica R et al (2017) The five minute rule thirty years later and its impact on the storage hierarchy. ADMS @ VLDB ’17.

    Google Scholar 

  13. 13.

    Arulraj J, Pavlo A (2017) How to build a non-volatile memory database management system. SIGMOD ’17, pp 1753–1758

    Google Scholar 

  14. 14.

    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

    Google Scholar 

  15. 15.

    Arulraj J, Perron M, Pavlo A (2016) Write-behind logging. Proceedings VLDB Endowment 10(4):337–348

    Article  Google Scholar 

  16. 16.

    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

    Google Scholar 

  17. 17.

    Bayer R, McCreight EM (1972) Organization and maintenance of large ordered indices. Acta Inform 1:173–189

    Article  Google Scholar 

  18. 18.

    Bhandari K, Chakrabarti DR, Boehm H (2016) Makalu: fast recoverable allocation of non-volatile memory, pp 677–694

    Google Scholar 

  19. 19.

    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

    Article  Google Scholar 

  20. 20.

    Chen S, Jin Q (2015) Persistent B+-trees in non- volatile main memory. Proceedings VLDB Endowment 8(7):786–797

    Article  Google Scholar 

  21. 21.

    Chua L (1971) Memristor – the missing circuit element. IEEE Trans Circuit Theory 18(5):507–519

    Article  Google Scholar 

  22. 22.

    Comer D (1979) Ubiquitous b‑tree. ACM Comput Surv 11(2):121–137

    MathSciNet  Article  Google Scholar 

  23. 23.

    Condit J, Nightingale EB et al (2009) Better I/O through byte-addressable, persistent memory. ACM, SOSP ’09, pp 133–146

    Google Scholar 

  24. 24.

    DeBrabant J, Pavlo A et al (2013) Anti-caching: a new approach to database management system architecture. Proceedings VLDB Endowment 6(14):1942–1953

    Article  Google Scholar 

  25. 25.

    DeBrabant J, Arulraj J et al (2014) A prolegomenon on OLTP database systems for non-volatile memory. ADMS @ VLDB ’14, pp 57–63

    Google Scholar 

  26. 26.

    Dulloor SR, Kumar S et al (2014) System software for persistent memory. ACM, EuroSys ’14, pp 15:1–15:15

    Google Scholar 

  27. 27.

    Eisenman A, Gardner D et al (2018) Reducing DRAM footprint with NVM in Facebook. ACM, EuroSys ’18, pp 42:1–42:13

    Google Scholar 

  28. 28.

    Götze P, Baumann S, Sattler KU (2018) An NVM-aware storage layout for analytical workloads. HardBD & Active @ ICDE ’18.

    Google Scholar 

  29. 29.

    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

    Google Scholar 

  30. 30.

    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

    Google Scholar 

  31. 31.

    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

    Google Scholar 

  32. 32.

    Harizopoulos S, Abadi DJ et al (2008) OLTP through the looking glass, and what we found there. SIGMOD ’08, pp 981–992

    Google Scholar 

  33. 33.

    Hosomi M, Yamagishi H et al (2005) A novel nonvolatile memory with spin torque transfer magnetization switching: spin-RAM. IEEE, IEDM, pp 459–462

    Google Scholar 

  34. 34.

    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

    Google Scholar 

  35. 35.

    Huang J, Schwan K, Qureshi MK (2014) NVRAM- aware logging in transaction systems. Proceedings VLDB Endowment 8(4):389–400

    Article  Google Scholar 

  36. 36.

    Kimura H (2015) FOEDUS: OLTP engine for a thousand cores and NVRAM. In: SIGMOD, pp 691–706

    Google Scholar 

  37. 37.

    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

    Google Scholar 

  38. 38.

    Lee BC, Zhou P et al (2010) Phase-change technology and the future of main memory. IEEE Micro 30(1):131–141

    Article  Google Scholar 

  39. 39.

    Lee SK, Lim KH et al (2017) WORT: write optimal radix tree for persistent memory storage systems. FAST ’17, pp 257–270

    Google Scholar 

  40. 40.

    Leis V, Kemper A, Neumann T (2013) The adaptive radix tree: aRTful indexing for main-memory databases. ICDE ’13, pp 38–49

    Google Scholar 

  41. 41.

    Leis V, Haubenschild M et al (2018) Leanstore: in-memory data management beyond main memory. ICDE ’18.

    Google Scholar 

  42. 42.

    Lersch L, Oukid I et al (2017) Rethinking DRAM caching for LSMs in an NVRAM environment. ADBIS ’17, pp 326–340

    Google Scholar 

  43. 43.

    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

    Google Scholar 

  44. 44.

    Liu Q, Varman P (2017) Ouroboros wear-leveling: a two-level hierarchical wear-leveling model for NVRAM. MSST ’17.

    Google Scholar 

  45. 45.

    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

    Article  Google Scholar 

  46. 46.

    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

    Article  Google Scholar 

  47. 47.

    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

    Google Scholar 

  48. 48.

    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

    Google Scholar 

  49. 49.

    Oukid I, Lehner W (2017) Data structure engineering for byte-addressable non-volatile memory. ACM, SIGMOD ’17, pp 1759–1764

    Google Scholar 

  50. 50.

    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

    Google Scholar 

  51. 51.

    Oukid I, Lehner W et al (2015) Instant recovery for main memory databases. CIDR ’15.

    Google Scholar 

  52. 52.

    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

    Google Scholar 

  53. 53.

    Oukid I, Booss D et al (2017) Memory management techniques for large-scale persistent-main-memory systems. Proceedings VLDB Endowment 10(11):1166–1177

    Article  Google Scholar 

  54. 54.

    Oukid I, Kettler R, Willhalm T (2017) Storage class memory and databases: opportunities and challenges. it Inf Technol 59(3):109–115

    Google Scholar 

  55. 55.

    O’Neil P, Cheng E et al (1996) The log-structured merge-tree (LSM-tree). Acta Inform 33(4):351–385

    Article  Google Scholar 

  56. 56.

    Pavlo A, Angulo G et al (2017) Self-driving database management systems. CIDR ’17.

    Google Scholar 

  57. 57.

    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

    Google Scholar 

  58. 58.

    van Renen A, Leis V et al (2018) Managing non-volatile memory in database systems. SIGMOD ’18, pp 1541–1555

    Google Scholar 

  59. 59.

    Schwalb D, Berning T et al (2015) nvm_malloc: memory allocation for NVRAM. ADMS @ VLDB ’15, pp 61–72

    Google Scholar 

  60. 60.

    Strukov DB, Snider GS et al (2008) The missing memristor found. Nature 453(7191):80–83

    Article  Google Scholar 

  61. 61.

    Venkataraman S, Tolia N et al (2011) Consistent and durable data structures for non-volatile byte- addressable memory. FAST ’11, pp 61–75

    Google Scholar 

  62. 62.

    Viglas SD (2015) Data management in non-volatile memory. SIGMOD ’15, pp 1707–1711

    Google Scholar 

  63. 63.

    Wang T, Johnson R (2014) Scalable logging through emerging non-volatile memory. Proceedings VLDB Endowment 7(10):865–876

    Article  Google Scholar 

  64. 64.

    Wang T, Levandoski J, Larson PA (2017) Easy lock-free indexing in non-volatile memory. Technical report, Microsoft research

    Google Scholar 

  65. 65.

    Wu X, Reddy A (2011) SCMFS: a file system for storage class memory. ACM, SC ’11, pp 39:1–39:11

    Google Scholar 

  66. 66.

    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

    Google Scholar 

  67. 67.

    Xu J, Swanson S (2016) NOVA: a log-structured file system for hybrid volatile/non-volatile main memories. FAST ’16, pp 323–338

    Google Scholar 

  68. 68.

    Yang J, Wei Q et al (2015) NV-tree: reducing consistency cost for NVM-based single level systems. FAST ’15, pp 167–181

    Google Scholar 

Download references

Acknowledgements

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.

Author information

Affiliations

Authors

Corresponding authors

Correspondence to Philipp Götze or Alexander van Renen or Lucas Lersch.

Rights and permissions

Reprints and Permissions

About this article

Verify currency and authenticity via CrossMark

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

Download citation

Keywords

  • Non-volatile memory
  • Persistent memory
  • Data management
  • Databases