Expand description
An ordered Write-Ahead Log implementation for Rust.
OrderWAL
A generic-purpose, atomic, ordered, zero-copy read, zero-cost (in-place) write, Write-Ahead Log implementation for Rust.
English | 简体中文
§Introduction
orderwal
is generic-purpose, atomic, ordered, zero-copy read, zero-cost (in-place) write, concurrent-safe, pre-allocate style (memory map) write-ahead-log for developing databases.
orderwal
also supports generic structured key and value types, which is not limited to just bytes like other implementations.
§Installation
-
Default (with on-disk support)
[dependencies] orderwal = "0.5"
-
std
only (without on-disk support)[dependencies] orderwal = { version = "0.5", default-features = false, features = ["std"] }
-
no-std
(alloc
required)[dependencies] orderwal = { version = "0.5", default-features = false, features = ["alloc"] }
§Example
See examples for more information.
§Related projects
aol
: Yet another generic purpose, append-only write-ahead log implementation based onstd::fs::File
.skl
: A lock-free, ARNEA based skiplist implementation, which supports in-memory and on-disk, suitable for frozen durable data file or memtable for LSM database.valog
: A lock-free, generic, lightweight value log for WiscKey or Bitcask architecture databases.dtlog
: A log for tracking discard stats of multi-files databases.
§License
orderwal
is under the terms of both the MIT license and the
Apache License (Version 2.0).
See LICENSE-APACHE, LICENSE-MIT for details.
Copyright (c) 2024 Al Liu.
Re-exports§
pub use among;
Modules§
- base
- The ordered write-ahead log without multiple version support.
- batch
- Batch insertions related traits and structs.
- checksum
- Traits and structs for checksuming.
- error
- Error types.
- memtable
- The memory table implementation.
- multiple_
version - A multiple version ordered write-ahead log implementation for multiple threads environments.
- types
- Types
- utils
- The utilities functions.
Structs§
- Builder
- A write-ahead log builder.
- Crc32
- CRC32 checksumer.
- KeySize
- KeySize which is used to represent a length of a key stored in the skiplist, it is a 27-bit unsigned integer.
- Options
- Options for the WAL.
- XxHash3
xxhash3
- XxHash64 (with xxh3 support) checksumer.
- XxHash64
xxhash64
- XxHash checksumer.
Traits§
- Comparable
- Key ordering trait.
- Comparable
Range Bounds ComparableRangeBounds
is implemented as an extention toRangeBounds
to allow for comparison of items with range bounds.- Equivalent
- Key equivalence trait.
- Immutable
- A marker trait which indicates that such WAL is immutable.