[][src]Module rdms::llrb

Module llrb export an in-memory index type, implementing Left Leaning Red Black tree.

Llrb type allow concurrent read and write access at API level, while behind the scenes, all CRUD access are serialized into single threaded operation. To serialize concurrent access Llrb uses a spin-lock implementation that can be configured to yield or spin while waiting for the lock.

LSM mode: Llrb index can support log-structured-merge while mutating the tree. In simple terms, this means that nothing shall be over-written in the tree and all the mutations for the same key shall be preserved until they are purged.

Possible ways to configure Llrb:

spinlatch, relevant only in multi-threaded context. Calling set_spinlatch() with true will have the calling thread to spin while waiting to acquire the lock. Calling it with false will have the calling thread to yield to OS scheduler while waiting to acquire the lock.

seqno, application can set the beginning sequence number before ingesting data into the index.

Structs

Iter

Full table scan type for both Llrb and Mvcc index.

IterFullScan

Piece-wise full table scan type for both Llrb and Mvcc index.

Llrb

Single threaded, in-memory index using left-leaning-red-black tree.

LlrbReader

Read handle into Llrb index, that implements both Send and Sync.

LlrbWriter

Write handle into Llrb index, that implements both Send and Sync.

Range

Range scan between a lower-bound and higher-bound for bot Llrb and Mvcc index.

Reverse

Reverse range scan between a higher-bound and lower-bound for both Llrb and Mvcc index.