Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
research-article

PLIN: a persistent learned index for non-volatile memory with high performance and instant recovery

Published: 01 October 2022 Publication History

Abstract

Non-Volatile Memory (NVM) has emerged as an alternative to next-generation main memories. Although many tree indices have been proposed for NVM, they generally use B+-tree-like structures. To further improve the performance of NVM-aware indices, we consider integrating learned indexes into NVM. The challenges of such an integration are two fold: (1) existing NVM indices rely on small nodes to accelerate insertions with crash consistency, but learned indices use huge nodes to obtain a flat structure. (2) the node structure of learned indices is not NVM friendly, meaning that accessing a learned node will cause multiple NVM block misses. Thus, in this paper, we propose a new persistent learned index called PLIN. The novelty of PLIN lies in four aspects: an NVM-aware data placement strategy, locally unordered and globally ordered leaf nodes, a model copy mechanism, and a hierarchical insertion strategy. In addition, PLIN is proposed for the NVM-only architecture, which can support instant recovery. We also present optimistic concurrency control and fine-grained locking mechanisms to make PLIN scalable to concurrent requests. We conduct experiments on real persistent memory with various workloads and compare PLIN with APEX, PACtree, ROART, TLBtree, and Fast&Fair. The results show that PLIN achieves 2.08x higher insertion performance and 4.42x higher query performance than its competitors on average. Meanwhile, PLIN only needs ~30 μs to recover from a system crash.

References

[1]
Joy Arulraj, Justin J. Levandoski, Umar Farooq Minhas, and Per-Åke Larson. 2018. BzTree: A high-performance latch-free range index for non-volatile memory. Proc. VLDB Endow. 11, 5 (2018), 553--565.
[2]
Michael A. Bender and Haodong Hu. 2007. An adaptive packed-memory array. ACM Trans. Database Syst. 32, 4 (2007), 26.
[3]
Hokeun Cha, Moohyeon Nam, Kibeom Jin, Jiwon Seo, and Beomseok Nam. 2020. B3-tree: Byte-addressable binary B-tree for persistent memory. ACM Trans. Storage 16, 3 (2020), 17:1--17:27.
[4]
Leying Chen and Shimin Chen. 2021. How does updatable learned index perform on non-volatile main memory?. In HardBD@ICDE. IEEE Computer Society, Chania, Greece, 66--71.
[5]
Shimin Chen, Phillip B. Gibbons, and Suman Nath. 2011. Rethinking database algorithms for phase change memory. In CIDR. www.cidrdb.org, Asilomar, CA, USA, 21--31.
[6]
Shimin Chen and Qin Jin. 2015. Persistent B+-trees in non-volatile main memory. Proc. VLDB Endow. 8, 7 (2015), 786--797.
[7]
Youmin Chen, Youyou Lu, Kedong Fang, Qing Wang, and Jiwu Shu. 2020. μTree: A persistent B+-tree with low tail latency. Proc. VLDB Endow. 13, 11 (2020), 2634--2648.
[8]
Brian F. Cooper, Adam Silberstein, Erwin Tam, Raghu Ramakrishnan, and Russell Sears. 2010. Benchmarking cloud serving systems with YCSB. In SoCC. ACM, Indianapolis, Indiana, 143--154.
[9]
Björn Daase, Lars Jonas Bollmeier, Lawrence Benson, and Tilmann Rabl. 2021. Maximizing persistent memory bandwidth utilization for OLAP workloads. In SIGMOD. ACM, Virtual Event, China, 339--351.
[10]
Jialin Ding, Umar Farooq Minhas, Jia Yu, Chi Wang, Jaeyoung Do, Yinan Li, Hantian Zhang, Badrish Chandramouli, Johannes Gehrke, Donald Kossmann, David B. Lomet, and Tim Kraska. 2020. ALEX: An updatable adaptive learned index. In SIGMOD. ACM, Portland, Oregon, USA, 969--984.
[11]
Paolo Ferragina and Giorgio Vinciguerra. 2020. The PGM-index: A fully-dynamic compressed learned index with provable worst-case bounds. Proc. VLDB Endow. 13, 8 (2020), 1162--1175.
[12]
Alex Galakatos, Michael Markovitch, Carsten Binnig, Rodrigo Fonseca, and Tim Kraska. 2019. FITing-Tree: A data-aware index structure. In SIGMOD. ACM, Amsterdam, The Netherlands, 1189--1206.
[13]
Shashank Gugnani, Arjun Kashyap, and Xiaoyi Lu. 2020. Understanding the idiosyncrasies of real persistent memory. Proc. VLDB Endow. 14, 4 (2020), 626--639.
[14]
Deukyeon Hwang, Wook-Hee Kim, Youjip Won, and Beomseok Nam. 2018. Endurable transient inconsistency in byte-addressable persistent B+-tree. In FAST. USENIX Association, Oakland, CA, USA, 187--200.
[15]
Wook-Hee Kim, Madhava Krishnan Ramanathan, Xinwei Fu, Sanidhya Kashyap, and Changwoo Min. 2021. PACTree: A high performance persistent range index using PAC guidelines. In SOSP. ACM, Virtual Event / Koblenz, Germany, 424--439.
[16]
Wook-Hee Kim, Jihye Seo, Jinwoong Kim, and Beomseok Nam. 2018. clfB-tree: Cacheline friendly persistent B-tree for NVRAM. ACM Trans. Storage 14, 1 (2018), 5:1--5:17.
[17]
Andreas Kipf, Ryan Marcus, Alexander van Renen, Mihail Stoian, Alfons Kemper, Tim Kraska, and Thomas Neumann. 2020. RadixSpline: A single-pass learned index. In aiDM@SIGMOD. ACM, Portland, Oregon, USA, 5:1--5:5.
[18]
Tim Kraska, Alex Beutel, Ed H. Chi, Jeffrey Dean, and Neoklis Polyzotis. 2018. The case for learned index structures. In SIGMOD. ACM, Houston, TX, USA, 489--504.
[19]
Taehyun Kwon, Muhammad Imran, and Joon-Sung Yang. 2021. Reliability Enhanced Heterogeneous Phase Change Memory Architecture for Performance and Energy Efficiency. IEEE Trans. Computers 70, 9 (2021), 1388--1400.
[20]
Se Kwon Lee, Jayashree Mohan, Sanidhya Kashyap, Taesoo Kim, and Vijay Chidambaram. 2019. Recipe: Converting concurrent DRAM indexes to persistent-memory indexes. In SOSP. ACM, Huntsville, ON, Canada, 462--477.
[21]
Viktor Leis, Michael Haubenschild, and Thomas Neumann. 2019. Optimistic lock coupling: A scalable and efficient general-purpose synchronization method. IEEE Data Eng. Bull. 42, 1 (2019), 73--84.
[22]
Viktor Leis, Florian Scheibner, Alfons Kemper, and Thomas Neumann. 2016. The ART of practical synchronization. In DaMoN. ACM, San Francisco, CA, USA, 3:1--3:8.
[23]
Pengfei Li, Yu Hua, Jingnan Jia, and Pengfei Zuo. 2021. FINEdex: A fine-grained learned index scheme for scalable and concurrent memory systems. Proc. VLDB Endow. 15, 2 (2021), 321--334.
[24]
Jihang Liu, Shimin Chen, and Lujun Wang. 2020. LB+-trees: Optimizing persistent index performance on 3DXPoint memory. Proc. VLDB Endow. 13, 7 (2020), 1078--1090.
[25]
Baotong Lu, Jialin Ding, Eric Lo, Umar Farooq Minhas, and Tianzheng Wang. 2021. APEX: A high-performance learned index on persistent memory. Proc. VLDB Endow. 15, 3 (2021), 597--610.
[26]
Yongping Luo, Peiquan Jin, Qinglin Zhang, and Bin Cheng. 2021. TLBtree: A read/write-optimized tree index for non-volatile memory. In ICDE. IEEE Computer Society, Chania, Greece, 1889--1894.
[27]
Yongping Luo, Peiquan Jin, Zhou Zhang, Junchen Zhang, Bin Cheng, and Qinglin Zhang. 2021. Two birds with one stone: Boosting both search and write performance for tree indices on persistent memory. ACM Trans. Embed. Comput. Syst. 20, 5s (2021), 1--25.
[28]
Shaonan Ma, Kang Chen, Shimin Chen, Mengxing Liu, Jianglang Zhu, Hongbo Kang, and Yongwei Wu. 2021. ROART: Range-query optimized persistent ART. In FAST. USENIX Association, Indianapolis, Indiana, 1--16.
[29]
Nooshin Mahdavi, Farhad Razaghian, and Hamed Farbeh. 2022. Data block manipulation for error rate reduction in STT-MRAM based main memory. J. Supercomput. 78, 11 (2022), 13342--13372.
[30]
Tobias Maltenberger, Till Lehmann, Lawrence Benson, and Tilmann Rabl. 2022. Evaluating In-Memory Hash Joins on Persistent Memory. In EDBT. 2:368--2:372.
[31]
Ryan Marcus, Andreas Kipf, Alexander van Renen, Mihail Stoian, Sanchit Misra, Alfons Kemper, Thomas Neumann, and Tim Kraska. 2020. Benchmarking learned indexes. Proc. VLDB Endow. 14, 1 (2020), 1--13.
[32]
Patrick E. O'Neil, Edward Cheng, Dieter Gawlick, and Elizabeth J. O'Neil. 1996. The log-structured merge-tree (LSM-Tree). Acta Informatica 33, 4 (1996), 351--385.
[33]
Ismail Oukid, Johan Lasperas, Anisoara Nica, Thomas Willhalm, and Wolfgang Lehner. 2016. FPTree: A hybrid SCM-DRAM persistent and concurrent B-tree for storage class memory. In SIGMOD. ACM, San Francisco, CA, USA, 371--386.
[34]
Noam Shazeer, Azalia Mirhoseini, Krzysztof Maziarz, Andy Davis, Quoc V. Le, Geoffrey E. Hinton, and Jeff Dean. 2017. Outrageously large neural networks: The sparsely-gated mixture-of-experts layer. In ICLR. OpenReview.net, Toulon, France.
[35]
Chuzhe Tang, Youyun Wang, Zhiyuan Dong, Gansen Hu, Zhaoguo Wang, Minjie Wang, and Haibo Chen. 2020. XIndex: A scalable learned index for multicore data storage. In PPoPP. ACM, San Diego, California, USA, 308--320.
[36]
Shivaram Venkataraman, Niraj Tolia, Parthasarathy Ranganathan, and Roy H. Campbell. 2011. Consistent and durable data structures for non-volatile byte-addressable memory. In FAST. USENIX Association, San Jose, CA, USA, 61--75.
[37]
Stratis Viglas. 2014. Write-limited sorts and joins for persistent memory. Proc. VLDB Endow. 7, 5 (2014), 413--424.
[38]
Jiacheng Wu, Yong Zhang, Shimin Chen, Yu Chen, Jin Wang, and Chunxiao Xing. 2021. Updatable learned index with precise positions. Proc. VLDB Endow. 14, 8 (2021), 1276--1288.
[39]
Qing Xie, Chaoyi Pang, Xiaofang Zhou, Xiangliang Zhang, and Ke Deng. 2014. Maximum error-bounded Piecewise Linear Representation for online stream approximation. VLDB J. 23, 6 (2014), 915--937.
[40]
Jian Yang, Juno Kim, Morteza Hoseinzadeh, Joseph Izraelevitz, and Steven Swanson. 2020. An empirical guide to the behavior and use of scalable persistent memory. In FAST. USENIX Association, Santa Clara, CA, USA, 169--182.
[41]
Jun Yang, Qingsong Wei, Chundong Wang, Cheng Chen, Khai Leong Yong, and Bingsheng He. 2016. NV-Tree: A consistent and workload-adaptive tree structure for non-volatile memory. IEEE Trans. Computers 65, 7 (2016), 2169--2183.
[42]
Zhou Zhang, Peiquan Jin, Xiao-Liang Wang, Yan-Qi Lv, Shouhong Wan, and Xike Xie. 2021. COLIN: A cache-conscious dynamic learned index with high read/write performance. J. Comput. Sci. Technol. 36, 4 (2021), 721--740.
[43]
Zhiyong Zhang, Zhaoyan Shen, Zhiping Jia, and Zili Shao. 2020. UniBuffer: Optimizing Journaling Overhead With Unified DRAM and NVM Hybrid Buffer Cache. IEEE Trans. Comput. Aided Des. Integr. Circuits Syst. 39, 9 (2020), 1792--1805.
[44]
Xinjing Zhou, Joy Arulraj, Andrew Pavlo, and David Cohen. 2021. Spitfire: A Three-Tier Buffer Manager for Volatile and Non-Volatile Memory. In SIGMOD. 2195--2207.
[45]
Xinjing Zhou, Lidan Shou, Ke Chen, Wei Hu, and Gang Chen. 2019. DPTree: Differential indexing for persistent memory. Proc. VLDB Endow. 13, 4 (2019), 421--434.
[46]
Farzaneh Zokaee, Mingzhe Zhang, Xiaochun Ye, Dongrui Fan, and Lei Jiang. 2019. Magma: A Monolithic 3D Vertical Heterogeneous ReRAM-based Main Memory Architecture. In DAC. 115.

Cited By

View all
  • (2024)Bf-Tree: A Modern Read-Write-Optimized Concurrent Larger-Than-Memory Range IndexProceedings of the VLDB Endowment10.14778/3681954.368201217:11(3442-3455)Online publication date: 1-Jul-2024
  • (2024)Oasis: An Optimal Disjoint Segmented Learned Range FilterProceedings of the VLDB Endowment10.14778/3659437.365944717:8(1911-1924)Online publication date: 1-Apr-2024
  • (2024)Accelerating String-Key Learned Index Structures via Memoization-Based Incremental TrainingProceedings of the VLDB Endowment10.14778/3659437.365943917:8(1802-1815)Online publication date: 1-Apr-2024
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image Proceedings of the VLDB Endowment
Proceedings of the VLDB Endowment  Volume 16, Issue 2
October 2022
266 pages
ISSN:2150-8097
Issue’s Table of Contents

Publisher

VLDB Endowment

Publication History

Published: 01 October 2022
Published in PVLDB Volume 16, Issue 2

Badges

Qualifiers

  • Research-article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)104
  • Downloads (Last 6 weeks)5
Reflects downloads up to 09 Nov 2024

Other Metrics

Citations

Cited By

View all
  • (2024)Bf-Tree: A Modern Read-Write-Optimized Concurrent Larger-Than-Memory Range IndexProceedings of the VLDB Endowment10.14778/3681954.368201217:11(3442-3455)Online publication date: 1-Jul-2024
  • (2024)Oasis: An Optimal Disjoint Segmented Learned Range FilterProceedings of the VLDB Endowment10.14778/3659437.365944717:8(1911-1924)Online publication date: 1-Apr-2024
  • (2024)Accelerating String-Key Learned Index Structures via Memoization-Based Incremental TrainingProceedings of the VLDB Endowment10.14778/3659437.365943917:8(1802-1815)Online publication date: 1-Apr-2024
  • (2024)Revisiting Learned Index with Byte-addressable Persistent StorageProceedings of the 53rd International Conference on Parallel Processing10.1145/3673038.3673113(929-938)Online publication date: 12-Aug-2024
  • (2024)Making In-Memory Learned Indexes Efficient on DiskProceedings of the ACM on Management of Data10.1145/36549542:3(1-26)Online publication date: 30-May-2024
  • (2024)LIVAK: A High-Performance In-Memory Learned Index for Variable-Length KeysProceedings of the 61st ACM/IEEE Design Automation Conference10.1145/3649329.3657385(1-6)Online publication date: 23-Jun-2024
  • (2024)LSGraph: A Locality-centric High-performance Streaming Graph EngineProceedings of the Nineteenth European Conference on Computer Systems10.1145/3627703.3650076(33-49)Online publication date: 22-Apr-2024
  • (2024)Morphtree: a polymorphic main-memory learned index for dynamic workloadsThe VLDB Journal — The International Journal on Very Large Data Bases10.1007/s00778-023-00823-y33:4(1065-1084)Online publication date: 1-Jul-2024
  • (2024)PLIS: Persistent Learned Index for StringsWeb Information Systems and Applications10.1007/978-981-97-7707-5_22(251-263)Online publication date: 1-Aug-2024
  • (2024)Optimizing the B+tree Index with Hotness Awareness and AdaptivityAdvanced Intelligent Computing Technology and Applications10.1007/978-981-97-5581-3_29(356-367)Online publication date: 5-Aug-2024
  • Show More Cited By

View Options

Get Access

Login options

Full Access

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media