Crate orderwal

Source
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.

github LoC Build codecov

docs.rs crates.io crates.io license

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.

  • aol: Yet another generic purpose, append-only write-ahead log implementation based on std::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.
XxHash3xxhash3
XxHash64 (with xxh3 support) checksumer.
XxHash64xxhash64
XxHash checksumer.

Traits§

Comparable
Key ordering trait.
ComparableRangeBounds
ComparableRangeBounds is implemented as an extention to RangeBounds to allow for comparison of items with range bounds.
Equivalent
Key equivalence trait.
Immutable
A marker trait which indicates that such WAL is immutable.