A practical scalable distributed B-tree
- 1 August 2008
- journal article
- Published by Association for Computing Machinery (ACM) in Proceedings of the VLDB Endowment
- Vol. 1 (1) , 598-609
- https://doi.org/10.14778/1453856.1453922
Abstract
Internet applications increasingly rely on scalable data structures that must support high throughput and store huge amounts of data. These data structures can be hard to implement efficiently. Recent proposals have overcome this problem by giving up on generality and implementing specialized interfaces and functionality (e.g., Dynamo [4]). We present the design of a more general and flexible solution: a fault-tolerant and scalable distributed B-tree. In addition to the usual B-tree operations, our B-tree provides some important practical features: transactions for atomically executing several operations in one or more B-trees, online migration of B-tree nodes between servers for load-balancing, and dynamic addition and removal of servers for supporting incremental growth of the system. Our design is conceptually simple. Rather than using complex concurrency and locking protocols, we use distributed transactions to make changes to B-tree nodes. We show how to extend the B-tree and keep additional information so that these transactions execute quickly and efficiently. Our design relies on an underlying distributed data sharing service, Sinfonia [1], which provides fault tolerance and a light-weight distributed atomic primitive. We use this primitive to commit our transactions. We implemented our B-tree and show that it performs comparably to an existing open-source B-tree and that it scales to hundreds of machines. We believe that our approach is general and can be used to implement other distributed data structures easily.Keywords
This publication has 12 references indexed in Scilit:
- Efficient bulk insertion into a distributed ordered tablePublished by Association for Computing Machinery (ACM) ,2008
- DynamoPublished by Association for Computing Machinery (ACM) ,2007
- SinfoniaPublished by Association for Computing Machinery (ACM) ,2007
- Software transactional memory for dynamic-sized data structuresPublished by Association for Computing Machinery (ACM) ,2003
- A scalable content-addressable networkPublished by Association for Computing Machinery (ACM) ,2001
- ChordPublished by Association for Computing Machinery (ACM) ,2001
- LH*—a scalable, distributed data structureACM Transactions on Database Systems, 1996
- Transactional memoryPublished by Association for Computing Machinery (ACM) ,1993
- Efficient locking for concurrent operations on B-treesACM Transactions on Database Systems, 1981
- On optimistic methods for concurrency controlACM Transactions on Database Systems, 1981