[][src]Crate rdms

Package Rdms provide a collection of algorithms for indexing data either in memory or in disk or both. Rdms indexes are optimized for document databases and bigdata.

Features:

  • Provide CRUD API, Create, Read, Update, Delete.
  • Parameterized over a key-type (K) and a value-type (V).
  • Parameterized over Memory-index and Disk-index.
  • Memory index suitable for daaa ingestion and caching frequently accessed key.
  • Concurrent reads, with single concurrent write.
  • Concurrent writes (Work in progress).
  • Version control, centralised.
  • Version control, distributed (Work in progress).
  • Log Structured Merge for multi-level indexing.

Seqno, each index will carry a sequence-number as the count of mutations ingested by the index. For every successful mutation, the sequence-number will be incremented and corresponding entry shall be tagged with that sequence-number.

Log-Structured-Merge LSM, is a common technique used in managing heterogenous data-structures that are transparent to the index. In case of Rdms, in-memory structures are different from on-disk structures, and LSM technique is used to maintain consistency between them.

CAS, a.k.a compare-and-set, can be specified by applications that need consistency gaurantees for a single index-entry. In API context CAS is same as sequence-number.

Piece-wise full-table scanning, in many cases long running scans are bad for indexes using locks and/or multi-version-concurrency-control. And there will be situations where a full table scan is required on such index while handling live read/write operations. Piece-wise scanning can help in those situations, provided the index is configured for LSM.

Re-exports

pub use crate::no_disk::NoDisk;

Modules

llrb

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

mvcc

Module mvcc implement Multi-Version-Concurrency-Control variant of Llrb.

no_disk
robt

Read Only BTree for disk based indexes.

wal

Write-Ahead-Logging for Rdms index.

Structs

Empty

Empty value, can be used for indexing entries that have a key but no value.

Entry

Entry is the covering structure for a {Key, value} pair indexed by rdms data structures.

Rdms

Index keys and corresponding values. Check module documentation for the full set of features.

VersionIter

Iterate from latest to oldest available version for this entry.

Enums

Error

Error enumerates over all possible errors that this package shall return.

Traits

Diff

Trait for diffable values.

Footprint

To be implemented by index-types, key-types and value-types.

Index

Index trait implemented by Rdms's underlying data-structures that can ingest key, value pairs.

Reader

Index read operations.

Replay

Replay WAL (Write-Ahead-Log) entries on index.

Serialize

Serialize values to binary sequence of bytes.

Writer

Index write operations.

Type Definitions

IndexIter

Type alias to trait-objects iterating over Index.

Result

Result returned by rdms functions and methods.