English

Persistent Cache-oblivious Streaming Indexes

Data Structures and Algorithms 2017-07-27 v1

Abstract

In [SPAA2007], Bender et al. define a streaming B-tree (or index) as one that supports updates in amortized o(1)o(1) IOs, and present a structure achieving amortized O((logN)/B)O((\log N)/B) IOs and queries in O(logN)O(\log N) IOs. We extend their result to the partially-persistent case. For a version vv, let NvN_v be the number of keys accessible at vv and NN be the total number of updates. We give a data structure using space O(N)O(N), supporting updates to a leaf version vv with O((logNv)/B)O((\log N_{v})/B) amortized IOs and answering range queries returning ZZ elements with O(logNv+Z/B)O(\log N_{v} + Z/B) IOs on average (where the average is over all queries covering disjoint key ranges at a given version). This is the first persistent `streaming' index we are aware of, i.e. that supports updates in o(1)o(1) IOs and supports efficient range queries.

Cite

@article{arxiv.1707.08186,
  title  = {Persistent Cache-oblivious Streaming Indexes},
  author = {Andrew Twigg},
  journal= {arXiv preprint arXiv:1707.08186},
  year   = {2017}
}