umadb-core 0.6.14

Core event store implementation for UmaDB
Documentation
# umadb-core

Core event store implementation for UmaDB.

## Overview

`umadb-core` provides the low-level storage engine implementation for UmaDB, a high-performance event store built for [Dynamic Consistency Boundaries](https://dcb.events).

This crate handles the critical performance and durability aspects of the event store:

- **Append-only event storage** with monotonically increasing gapless positions
- **Multi-Version Concurrency Control (MVCC)** for high-performance non-blocking reads and writes
- **Copy-on-write page management** for atomic commits and crash safety
- **Efficient space reclamation** of unreachable page versions
- **Tag indexing** for fast, precise event filtering
- **Optimistic concurrency control** to prevent write conflicts
- **Full durability** before acknowledgements

## Architecture

UmaDB uses a custom storage engine with:

- **Copy-on-write B+ tree pages** for MVCC without blocking
- **Atomic header page commits** after all data is durably written
- **Page reuse tracking** to reclaim space from old versions
- **Memory-mapped file I/O** for high-performance reads
- **File I/O and fsync** for durability guarantees

## Usage

This crate is typically used through higher-level UmaDB components like `umadb-server` rather than directly. It implements the traits defined in `umadb-dcb`:

```rust
use umadb_core::db::UmaDb;
```

## Performance

The MVCC design enables:

- **Non-blocking reads** - readers see consistent snapshots without blocking writers
- **High-throughput writes** - batched append requests amortize disk I/O
- **Concurrent access** - multiple readers and writers without locks
- **Efficient paging** - copy-on-write enables atomic updates with minimal copying

## Part of UmaDB

This crate is part of [UmaDB](https://github.com/umadb-io/umadb), a high-performance open-source event store built for Dynamic Consistency Boundaries.

## License

Licensed under either of:

- Apache License, Version 2.0 ([LICENSE-APACHE]../LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license ([LICENSE-MIT]../LICENSE-MIT or http://opensource.org/licenses/MIT)

at your option.