KISS-Tree: Smart Latch-Free In-Memory Indexing on Modern Architectures

Total Page:16

File Type:pdf, Size:1020Kb

KISS-Tree: Smart Latch-Free In-Memory Indexing on Modern Architectures KISS-Tree: Smart Latch-Free In-Memory Indexing on Modern Architectures Thomas Kissinger, Benjamin Schlegel, Dirk Habich, Wolfgang Lehner Database Technology Group Technische Universität Dresden 01062 Dresden, Germany {firstname.lastname}@tu-dresden.de ABSTRACT Level 1 virtual Growing main memory capacities and an increasing num- ber of hardware threads in modern server systems led to 16bit fundamental changes in database architectures. Most im- portantly, query processing is nowadays performed on data that is often completely stored in main memory. Despite Level 2 on-demand & of a high main memory scan performance, index structures 4 KB 4 KB 4 KB 4 KB … 4 KB 4 KB compact pointers 10bit are still important components, but they have to be designed from scratch to cope with the specific characteristics of main Level 3 compressed 6bit memory and to exploit the high degree of parallelism. Cur- rent research mainly focused on adapting block-optimized Thread-Local Memory Management Subsystem B+-Trees, but these data structures were designed for sec- ondary memory and involve comprehensive structural main- tenance for updates. Figure 1: KISS-Tree Overview. In this paper, we present the KISS-Tree, a latch-free in- memory index that is optimized for a minimum number of memory accesses and a high number of concurrent updates. indexes) in-memory and use secondary memory (e.g., disks) More specifically, we aim for the same performance as mod- only for persistence. While disk block accesses constituted ern hash-based algorithms but keeping the order-preserving the bottleneck for disk-based systems, modern in-memory nature of trees. We achieve this by using a prefix tree that databases shift the memory hierarchy closer to the CPU incorporates virtual memory management functionality and and face the \memory wall" [13] as new bottleneck. Thus, compression schemes. In our experiments, we evaluate the they have to care for CPU data caches, TLBs, main mem- KISS-Tree on different workloads and hardware platforms ory accesses and access patterns. This essential change also and compare the results to existing in-memory indexes. The affects indexes and forces us to design new index structures KISS-Tree offers the highest reported read performance on that are now optimized for these new design goals. More- current architectures, a balanced read/write performance, over, the movement from disks to main memory dramatically and has a low memory footprint. increased data access bandwidth and reduced latency. In combination with the increasing number of cores on modern hardware, parallel processing of operations on index struc- 1. INTRODUCTION tures imposes a new challenges for us, because the overhead Databases heavily leverage indexes to decrease access of latches became a critical issue. Therefore, building future times for locating single records in large relations. On clas- index structures in a latch-free way is essential for scalability sic disk-based database systems, the B+-Tree [2] is typi- on modern and future systems. cally the structure of choice. B+-Trees are suited for kinds In this paper, we present the KISS-Tree [1] that is an of those systems because they are optimized for block-based order-preserving latch-free in-memory index structure for disk accesses. However, modern server hardware is equipped currently maximum 32bit wide keys and arbitrary values. with high capacities of main memory. Therefore, database It is up to 50% faster compared to the previously reported architectures move from classic disk-based systems towards read performance on the same architecture1 and exceeds its databases that keep the entire data pool (i.e., relations and update performance by orders of magnitude. The KISS-Tree is based on the Generalized Prefix Tree [3] and advances it by minimizing the number of memory accesses needed for Permission to make digital or hard copies of all or part of this work for accessing a key's value. We achieve this reduction by taking personal or classroom use is granted without fee provided that copies are advantage of the virtual memory management functionality not made or distributed for profit or commercial advantage and that copies provided by the operating system and the underlying hard- bear this notice and the full citation on the first page. To copy otherwise, to republish, to post on servers or to redistribute to lists, requires prior specific ware as well as compression mechanisms. Figure 1 shows an permission and/or a fee. overview of the KISS-Tree structure. As shown, the entire Proceedings of the Eighth International Workshop on Data Management on 1 New Hardware (DaMoN 2012) , May 21, 2012, Scottsdale, AZ, USA Due to the unavailability of source code and binaries, we Copyright 2012 ACM 978-1-4503-1445-9 ...$10.00. refer to the figures published in [5]. SIMD Blocking Cache line Blocking 1 31 5bit 0 1 2 … 14 15 4bit Page Blocking I I 14 15 1 14 26 5bit 0 1 2 … 14 15 0 1 2 … 14 15 4bit … … … … … … I I I I I Key Key … … … Key Key Value Value 0 1 2 … 14 15 4bit 0 2 2bit … Value Value … … Key Key Key Key Key Key Key Key Key Key Value Value Value Value Value Value Value Value … Value Value (a) FAST. (b) Prefix Tree (k0 = 4). (c) CTrie. Figure 2: Existing In-Memory Index Structures. index structure comprises only three tree levels. Each level a fixed number of pointers; the key is split into fragments of leverages different techniques to find a trade-off between per- an equal length k0 where each fragment selects one pointer formance and memory consumption on the respective level. of a certain node. Starting from the most significant frag- ment, the path through the nodes is then given by following 2. RELATED WORK the pointers that are selected by the fragments, i.e., the i-th fragment selects the pointer within the node on level i. Fig- In-memory indexing is a well investigated topic in ure 2(b) shows an exemplary prefix tree with k0 = 4. The database research since years. Early research mainly fo- first tree level differentiates the first 4 bits of the key, the sec- cused on reducing the memory footprint of traditional data ond level the next 4 bits, and so on. Prefix trees do not have structures and making the data structures cache-conscious. to care for cache line sizes because there is only one memory For example, the T-Tree [8] reduces the number of pointers access per tree level necessary. Also the number of memory of traditional AVL-trees [6] while the CSB+-Tree [11] is an accesses is limited by the length of the key, for instance, a almost pointer-free and thus cache-conscious variant of the 32bit key involves a maximum of 8 memory accesses. In or- traditional B+-Tree [2]. These data structures usually offer der to reduce the overall tree size and the memory accesses, a good read performance. However, they struggle with prob- a prefix tree allows dynamic expansion and only unrolls tree lems when updates are performed by multiple threads in par- levels as far as needed like shown on the left hand side of allel. All block-based data structures require comprehensive the example. Because of the dynamic expansion, the prefix balancing operations when keys are removed or added. This tree has to store the original key besides the value in the implicates complex latching schemes [7] that cause an oper- content node at the end of the path. The characteristics ation to latch across multiple index nodes and hence blocks of the prefix tree allow a balanced read/update performance other read/write operations even if they work on different and parallel operations, because there is not much structural keys. Even if there is no node splitting/merging required, maintenance necessary. B+-Tree structures have to latch coarse-grained at page- A weak point of the prefix tree is the high memory over- level, which increases contention. Moreover, it is not possi- head that originates from sparely occupied nodes. The ble to apply optimistic latch-free mechanisms, for instance CTrie [10] removes this overhead by compressing each node. atomic instructions, without the help of hardware trans- This is achieved by adding a 32bit bitmap (limits the k0 to actional memory(HTM). To overcome this critical point, 5) to the beginning of each node, which indicates the occu- PALM [12] took a synchronous processing approach on the pied buckets in that node. Using this bitmap, the node only B+-Tree. Instead of processing single operations directly, has to store the buckets in use. Due to the compression, the operations are buffered and each thread processes the nodes grow and shrink. Thus, the CTrie raises additional operations for its assigned portion of the tree. This approach costs for updates, because growing and shrinking nodes re- eliminates the need for any latches on tree elements, but still quires data copying. To allow efficient parallel operations suffers from the high structural maintenance overhead of the on the CTrie, it was designed latch-free. Synchronization B+-Tree. is done via atomic compare-and-swap instructions, like it is The FAST approach [5] gears even more in the direction possible in the basic prefix tree. However, because nodes of fast reads and slow updates. FAST uses an implicit data and buckets inside nodes are moving as a result of the com- layout, as shown in Figure 2(a), which gets along without pression, the CTrie uses I-nodes for indirection as depicted any pointers and is optimized for the memory hierarchy of in Figure 2(c). This indirection creates a latch-free index todays CPUs.
Recommended publications
  • CS302ES Regulations
    DATA STRUCTURES Subject Code: CS302ES Regulations : R18 - JNTUH Class: II Year B.Tech CSE I Semester Department of Computer Science and Engineering Bharat Institute of Engineering and Technology Ibrahimpatnam-501510,Hyderabad DATA STRUCTURES [CS302ES] COURSE PLANNER I. CourseOverview: This course introduces the core principles and techniques for Data structures. Students will gain experience in how to keep a data in an ordered fashion in the computer. Students can improve their programming skills using Data Structures Concepts through C. II. Prerequisite: A course on “Programming for Problem Solving”. III. CourseObjective: S. No Objective 1 Exploring basic data structures such as stacks and queues. 2 Introduces a variety of data structures such as hash tables, search trees, tries, heaps, graphs 3 Introduces sorting and pattern matching algorithms IV. CourseOutcome: Knowledge Course CO. Course Outcomes (CO) Level No. (Blooms Level) CO1 Ability to select the data structures that efficiently L4:Analysis model the information in a problem. CO2 Ability to assess efficiency trade-offs among different data structure implementations or L4:Analysis combinations. L5: Synthesis CO3 Implement and know the application of algorithms for sorting and pattern matching. Data Structures Data Design programs using a variety of data structures, CO4 including hash tables, binary and general tree L6:Create structures, search trees, tries, heaps, graphs, and AVL-trees. V. How program outcomes areassessed: Program Outcomes (PO) Level Proficiency assessed by PO1 Engineeering knowledge: Apply the knowledge of 2.5 Assignments, Mathematics, science, engineering fundamentals and Tutorials, Mock an engineering specialization to the solution of II B Tech I SEM CSE Page 45 complex engineering problems.
    [Show full text]
  • Haskell Communities and Activities Report
    Haskell Communities and Activities Report http://tinyurl.com/haskcar Thirty Fourth Edition — May 2018 Mihai Maruseac (ed.) Chris Allen Christopher Anand Moritz Angermann Francesco Ariis Heinrich Apfelmus Gershom Bazerman Doug Beardsley Jost Berthold Ingo Blechschmidt Sasa Bogicevic Emanuel Borsboom Jan Bracker Jeroen Bransen Joachim Breitner Rudy Braquehais Björn Buckwalter Erik de Castro Lopo Manuel M. T. Chakravarty Eitan Chatav Olaf Chitil Alberto Gómez Corona Nils Dallmeyer Tobias Dammers Kei Davis Dimitri DeFigueiredo Richard Eisenberg Maarten Faddegon Dennis Felsing Olle Fredriksson Phil Freeman Marc Fontaine PÁLI Gábor János Michał J. Gajda Ben Gamari Michael Georgoulopoulos Andrew Gill Mikhail Glushenkov Mark Grebe Gabor Greif Adam Gundry Jennifer Hackett Jurriaan Hage Martin Handley Bastiaan Heeren Sylvain Henry Joey Hess Kei Hibino Guillaume Hoffmann Graham Hutton Nicu Ionita Judah Jacobson Patrik Jansson Wanqiang Jiang Dzianis Kabanau Nikos Karagiannidis Anton Kholomiov Oleg Kiselyov Ivan Krišto Yasuaki Kudo Harendra Kumar Rob Leslie David Lettier Ben Lippmeier Andres Löh Rita Loogen Tim Matthews Simon Michael Andrey Mokhov Dino Morelli Damian Nadales Henrik Nilsson Wisnu Adi Nurcahyo Ulf Norell Ivan Perez Jens Petersen Sibi Prabakaran Bryan Richter Herbert Valerio Riedel Alexey Radkov Vaibhav Sagar Kareem Salah Michael Schröder Christian Höner zu Siederdissen Ben Sima Jeremy Singer Gideon Sireling Erik Sjöström Chris Smith Michael Snoyman David Sorokin Lennart Spitzner Yuriy Syrovetskiy Jonathan Thaler Henk-Jan van Tuyl Tillmann Vogt Michael Walker Li-yao Xia Kazu Yamamoto Yuji Yamamoto Brent Yorgey Christina Zeller Marco Zocca Preface This is the 34th edition of the Haskell Communities and Activities Report. This report has 148 entries, 5 more than in the previous edition.
    [Show full text]
  • Concurrent Tries with Efficient Non-Blocking Snapshots
    Concurrent Tries with Efficient Non-Blocking Snapshots Aleksandar Prokopec Nathan G. Bronson Phil Bagwell Martin Odersky EPFL Stanford Typesafe EPFL aleksandar.prokopec@epfl.ch [email protected] [email protected] martin.odersky@epfl.ch Abstract root T1: CAS root We describe a non-blocking concurrent hash trie based on shared- C3 T2: CAS C3 memory single-word compare-and-swap instructions. The hash trie supports standard mutable lock-free operations such as insertion, C2 ··· C2 C2’ ··· removal, lookup and their conditional variants. To ensure space- efficiency, removal operations compress the trie when necessary. C1 k3 C1’ k3 C1 k3 k5 We show how to implement an efficient lock-free snapshot op- k k k k k k k eration for concurrent hash tries. The snapshot operation uses a A 1 2 B 1 2 4 1 2 single-word compare-and-swap and avoids copying the data struc- ture eagerly. Snapshots are used to implement consistent iterators Figure 1. Hash tries and a linearizable size retrieval. We compare concurrent hash trie performance with other concurrent data structures and evaluate the performance of the snapshot operation. 2. We introduce a non-blocking, atomic constant-time snapshot Categories and Subject Descriptors E.1 [Data structures]: Trees operation. We show how to use them to implement atomic size retrieval, consistent iterators and an atomic clear operation. General Terms Algorithms 3. We present benchmarks that compare performance of concur- Keywords hash trie, concurrent data structure, snapshot, non- rent tries against other concurrent data structures across differ- blocking ent architectures. 1. Introduction Section 2 illustrates usefulness of snapshots.
    [Show full text]
  • A Contention Adapting Approach to Concurrent Ordered Sets$
    A Contention Adapting Approach to Concurrent Ordered SetsI Konstantinos Sagonasa,b, Kjell Winblada,∗ aDepartment of Information Technology, Uppsala University, Sweden bSchool of Electrical and Computer Engineering, National Technical University of Athens, Greece Abstract With multicores being ubiquitous, concurrent data structures are increasingly important. This article proposes a novel approach to concurrent data structure design where the data structure dynamically adapts its synchronization granularity based on the detected contention and the amount of data that operations are accessing. This approach not only has the potential to reduce overheads associated with synchronization in uncontended scenarios, but can also be beneficial when the amount of data that operations are accessing atomically is unknown. Using this adaptive approach we create a contention adapting search tree (CA tree) that can be used to implement concurrent ordered sets and maps with support for range queries and bulk operations. We provide detailed proof sketches for the linearizability as well as deadlock and livelock freedom of CA tree operations. We experimentally compare CA trees to state-of-the-art concurrent data structures and show that CA trees beat the best of the data structures that we compare against by over 50% in scenarios that contain basic set operations and range queries, outperform them by more than 1200% in scenarios that also contain range updates, and offer performance and scalability that is better than many of them on workloads that only contain basic set operations. Keywords: concurrent data structures, ordered sets, linearizability, range queries 1. Introduction With multicores being widespread, the need for efficient concurrent data structures has increased.
    [Show full text]
  • Data Structures and Algorithms for Data-Parallel Computing in a Managed Runtime
    Data Structures and Algorithms for Data-Parallel Computing in a Managed Runtime THÈSE NO 6264 (2014) PRÉSENTÉE LE 1ER SEPTEMBRE 2014 À LA FACULTÉ INFORMATIQUE ET COMMUNICATIONS LABORATOIRE DE MÉTHODES DE PROGRAMMATION 1 PROGRAMME DOCTORAL EN INFORMATIQUE, COMMUNICATIONS ET INFORMATION ÉCOLE POLYTECHNIQUE FÉDÉRALE DE LAUSANNE POUR L'OBTENTION DU GRADE DE DOCTEUR ÈS SCIENCES PAR Aleksandar PROKOPEC acceptée sur proposition du jury: Prof. O. N. A. Svensson, président du jury Prof. M. Odersky, directeur de thèse Prof. D. S. Lea, rapporteur Prof. V. Kuncak, rapporteur Prof. E. Meijer, rapporteur Suisse 2014 Go confidently in the direction of your dreams. Live the life you’ve imagined. — Thoreau To my parents and everything they gave me in this life. Acknowledgements Writing an acknowledgment section is a tricky task. I always feared omitting somebody really important here. Through the last few years, whenever I remembered a person that influenced my life in some way, I made a note to put that person here. I really hope I didn’t forget anybody important. And by important I mean: anybody who somehow contributed to me obtaining a PhD in computer science. So get ready – this will be a long acknowledgement section. If somebody feels left out, he should know that it was probably by mistake. Anyway, here it goes. First of all, I would like to thank my PhD thesis advisor Martin Odersky for letting me be a part of the Scala Team at EPFL during the last five years. Being a part of development of something as big as Scala was an amazing experience and I am nothing but thankful for it.
    [Show full text]
  • Size Oblivious Programming with Infinimem
    Size Oblivious Programming with InfiniMem ? Sai Charan Koduru, Rajiv Gupta, Iulian Neamtiu Department of Computer Science and Engineering University of California, Riverside {scharan,gupta,neamtiu}@cs.ucr.edu Abstract. Many recently proposed BigData processing frameworks make programming easier, but typically expect the datasets to fit in the mem- ory of either a single multicore machine or a cluster of multicore ma- chines. When this assumption does not hold, these frameworks fail. We introduce the InfiniMem framework that enables size oblivious processing of large collections of objects that do not fit in memory by making them disk-resident. InfiniMem is easy to program with: the user just indicates the large collections of objects that are to be made disk-resident, while InfiniMem transparently handles their I/O management. The InfiniMem library can manage a very large number of objects in a uniform manner, even though the objects have different characteristics and relationships which, when processed, give rise to a wide range of access patterns re- quiring different organizations of data on the disk. We demonstrate the ease of programming and versatility of InfiniMem with 3 different prob- abilistic analytics algorithms, 3 different graph processing size oblivious frameworks; they require minimal effort, 6{9 additional lines of code. We show that InfiniMem can successfully generate a mesh with 7.5 mil- lion nodes and 300 million edges (4.5 GB on disk) in 40 minutes and it performs the PageRank computation on a 14GB graph with 134 million vertices and 805 million edges at 14 minutes per iteration on an 8-core machine with 8 GB RAM.
    [Show full text]
  • Non-Blocking Interpolation Search Trees with Doubly-Logarithmic Running Time
    Non-Blocking Interpolation Search Trees with Doubly-Logarithmic Running Time Trevor Brown Aleksandar Prokopec Dan Alistarh University of Waterloo Oracle Labs Institute of Science and Technology Canada Switzerland Austria [email protected] [email protected] [email protected] Abstract are surprisingly robust to distributional skew, which sug- Balanced search trees typically use key comparisons to guide gests that our data structure can be a promising alternative their operations, and achieve logarithmic running time. By to classic concurrent search structures. relying on numerical properties of the keys, interpolation CCS Concepts • Theory of computation → Concur- search achieves lower search complexity and better perfor- rent algorithms; Shared memory algorithms; • Computing mance. Although interpolation-based data structures were methodologies → Concurrent algorithms; investigated in the past, their non-blocking concurrent vari- ants have received very little attention so far. Keywords concurrent data structures, search trees, inter- In this paper, we propose the first non-blocking imple- polation, non-blocking algorithms mentation of the classic interpolation search tree (IST) data structure. For arbitrary key distributions, the data structure ensures worst-case O¹logn + pº amortized time for search, 1 Introduction insertion and deletion traversals. When the input key distri- Efficient search data structures are critical in practical set- butions are smooth, lookups run in expected O¹log logn + pº tings such as databases, where the large amounts of under- time, and insertion and deletion run in expected amortized lying data are usually paired with high search volumes, and O¹log logn + pº time, where p is a bound on the number with high amounts of concurrency on the hardware side, of threads.
    [Show full text]
  • Efficient Support for Range Queries and Range Updates Using
    Efficient Support for Range Queries and Range Updates Using Contention Adapting Search Trees? Konstantinos Sagonas and Kjell Winblad Department of Information Technology, Uppsala University, Sweden Abstract. We extend contention adapting trees (CA trees), a family of concur- rent data structures for ordered sets, to support linearizable range queries, range updates, and operations that atomically operate on multiple keys such as bulk insertions and deletions. CA trees differ from related concurrent data structures by adapting themselves according to the contention level and the access patterns to scale well in a multitude of scenarios. Variants of CA trees with different per- formance characteristics can be derived by changing their sequential component. We experimentally compare CA trees to state-of-the-art concurrent data structures and show that CA trees beat the best data structures we compare against with up to 57% in scenarios that contain basic set operations and range queries, and outperform them by more than 1200% in scenarios that also contain range updates. 1 Introduction Data intensive applications on multicores need efficient and scalable concurrent data structures. Many concurrent data structures for ordered sets have recently been proposed (e.g [2,4,8, 11]) that scale well on workloads containing single key operations, e.g. insert, remove and get. However, most of these data structures lack efficient and scalable support for operations that atomically access multiple elements, such as range queries, range updates, bulk insert and remove, which are important for various applications such as in-memory databases. Operations that operate on a single element and those that operate on multiple ones have inherently conflicting requirements.
    [Show full text]
  • Lessons Learned in Designing TM-Supported Range Queries
    Leaplist: Lessons Learned in Designing TM-Supported Range Queries Hillel Avni Nir Shavit Adi Suissa Tel-Aviv University MIT and Tel-Aviv University Department of Computer Science Tel-Aviv 69978, Israel [email protected] Ben-Gurion University of the Negev [email protected] Be’er Sheva, Israel [email protected] Abstract that certain blocks of code should be executed atomically relative We introduce Leap-List, a concurrent data-structure that is tailored to one another. Recently, several fast concurrent binary search-tree to provide linearizable range queries. A lookup in Leap-List takes algorithms using STM have been introduced by Afek et al. [2] and O(log n) and is comparable to a balanced binary search tree or Bronson et al. [4]. Although they offer good performance for Up- to a skip-list. However, in Leap-List, each node holds up-to K dates, Removes and Finds, they achieve this performance, in part, immutable key-value pairs, so collecting a linearizable range is K by carefully limiting the amount of data protected by the transac- times faster than the same operation performed non-linearizably on tions. However, as we show empirically in this paper, computing a skip-list. a range query means protecting all keys in the range from modifi- We show how software transactional memory support in a com- cation during a transaction, leading to poor performance using the mercial compiler helped us create an efficient lock-based imple- direct STM approach. mentation of Leap-List. We used this STM to implement short Another simple approach is to lock the entire data structure, transactions which we call Locking Transactions (LT), to acquire and compute a range query while it is locked.
    [Show full text]
  • Bit Flip Resilient Prefix Tree
    Master thesis Database Group Bit Flip Resilient Prefix Tree Supervisors: Author: Prof. Dr.-Ing Wolfgang Lehner, Mina Ahmadi Dr.-Ing. Dirk Habich, Dipl.-Inf. Till Kolditz February 2016 Aufgabenstellung ¢£¤¥¦§ © © ¤¦ £ £ ¨ Master’s Thesis Description !"#$%&'()* +,-./,-0 102.3-4 526-0,40 7,52 7073-8 9:-3;<:=;9 ,2. 6,=,6598 >8 .06-0,452< 9-,245493- ?0,9;-0 45@04A B:5C0 9:54 ,C43 526-0,404 020-<8 0??5650268D 320 .-,/>,6E 54 9:0 .06-0,40 52 -0C5,>5C598 ,2. ,2 526-0,40 52 :,-./,-0 0--3- -,904A F20 =,-956;C,- 0??069 54 9:0 >59 ?C5=D /:56: 6,;404 , 452<C0 3- 7;C95=C0 >594 93 6:,2<0 9:0 49,90 .;0 93 4010-,C 52?C;0260 C5E0 :0,9D 634756 -,84 3- 0C069-56,C 6-3449,CEA GC-0,.8 93.,8D 9:0-0 ,-0 49;.504 -010,C52< 4010-0 7;C95H>59 ?C5= -,904 52 C,-<0 637=;90- 4849074D /:56: 6,2239 >0 :,2.C0. >8 98=56,C 0--3- .0906952< ,2. 63--06952< IJKKL 7,52 7073-8A M010-9:0C044D 9:54 :,-./,-0 9-02. ,CC3/0. 9:0 .010C3=7029 3? 7,52H7073-8 6029-56 .,9,>,40 4849074 73-0 9:,2 , .06,.0 ,<3A N:040 4849074 493-0 ,CC >;452044 .,9, 52 7,52 7073-8D /:0-0,4 9:08 E00= 4010-,C ,..59532,C .,9, 49-;69;-04 93 7,2,<0 ,CC 9:0 .,9, ,2. ,660C0-,90 ,66044 93 9:0 .,9, 15, 52.0O 49-;69;-04A F? 9:0 C,990-D 320 ?,75C8 -06029C8 =-3=340.
    [Show full text]
  • Persistent Adaptive Radix Trees: Efficient Fine-Grained Updates to Immutable Data
    Persistent Adaptive Radix Trees: Efficient Fine-Grained Updates to Immutable Data Ankur Dave, Joseph E. Gonzalez, Michael J. Franklin, Ion Stoica University of California, Berkeley Abstract of failure, these systems rebuild the lost output by simply re-executing the tasks on their inputs. Since inputs are Immutability dramatically simplifies fault tolerance, strag- immutable and tasks are independent and deterministic, gler mitigation, and data consistency and is an essential re-execution is guaranteed to generate the same result. To part of widely-used distributed batch analytics systems bound recovery time for long-running queries, they period- including MapReduce, Dryad, and Spark. However, these ically checkpoint the intermediate results. Since datasets systems are increasingly being used for new applications are never modified, checkpoints can be constructed asyn- like stream processing and incremental analytics, which chronously without delaying the query [14]. Immutability often demand fine-grained updates and are seemingly at thus enables both efficient task recovery and asynchronous odds with the essential assumption of immutability. In checkpointing. this paper we introduce the persistent adaptive radix tree (PART), a map data structure designed for in-memory an- However, distributed batch analytics tasks are increas- alytics that supports efficient fine-grained updates without ingly transitioning to streaming applications in which compromising immutability. PART (1) allows applica- data and their derived statistics are both large and rapidly tions to trade off latency for throughput using batching, changing. In contrast to batch analytics, these new ap- (2) supports efficient scans using an optimized memory plications require the ability to efficiently perform sparse layout and periodic compaction, and (3) achieves efficient fine-grained updates to very large distributed statistics fault recovery using incremental checkpoints.
    [Show full text]
  • Fundamental Data Structures Zuyd Hogeschool, ICT Contents
    Fundamental Data Structures Zuyd Hogeschool, ICT Contents 1 Introduction 1 1.1 Abstract data type ........................................... 1 1.1.1 Examples ........................................... 1 1.1.2 Introduction .......................................... 2 1.1.3 Defining an abstract data type ................................. 2 1.1.4 Advantages of abstract data typing .............................. 5 1.1.5 Typical operations ...................................... 5 1.1.6 Examples ........................................... 6 1.1.7 Implementation ........................................ 7 1.1.8 See also ............................................ 8 1.1.9 Notes ............................................. 8 1.1.10 References .......................................... 8 1.1.11 Further ............................................ 9 1.1.12 External links ......................................... 9 1.2 Data structure ............................................. 9 1.2.1 Overview ........................................... 10 1.2.2 Examples ........................................... 10 1.2.3 Language support ....................................... 11 1.2.4 See also ............................................ 11 1.2.5 References .......................................... 11 1.2.6 Further reading ........................................ 11 1.2.7 External links ......................................... 12 2 Sequences 13 2.1 Array data type ............................................ 13 2.1.1 History ...........................................
    [Show full text]