{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2024,8,27]],"date-time":"2024-08-27T17:09:25Z","timestamp":1724778565714},"reference-count":77,"publisher":"Association for Computing Machinery (ACM)","issue":"3","funder":[{"name":"NSF I\/UCRC Center Research in Intelligent Storage and NSF","award":["1439622, 1525617, and 1812537"]}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["ACM Trans. Storage"],"published-print":{"date-parts":[[2021,8,31]]},"abstract":"\n Computer systems utilizing byte-addressable\n Non-Volatile Memory<\/jats:bold>\n (\n NVM<\/jats:bold>\n ) as memory\/storage can provide low-latency data persistence. The widely used key-value stores using\n Log-Structured Merge Tree<\/jats:bold>\n (\n LSM-Tree<\/jats:bold>\n ) are still beneficial for NVM systems in aspects of the space and write efficiency. However, the significant write amplification introduced by the leveled compaction of LSM-Tree degrades the write performance of the key-value store and shortens the lifetime of the NVM devices. The existing studies propose new compaction methods to reduce write amplification. Unfortunately, they result in a relatively large read amplification. In this article, we propose NVLSM, a key-value store for NVM systems using LSM-Tree with new accumulative compaction. By fully utilizing the byte-addressability of NVM, accumulative compaction uses pointers to accumulate data into multiple floors in a logically sorted run to reduce the number of compactions required. We have also proposed a cascading searching scheme for reads among the multiple floors to reduce read amplification. Therefore, NVLSM reduces write amplification with small increases in read amplification. We compare NVLSM with key-value stores using LSM-Tree with two other compaction methods: leveled compaction and fragmented compaction. Our evaluations show that NVLSM reduces write amplification by up to 67% compared with LSM-Tree using leveled compaction without significantly increasing the read amplification. In write-intensive workloads, NVLSM reduces the average latency by 15.73%\u201341.2% compared to other key-value stores.\n <\/jats:p>","DOI":"10.1145\/3453300","type":"journal-article","created":{"date-parts":[[2021,8,17]],"date-time":"2021-08-17T00:38:43Z","timestamp":1629160723000},"page":"1-26","update-policy":"http:\/\/dx.doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":12,"title":["NVLSM: A Persistent Memory Key-Value Store Using Log-Structured Merge Tree with Accumulative Compaction"],"prefix":"10.1145","volume":"17","author":[{"given":"Baoquan","family":"Zhang","sequence":"first","affiliation":[{"name":"University of Minnesota\u2013Twin Cities, Minneapolis, MN"}]},{"given":"David H. C.","family":"Du","sequence":"additional","affiliation":[{"name":"University of Minnesota\u2013Twin Cities, Minneapolis, MN"}]}],"member":"320","published-online":{"date-parts":[[2021,8,16]]},"reference":[{"key":"e_1_2_1_1_1","doi-asserted-by":"publisher","DOI":"10.1145\/3187009.3164147"},{"key":"e_1_2_1_2_1","doi-asserted-by":"publisher","DOI":"10.1145\/2723372.2749441"},{"key":"e_1_2_1_3_1","doi-asserted-by":"publisher","DOI":"10.14778\/3025111.3025116"},{"key":"e_1_2_1_4_1","doi-asserted-by":"publisher","DOI":"10.1145\/2318857.2254766"},{"key":"e_1_2_1_5_1","doi-asserted-by":"publisher","DOI":"10.5555\/1991596.1991599"},{"key":"e_1_2_1_6_1","doi-asserted-by":"publisher","DOI":"10.5555\/3323298.3323311"},{"key":"e_1_2_1_7_1","doi-asserted-by":"publisher","DOI":"10.1145\/2714064.2660224"},{"key":"e_1_2_1_8_1","doi-asserted-by":"publisher","DOI":"10.5555\/3277355.3277451"},{"key":"e_1_2_1_9_1","doi-asserted-by":"publisher","DOI":"10.14778\/2735479.2735483"},{"key":"e_1_2_1_10_1","doi-asserted-by":"publisher","DOI":"10.1007\/BF01840440"},{"key":"e_1_2_1_11_1","doi-asserted-by":"publisher","DOI":"10.1109\/MSST.2016.7897077"},{"key":"e_1_2_1_12_1","doi-asserted-by":"publisher","DOI":"10.14778\/2752939.2752947"},{"key":"e_1_2_1_13_1","doi-asserted-by":"publisher","DOI":"10.1145\/301631.301635"},{"key":"e_1_2_1_14_1","doi-asserted-by":"publisher","DOI":"10.1145\/1807128.1807152"},{"key":"e_1_2_1_15_1","doi-asserted-by":"publisher","DOI":"10.1145\/3035918.3064054"},{"key":"e_1_2_1_16_1","doi-asserted-by":"publisher","DOI":"10.1145\/3183713.3196927"},{"key":"e_1_2_1_17_1","doi-asserted-by":"publisher","DOI":"10.1145\/2883591.2883597"},{"key":"e_1_2_1_18_1","doi-asserted-by":"publisher","DOI":"10.1145\/1323293.1294281"},{"key":"e_1_2_1_19_1","first-page":"3","article-title":"Optimizing space amplification in rocksDB","volume":"3","author":"Dong Siying","year":"2017","unstructured":"Siying Dong , Mark Callaghan , Leonidas Galanis , Dhruba Borthakur , Tony Savor , and Michael Strum . 2017 . Optimizing space amplification in rocksDB . In CIDR , Vol. 3. 3 . Siying Dong, Mark Callaghan, Leonidas Galanis, Dhruba Borthakur, Tony Savor, and Michael Strum. 2017. Optimizing space amplification in rocksDB. In CIDR, Vol. 3. 3.","journal-title":"CIDR"},{"key":"e_1_2_1_20_1","volume-title":"Retrieved on","author":"DB.","year":"2015","unstructured":"Facebook. 2015. Rocks DB. ( 2015 ). Retrieved on 09 June, 2019 https:\/\/rocksdb.org\/. Facebook. 2015. RocksDB. (2015). Retrieved on 09 June, 2019 https:\/\/rocksdb.org\/."},{"key":"e_1_2_1_21_1","doi-asserted-by":"publisher","DOI":"10.5555\/1870926.1871147"},{"key":"e_1_2_1_22_1","volume-title":"Retrieved on","author":"Ghemawat Sanjay","year":"2019","unstructured":"Sanjay Ghemawat and Jeff Dean . 2011. Level DB. Retrieved on 13 Aug. , 2019 https:\/\/github.com\/google\/leveldb. Sanjay Ghemawat and Jeff Dean. 2011. LevelDB. Retrieved on 13 Aug., 2019 https:\/\/github.com\/google\/leveldb."},{"key":"e_1_2_1_23_1","volume-title":"Retrieved on","author":"Benchmarks DB","year":"2019","unstructured":"Google. 2017. Level DB Benchmarks . Retrieved on 13 Aug. , 2019 http:\/\/www.lmdb.tech\/bench\/microbench\/benchmark.html. Google. 2017. LevelDB Benchmarks. Retrieved on 13 Aug., 2019 http:\/\/www.lmdb.tech\/bench\/microbench\/benchmark.html."},{"key":"e_1_2_1_24_1","doi-asserted-by":"publisher","DOI":"10.1109\/JPROC.2017.2731776"},{"key":"e_1_2_1_25_1","volume-title":"Scylla Compaction Strategies Series: Space Amplification in Size-Tiered Compaction. Retrieved on","author":"Har\u2019El Nadav","year":"2019","unstructured":"Nadav Har\u2019El . 2017. Scylla Compaction Strategies Series: Space Amplification in Size-Tiered Compaction. Retrieved on 16 Aug. , 2019 https:\/\/www.scylladb.com\/2018\/01\/17\/compaction-series-space-amplification\/. Nadav Har\u2019El. 2017. Scylla Compaction Strategies Series: Space Amplification in Size-Tiered Compaction. Retrieved on 16 Aug., 2019 https:\/\/www.scylladb.com\/2018\/01\/17\/compaction-series-space-amplification\/."},{"key":"e_1_2_1_26_1","doi-asserted-by":"publisher","DOI":"10.5555\/2591305.2591325"},{"key":"e_1_2_1_27_1","doi-asserted-by":"publisher","DOI":"10.5555\/3189759.3189777"},{"key":"e_1_2_1_28_1","unstructured":"HyperDex. 2016. HyperLevelDB: A fork of LevelDB intended to meet the needs of HyperDex while remaining compatible with LevelDB. (2016). HyperDex. 2016. HyperLevelDB: A fork of LevelDB intended to meet the needs of HyperDex while remaining compatible with LevelDB. (2016)."},{"key":"e_1_2_1_29_1","volume-title":"https:\/\/pmem.io\/libpmemobj-cpp\/. Retrieved on","year":"2019","unstructured":"Intel. 2018. https:\/\/pmem.io\/libpmemobj-cpp\/. Retrieved on 20 August , 2019 from https:\/\/pmem.io\/libpmemobj-cpp\/. Intel. 2018. https:\/\/pmem.io\/libpmemobj-cpp\/. Retrieved on 20 August, 2019 from https:\/\/pmem.io\/libpmemobj-cpp\/."},{"key":"e_1_2_1_30_1","volume-title":"pmemkv. Retrieved on","year":"2019","unstructured":"Intel. 2018. pmemkv. Retrieved on 20 August , 2019 from https:\/\/github.com\/pmem\/pmemkv. Intel. 2018. pmemkv. Retrieved on 20 August, 2019 from https:\/\/github.com\/pmem\/pmemkv."},{"key":"e_1_2_1_31_1","volume-title":"Persistent Memory Development Kit. (2016). Retrieved on","year":"2019","unstructured":"Intel. 2016. Persistent Memory Development Kit. (2016). Retrieved on 20 August , 2019 from http:\/\/pmem.io\/pmdk\/libpmemobj\/. Intel. 2016. Persistent Memory Development Kit. (2016). Retrieved on 20 August, 2019 from http:\/\/pmem.io\/pmdk\/libpmemobj\/."},{"key":"e_1_2_1_32_1","volume-title":"Transactions in Persistent Memory Development Kits. (2017). Retrieved on","year":"2019","unstructured":"Intel. 2017. Transactions in Persistent Memory Development Kits. (2017). Retrieved on 20 August , 2019 from http:\/\/pmem.io\/2016\/05\/25\/cpp-07.html. Intel. 2017. Transactions in Persistent Memory Development Kits. (2017). Retrieved on 20 August, 2019 from http:\/\/pmem.io\/2016\/05\/25\/cpp-07.html."},{"key":"e_1_2_1_33_1","doi-asserted-by":"publisher","DOI":"10.1145\/2980024.2872410"},{"key":"e_1_2_1_34_1","doi-asserted-by":"publisher","DOI":"10.5555\/3323298.3323317"},{"key":"e_1_2_1_35_1","doi-asserted-by":"publisher","DOI":"10.5555\/3277355.3277450"},{"key":"e_1_2_1_36_1","unstructured":"Bradley C. Kuszmaul. 2014. A comparison of fractal trees to log-structured merge (LSM) trees. Tokutek White Paper Bradley C. Kuszmaul. 2014. A comparison of fractal trees to log-structured merge (LSM) trees. Tokutek White Paper"},{"key":"e_1_2_1_37_1","doi-asserted-by":"publisher","DOI":"10.1145\/1773912.1773922"},{"key":"e_1_2_1_38_1","doi-asserted-by":"publisher","DOI":"10.1145\/1555815.1555758"},{"key":"e_1_2_1_39_1","doi-asserted-by":"publisher","DOI":"10.5555\/3129633.3129657"},{"key":"e_1_2_1_40_1","unstructured":"J. Li A. Pavlo and S. Dong. 2017. NVMRocks: RocksDB on non-volatile memory systems. Retrieved on 03 June 2019 https:\/\/github.com\/pmem\/pmem-rocksdb. J. Li A. Pavlo and S. Dong. 2017. NVMRocks: RocksDB on non-volatile memory systems. Retrieved on 03 June 2019 https:\/\/github.com\/pmem\/pmem-rocksdb."},{"key":"e_1_2_1_41_1","doi-asserted-by":"publisher","DOI":"10.1109\/ICDE.2009.226"},{"key":"e_1_2_1_42_1","volume-title":"clflush. (2017). Retrieved on","year":"2019","unstructured":"linux. 2017. clflush. (2017). Retrieved on 15 July , 2019 from https:\/\/www.felixcloutier.com\/x86\/CLFLUSH.html. linux. 2017. clflush. (2017). Retrieved on 15 July, 2019 from https:\/\/www.felixcloutier.com\/x86\/CLFLUSH.html."},{"key":"e_1_2_1_43_1","volume-title":"mfence. (2017). Retrieved on","year":"2019","unstructured":"linux. 2017. mfence. (2017). Retrieved on 15 July , 2019 from https:\/\/www.felixcloutier.com\/x86\/MFENCE.html. linux. 2017. mfence. (2017). Retrieved on 15 July, 2019 from https:\/\/www.felixcloutier.com\/x86\/MFENCE.html."},{"key":"e_1_2_1_44_1","doi-asserted-by":"publisher","DOI":"10.1145\/3033273"},{"key":"e_1_2_1_45_1","volume-title":"Improving performance and endurance of persistent memory with loose-ordering consistency","author":"Lu Youyou","year":"2017","unstructured":"Youyou Lu , Jiwu Shu , Long Sun , and Onur Mutlu . 2017. Improving performance and endurance of persistent memory with loose-ordering consistency . IEEE Transactions on Parallel and Distributed Systems ( 2017 ). Youyou Lu, Jiwu Shu, Long Sun, and Onur Mutlu. 2017. Improving performance and endurance of persistent memory with loose-ordering consistency. IEEE Transactions on Parallel and Distributed Systems (2017)."},{"key":"e_1_2_1_46_1","doi-asserted-by":"publisher","DOI":"10.5555\/1080072.1080074"},{"key":"e_1_2_1_47_1","doi-asserted-by":"publisher","DOI":"10.1145\/3267809.3267829"},{"key":"e_1_2_1_48_1","doi-asserted-by":"publisher","DOI":"10.1145\/3064176.3064215"},{"key":"e_1_2_1_49_1","doi-asserted-by":"publisher","DOI":"10.1109\/TPDS.2015.2442980"},{"key":"e_1_2_1_50_1","unstructured":"Jeffrey C. Mogul Eduardo Argollo Mehul Shah and Paolo Faraboschi. 2009. Operating system support for NVM hybrid main memory. Jeffrey C. Mogul Eduardo Argollo Mehul Shah and Paolo Faraboschi. 2009. Operating system support for NVM hybrid main memory."},{"key":"e_1_2_1_51_1","doi-asserted-by":"publisher","DOI":"10.1145\/2524211.2524216"},{"key":"e_1_2_1_52_1","volume-title":"Retrieved on","author":"Mumford Chris","year":"2019","unstructured":"Chris Mumford . 2011. Level DB Implementations . Retrieved on 26 Aug. , 2019 from https:\/\/github.com\/google\/leveldb\/blob\/master\/doc\/impl.md. Chris Mumford. 2011. LevelDB Implementations. Retrieved on 26 Aug., 2019 from https:\/\/github.com\/google\/leveldb\/blob\/master\/doc\/impl.md."},{"key":"e_1_2_1_53_1","doi-asserted-by":"publisher","DOI":"10.5555\/3323298.3323302"},{"key":"e_1_2_1_54_1","doi-asserted-by":"publisher","DOI":"10.1109\/ICDEW.2015.7129568"},{"key":"e_1_2_1_55_1","doi-asserted-by":"publisher","DOI":"10.1145\/2882903.2915251"},{"key":"e_1_2_1_56_1","doi-asserted-by":"publisher","DOI":"10.1007\/s002360050048"},{"key":"e_1_2_1_57_1","doi-asserted-by":"publisher","DOI":"10.1145\/78973.78977"},{"key":"e_1_2_1_58_1","doi-asserted-by":"publisher","DOI":"10.1145\/3132747.3132765"},{"key":"e_1_2_1_59_1","doi-asserted-by":"publisher","DOI":"10.1557\/mrs.2014.139"},{"key":"e_1_2_1_60_1","doi-asserted-by":"publisher","DOI":"10.1145\/2830772.2830802"},{"key":"e_1_2_1_61_1","doi-asserted-by":"publisher","DOI":"10.14778\/3151106.3151108"},{"key":"e_1_2_1_62_1","doi-asserted-by":"publisher","DOI":"10.1145\/2213836.2213862"},{"key":"e_1_2_1_63_1","doi-asserted-by":"publisher","DOI":"10.5555\/2014698.2014895"},{"key":"e_1_2_1_64_1","doi-asserted-by":"publisher","DOI":"10.1109\/12.677225"},{"key":"e_1_2_1_65_1","doi-asserted-by":"publisher","DOI":"10.1145\/173682.165163"},{"key":"e_1_2_1_66_1","doi-asserted-by":"publisher","DOI":"10.1109\/COMPSAC.2013.40"},{"key":"e_1_2_1_67_1","doi-asserted-by":"publisher","DOI":"10.1145\/3106340"},{"key":"e_1_2_1_68_1","volume-title":"Retrieved on","author":"Williams Dan","year":"2019","unstructured":"Dan Williams . 2018. Persistent Memory . Retrieved on 15 Aug , 2019 from https:\/\/nvdimm.wiki.kernel.org\/. Dan Williams. 2018. Persistent Memory. Retrieved on 15 Aug, 2019 from https:\/\/nvdimm.wiki.kernel.org\/."},{"key":"e_1_2_1_69_1","doi-asserted-by":"publisher","DOI":"10.5555\/2813767.2813773"},{"key":"e_1_2_1_70_1","doi-asserted-by":"publisher","DOI":"10.5555\/2930583.2930608"},{"key":"e_1_2_1_71_1","volume-title":"Compaction in RocksDB. (2018). Retrieved on","author":"Yabandeh Maysam","year":"2019","unstructured":"Maysam Yabandeh . 2018. Compaction in RocksDB. (2018). Retrieved on 03 Aug. , 2019 from https:\/\/github.com\/facebook\/rocksdb\/wiki\/Compaction. Maysam Yabandeh. 2018. Compaction in RocksDB. (2018). Retrieved on 03 Aug., 2019 from https:\/\/github.com\/facebook\/rocksdb\/wiki\/Compaction."},{"key":"e_1_2_1_72_1","volume-title":"Core Workloads in YCSB. Retrieved on","year":"2019","unstructured":"Yahoo. 2010. Core Workloads in YCSB. Retrieved on 15 Nov. , 2019 from https:\/\/github.com\/brianfrankcooper\/YCSB\/wiki\/Core-Workloads. Yahoo. 2010. Core Workloads in YCSB. Retrieved on 15 Nov., 2019 from https:\/\/github.com\/brianfrankcooper\/YCSB\/wiki\/Core-Workloads."},{"key":"e_1_2_1_73_1","doi-asserted-by":"publisher","DOI":"10.5555\/2750482.2750495"},{"key":"e_1_2_1_74_1","volume-title":"Proceedings of the 33rd International Conference on Massive Storage Systems and Technology (MSST\u201917)","author":"Yao Ting","year":"2017","unstructured":"Ting Yao , Jiguang Wan , Ping Huang , Xubin He , Qingxin Gui , Fei Wu , and Changsheng Xie . 2017 . A light-weight compaction tree to reduce I\/O amplification toward efficient key-value stores . In Proceedings of the 33rd International Conference on Massive Storage Systems and Technology (MSST\u201917) . Ting Yao, Jiguang Wan, Ping Huang, Xubin He, Qingxin Gui, Fei Wu, and Changsheng Xie. 2017. A light-weight compaction tree to reduce I\/O amplification toward efficient key-value stores. In Proceedings of the 33rd International Conference on Massive Storage Systems and Technology (MSST\u201917)."},{"key":"e_1_2_1_75_1","doi-asserted-by":"publisher","DOI":"10.1109\/TPDS.2016.2609912"},{"key":"e_1_2_1_76_1","doi-asserted-by":"publisher","DOI":"10.1145\/2786763.2694370"},{"key":"e_1_2_1_77_1","doi-asserted-by":"publisher","DOI":"10.5555\/3291168.3291202"}],"container-title":["ACM Transactions on Storage"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3453300","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2023,1,1]],"date-time":"2023-01-01T22:46:42Z","timestamp":1672613202000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3453300"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2021,8,16]]},"references-count":77,"journal-issue":{"issue":"3","published-print":{"date-parts":[[2021,8,31]]}},"alternative-id":["10.1145\/3453300"],"URL":"https:\/\/doi.org\/10.1145\/3453300","relation":{},"ISSN":["1553-3077","1553-3093"],"issn-type":[{"value":"1553-3077","type":"print"},{"value":"1553-3093","type":"electronic"}],"subject":[],"published":{"date-parts":[[2021,8,16]]},"assertion":[{"value":"2020-05-01","order":0,"name":"received","label":"Received","group":{"name":"publication_history","label":"Publication History"}},{"value":"2021-03-01","order":1,"name":"accepted","label":"Accepted","group":{"name":"publication_history","label":"Publication History"}},{"value":"2021-08-16","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}