Cache-Oblivious Representation of B-Tree Structures

Lukáš Ondráček, Ondřej Mička

We present a data structure CORoBTS for storing a search tree with all leaves at the same depth and vertices of arity between chosen constants $a$ and $b$ in a cache-oblivious way. It provides operations for inserting an $a$-ary subtree and removing a subtree; both have an amortized I/O complexity $\mathcal{O}(S\cdot(\log^2 N)/ B + \log_B N \cdot \log\log S + 1)$ and amortized time complexity $\mathcal{O}(S\cdot\log^2 N)$, where $S$ is the size of the subtree and $N$ size of the whole stored tree. The tree allows searching with an optimal I/O complexity $\mathcal{O}(\log_B{N})$ and is stored in a linear space. We use the data structure as a top space-time tree in the cache-oblivious partially persistent array proposed by Davoodi et al. [DFI\"O14]. The space complexity of the persistent array is then improved from $\mathcal{O}(U^{\log_2 3} + V \log U)$ to $\mathcal{O}(U + V \log U)$, where $U$ is the maximal size of the array and $V$ is the number of versions. The data locality and I/O complexity of both present and persistent reads are kept unchanged; I/O complexity of writes is worsened by a polylogarithmic factor.

Knowledge Graph

arrow_drop_up

Comments

Sign up or login to leave a comment