[−][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 |
mvcc | Module |
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 |
Result | Result returned by rdms functions and methods. |