Expand description
OpenData Log - A key-oriented log system built on SlateDB.
OpenData Log provides a simple log abstraction where each key represents an independent log stream. Unlike traditional messaging systems with partitions, users write directly to keys and can create new keys as access patterns evolve.
§Architecture
The log is built on SlateDB’s LSM tree. Writes append entries to the WAL and memtable, then flush to sorted string tables (SSTs). LSM compaction naturally organizes data for log locality, grouping entries by key prefix over time.
§Key Concepts
- LogDb: The main entry point providing both read and write operations.
- LogDbReader: A read-only view of the log, useful for consumers that should not have write access.
- Sequence Numbers: Each entry is assigned a global sequence number at append time. Sequence numbers are monotonically increasing within a key’s log but not contiguous (other keys’ appends are interleaved).
§Example
let config = Config { storage: StorageConfig::InMemory, ..Default::default() };
let log = LogDb::open(config).await?;
// Append records
let records = vec![
Record { key: Bytes::from("orders"), value: Bytes::from("order-123") },
];
log.try_append(records).await?;
log.flush().await?;
// Scan a key's log
let mut iter = log.scan(Bytes::from("orders"), ..).await?;
while let Some(entry) = iter.next().await? {
println!("seq={}, value={:?}", entry.sequence, entry.value);
}Structs§
- Append
Output - Output of an append operation.
- Config
- Configuration for opening a
LogDb. - Count
Options - Options for count operations.
- LogDb
- The main log interface providing read and write operations.
- LogDb
Builder - Builder for creating LogDb instances with custom options.
- LogDb
Reader - A read-only view of the log.
- LogEntry
- An entry read from the log.
- LogIterator
- Iterator over log entries across multiple segments.
- LogKey
- A key returned from the listing iterator.
- LogKey
Iterator - Iterator over keys from listing entries.
- Reader
Config - Configuration for opening a
LogDbReader. - Record
- A record to be appended to the log.
- Scan
Options - Options for scan operations.
- Segment
- A segment of the log.
- Segment
Config - Configuration for log segmentation.
Enums§
- Append
Error - Error type for append operations that preserves the batch for retry.
- Error
- Error type for OpenData Log operations.
Traits§
- LogRead
- Trait for read operations on the log.
Type Aliases§
- Append
Result - Result type alias for append operations.
- Result
- Result type alias for OpenData Log operations.
- Segment
Id - Unique identifier for a segment.
- Sequence
- Global sequence number for log entries.