Constant-Time Lazy Snapshots Supporting General Queries on Concurrent Data Structures

We present a general transformation that takes any concurrent data structure written using CAS and adds wait-free linearizable query operations to it. These query operations may access arbitrary parts of the data structure, and do not interfere with the progress or running time of other operations. For example, our transformation can be used to add efficient and linearizable range queries, predecessor queries, and top-k queries to existing concurrent set data structures. We achieve this by presenting an efficient technique for taking lazy snapshots of CAS-based data structures.

[1]  Alfons Kemper,et al.  Fast Serializable Multi-Version Concurrency Control for Main-Memory Database Systems , 2015, SIGMOD Conference.

[2]  Erez Petrank,et al.  Lock-Free Data-Structure Iterators , 2013, DISC.

[3]  Idit Keidar,et al.  On maintaining multiple versions in STM , 2010, PODC.

[4]  Rachid Guerraoui,et al.  Partial snapshot objects , 2008, SPAA '08.

[5]  Sathya Peri,et al.  A TimeStamp Based Multi-version STM Algorithm , 2014, ICDCN.

[6]  David P. Reed,et al.  Naming and synchronization in a decentralized computer system , 1978 .

[7]  Faith Ellen,et al.  Non-blocking binary search trees , 2010, PODC.

[8]  Martin Odersky,et al.  Concurrent tries with efficient non-blocking snapshots , 2012, PPoPP '12.

[9]  Hagit Attiya,et al.  Single-Version STMs Can Be Multi-version Permissive (Extended Abstract) , 2011, ICDCN.

[10]  Bengt Jonsson,et al.  Lock-free Contention Adapting Search Trees , 2018, SPAA.

[11]  Faith Ellen How Hard Is It to Take a Snapshot? , 2005, SOFSEM.

[12]  Idit Keidar,et al.  KiWi: A Key-Value Map for Scalable Real-Time Analytics , 2017, PPoPP.

[13]  Marina Papatriantafilou,et al.  Linearizable Wait-Free Iteration Operations in Shared Double-Ended Queues , 2017, Parallel Process. Lett..

[14]  Robert E. Tarjan,et al.  Planar point location using persistent search trees , 1986, CACM.

[15]  Marina Papatriantafilou,et al.  A Consistency Framework for Iteration Operations in Concurrent Data Structures , 2015, 2015 IEEE International Parallel and Distributed Processing Symposium.

[16]  Nikolaos D. Kallimanis,et al.  Wait-Free Concurrent Graph Objects with Dynamic Traversals , 2015, OPODIS.

[17]  Philip A. Bernstein,et al.  Categories and Subject Descriptors: H.2.4 [Database Management]: Systems. , 2022 .

[18]  Bapi Chatterjee Lock-free Linearizable 1-Dimensional Range Queries , 2017, ICDCN.

[19]  Andrew Pavlo,et al.  An Empirical Evaluation of In-Memory Multi-Version Concurrency Control , 2017, Proc. VLDB Endow..

[20]  Trevor Brown,et al.  Harnessing epoch-based reclamation for efficient range queries , 2018, PPOPP.

[21]  Aleksandar Prokopec SnapQueue: lock-free queue with constant time snapshots , 2015, Scala@PLDI.

[22]  Keir Fraser,et al.  Practical lock-freedom , 2003 .

[23]  Faith Ellen,et al.  A general technique for non-blocking trees , 2014, PPoPP '14.

[24]  Maurice Herlihy,et al.  Linearizability: a correctness condition for concurrent objects , 1990, TOPL.

[25]  Neeraj Mittal,et al.  Fast concurrent lock-free binary search trees , 2014, PPoPP.

[26]  Trevor Brown,et al.  Range Queries in Non-blocking k-ary Search Trees , 2012, OPODIS.

[27]  Marina Papatriantafilou,et al.  Of Concurrent Data Structures and Iterations , 2015, Algorithms, Probability, Networks, and Games.

[28]  Christos H. Papadimitriou,et al.  On Concurrency Control by Multiple Versions , 1982, TODS.

[29]  Panagiota Fatourou,et al.  Persistent Non-Blocking Binary Search Trees Supporting Wait-Free Range Queries , 2018, SPAA.

[30]  Kunle Olukotun,et al.  A practical concurrent binary search tree , 2010, PPoPP '10.

[31]  Maged M. Michael,et al.  Simple, fast, and practical non-blocking and blocking concurrent queue algorithms , 1996, PODC '96.

[32]  Timothy L. Harris,et al.  A Pragmatic Implementation of Non-blocking Linked-Lists , 2001, DISC.

[33]  Guy E. Blelloch,et al.  Multiversion Concurrency with Bounded Delay and Precise Garbage Collection , 2018, SPAA.

[34]  Robert E. Tarjan,et al.  Making data structures persistent , 1986, STOC '86.

[35]  Zhiyu Liu,et al.  Linearizable Iterators for Concurrent Data Structures , 2017, ArXiv.

[36]  Craig Freedman,et al.  Hekaton: SQL server's memory-optimized OLTP engine , 2013, SIGMOD '13.

[37]  Thomas D. Dickerson,et al.  Adapting Persistent Data Structures for Concurrency and Speculation , 2020, ArXiv.

[38]  Nir Shavit,et al.  Atomic snapshots of shared memory , 1990, JACM.

[39]  Faith Ellen,et al.  The amortized complexity of non-blocking binary search trees , 2014, PODC '14.

[40]  Nir Shavit,et al.  Leaplist: lessons learned in designing tm-supported range queries , 2013, PODC '13.

[41]  Robert E. Tarjan,et al.  Fully persistent lists with catenation , 1991, SODA '91.

[42]  Dan R. K. Ports,et al.  Serializable Snapshot Isolation in PostgreSQL , 2012, Proc. VLDB Endow..

[43]  Wojciech M. Golab,et al.  Linearizable implementations do not suffice for randomized distributed computation , 2011, STOC '11.

[44]  Prasad Jayanti f-arrays: implementation and applications , 2002, PODC '02.