000256000 001__ 256000
000256000 005__ 20190317001005.0
000256000 0247_ $$a10.1145/3064176.3064193$$2doi
000256000 037__ $$aCONF
000256000 245__ $$aFloDB: Unlocking Memory in Persistent Key-Value Stores
000256000 260__ $$c2017-04-23
000256000 269__ $$a2017-04-23
000256000 300__ $$a15
000256000 336__ $$aConference Papers
000256000 520__ $$aLog-structured merge (LSM) data stores enable to store and process large volumes of data while maintaining good performance. They mitigate the I/O bottleneck by absorbing updates in a memory layer and transferring them to the disk layer in sequential batches. Yet, the LSM architecture fundamentally requires elements to be in sorted order. As the amount of data in memory grows, maintaining this sorted order becomes increasingly costly. Contrary to intuition, existing LSM systems could actually lose throughput with larger memory components. In this paper, we introduce FloDB, an LSM memory component architecture which allows throughput to scale on modern multicore machines with ample memory sizes. The main idea underlying FloDB is essentially to bootstrap the traditional LSM architecture by adding a small in-memory buffer layer on top of the memory component. This buffer offers low-latency operations, masking the write latency of the sorted memory component. Integrating this buffer in the classic LSM memory component to obtain FloDB is not trivial and requires revisiting the algorithms of the user-facing LSM operations (search, update, scan). FloDB's two layers can be implemented with state-of-the-art, highly-concurrent data structures. This way, as we show in the paper, FloDB eliminates significant synchronization bottlenecks in classic LSM designs, while offering a rich LSM API. We implement FloDB as an extension of LevelDB, Google's popular LSM key-value store. We compare FloDB's performance to that of state-of-the-art LSMs. In short, FloDB's performance is up to one order of magnitude higher than that of the next best-performing competitor in a wide range of multi-threaded workloads.
000256000 6531_ $$akey-value stores
000256000 6531_ $$alog-structured merge
000256000 6531_ $$aLSM
000256000 6531_ $$amemory
000256000 6531_ $$apersistence
000256000 700__ $$aBalmau, Oana Maria$$0249412
000256000 700__ $$aGuerraoui, Rachid$$0240335
000256000 700__ $$aTrigonakis, Vasileios$$0245903
000256000 700__ $$aZablotchi, Mihail Igor$$0249111
000256000 7112_ $$dApril 23-26, 2017$$cBelgrade, Serbia$$aEuroSys
000256000 773__ $$tProceedings of the Twelfth European Conference on Computer Systems
000256000 8560_ $$foana.balmau@epfl.ch
000256000 8564_ $$uhttps://infoscience.epfl.ch/record/256000/files/FloDB-EuroSys.pdf$$s765371
000256000 909C0 $$xU10700$$pLABOS$$mwilly.zwaenepoel@epfl.ch$$0252226
000256000 909C0 $$xU10407$$pDCL$$mrachid.guerraoui@epfl.ch$$0252114
000256000 909CO $$qGLOBAL_SET$$pconf$$pIC$$ooai:infoscience.epfl.ch:256000
000256000 960__ $$aoana.balmau@epfl.ch
000256000 961__ $$amanon.velasco@epfl.ch
000256000 973__ $$rREVIEWED$$aEPFL
000256000 980__ $$aCONF
000256000 981__ $$aoverwrite