Open JohannesLichtenberger opened 4 years ago
One important aspect is, that we can cache the pages by their offsets into the file if we enhance the interfaces and implement the ART as an "on-disk" data structure. This means, that the pages can be shared between revisions, also once read into main memory.
An evolution to reduce the tree height for sparse data sets is the HOT: https://dbis-informatik.uibk.ac.at/sites/default/files/2018-06/hot-height-optimized.pdf it adapts node sizes such that sparsely populated nodes have a heigher span. Reducing storage space of the "compound nodes" can be done as in ART and Hash Array Mapped Tries (like we also do in our simple trie for dense ascending IDs).
We should either enhance our
PageReadOnlyTrx
andPageTrx
interfaces to replace our trie structure for secondary indexes or simply store the ART in leaf pages of a wide branching IndirectPage and fully read it in-memory. The second version is simpler to implement, but users need more main memory.RedBlack trees are currently stored in leaf nodes and should be read entirely in main memory, just for simplicity and to reuse our trie data structure. RedBlack-trees are however not very cache friendly and shouldn't be used in database systems (might have a major impact with inline types in the future, when Java supports these).