Transactions on Red-black and AVL trees in NVRAM

06/29/2020
by   Thorsten Schütt, et al.
0

Byte-addressable non-volatile memory (NVRAM) supports persistent storage with low latency and high bandwidth. Complex data structures in it ought to be updated transactionally, so that they remain recoverable at all times. Traditional database technologies such as keeping a separate log, a journal, or shadow data work on a coarse-grained level, where the whole transaction is made visible using a final atomic update operation. These methods typically need significant additional space overhead and induce non-trivial overhead for log pruning, state maintenance, and resource (de-)allocation. Thus, they are not necessarily the best choice for NVRAM, which supports fine-grained, byte-addressable access. We present a generic transaction mechanism to update dynamic complex data structures `in-place' with a constant memory overhead. It is independent of the size of the data structure. We demonstrate and evaluate our approach on Red-Black Trees and AVL Trees with a redo log of constant size (4 resp. 2 cache lines). The redo log guarantees that each accepted (started) transaction is executed eventually despite arbitrary many system crashes and recoveries in the meantime. We update complex data structures in local and remote NVRAM providing exactly once semantics and durable linearizability for multi-reader single-writer access. To persist data, we use the available processor instructions for NVRAM in the local case and remote direct memory access (RDMA) combined with a software agent in the remote case.

READ FULL TEXT

Please sign up or login with your details

Forgot password? Click here to reset