Maintaining order in a generalized linked list
Acta Informatica
AVL-trees for localized search
Information and Control
Two algorithms for maintaining order in a list
STOC '87 Proceedings of the nineteenth annual ACM symposium on Theory of computing
The input/output complexity of sorting and related problems
Communications of the ACM
Making data structures persistent
Journal of Computer and System Sciences - 18th Annual ACM Symposium on Theory of Computing (STOC), May 28-30, 1986
SIGMOD '91 Proceedings of the 1991 ACM SIGMOD international conference on Management of data
Comparison of access methods for time-evolving data
ACM Computing Surveys (CSUR)
ACM Computing Surveys (CSUR)
An Efficient Multiversion Access Structure
IEEE Transactions on Knowledge and Data Engineering
Exploiting A History Database for Backup
VLDB '93 Proceedings of the 19th International Conference on Very Large Data Bases
Proceedings of the 5th GI-Conference on Theoretical Computer Science
Two Simplified Algorithms for Maintaining Order in a List
ESA '02 Proceedings of the 10th Annual European Symposium on Algorithms
An asymptotically optimal multiversion B-tree
The VLDB Journal — The International Journal on Very Large Data Bases
Maintaining order in a linked list
STOC '82 Proceedings of the fourteenth annual ACM symposium on Theory of computing
I/O-efficient point location using persistent B-trees
Journal of Experimental Algorithmics (JEA)
Algorithms and data structures for external memory
Foundations and Trends® in Theoretical Computer Science
External-memory computational geometry
SFCS '93 Proceedings of the 1993 IEEE 34th Annual Foundations of Computer Science
Compressed persistent index for efficient rank/select queries
WADS'13 Proceedings of the 13th international conference on Algorithms and Data Structures
Hi-index | 0.00 |
We present I/O-efficient fully persistent B-Trees that support range searches at any version in O(logB n + t/B) I/Os and updates at any version in O(logB n + log2 B) amortized I/Os, using space O(m/B) disk blocks. By n we denote the number of elements in the accessed version, by m the total number of updates, by t the size of the query's output, and by B the disk block size. The result improves the previous fully persistent B-Trees of Lanka and Mays by a factor of O(logB m) for the range query complexity and O(logB n) for the update complexity. To achieve the result, we first present a new B-Tree implementation that supports searches and updates in O(logB n) I/Os, using O(n/B) blocks of space. Moreover, every update makes in the worst case a constant number of modifications to the data structure. We make these B-Trees fully persistent using an I/O-efficient method for full persistence that is inspired by the node-splitting method of Driscoll et al. The method we present is interesting in its own right and can be applied to any external memory pointer based data structure with maximum in-degree din bounded by a constant and out-degree bounded by O(B), where every node occupies a constant number of blocks on disk. The I/O-overhead per modification to the ephemeral structure is O(din log2 B) amortized I/Os, and the space overhead is O(din/B) amortized blocks. Access to a field of an ephemeral block is supported in O(log2 din) worst case I/Os.