Expand description
Append Only Log
§Introducation
When developing infrastructure softwares, write-ahead log or append-only log plays an important role, and people re-implement same
funcationalities multiple times, but actually, the core for append-only log is just atomic append
, append_batch
, replay
, and rewrite
.
This crate provides generic purpose append-only log implementation based on std::fs::File
.
-
aol::fs::AppendLog
:Generic purpose append-only log implementation based on
std::fs::File
.-
It is good for:
- The encoded entry size is smaller than
64
bytes. - Manifest file.
- Write is not too frequently.
- The encoded entry size is smaller than
-
Pros:
- It is growable, do not require pre-allocated.
- Support automatically rewrite.
- No holes in the file.
-
§File Structure
+----------------------+--------------------------+-----------------------+
| magic text (4 bytes) | external magic (2 bytes) | magic (2 bytes) |
+----------------------+--------------------------+-----------------------+-----------------------+-----------------------+
| op (1 bit) | custom flag (7 bits) | len (4 bytes) | data (N bytes) | checksum (8 bytes) |
+----------------------+--------------------------+-----------------------+-----------------------+-----------------------+
| op (1 bit) | custom flag (7 bits) | len (4 bytes) | data (N bytes) | checksum (8 bytes) |
+----------------------+--------------------------+-----------------------+-----------------------+-----------------------+
| ... | ... | ... | ... | ... |
+----------------------+--------------------------+-----------------------+-----------------------+-----------------------+
§Installation
[dependencies]
aol = "0.3"
§Example
§License
aol
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 either;
Modules§
- buffer
- A vacant buffer that can be filled with bytes.
- checksum
- Traits and structs for checksuming.
- leb128
- LEB128 encoding and decoding
Structs§
- Append
Log std
- Append-only log implementation based on
std::fs::File
. - Builder
std
- A builder used to create a
AppendLog
. - Custom
Flags - A 7-bit custom flag.
- Entry
- The entry in the append-only file.
- Entry
Flags - Flags for the snapshot entry.
- Maybe
Entry Ref - Maybe a reference entry type or an owned entry.
- Options
std
- Options for the append only log.
Enums§
- Error
std
- Errors for append-only file.
- Rewrite
Policy std
- Rewrite policy.