Crates.io | seqdb |
lib.rs | seqdb |
version | 0.2.5 |
created_at | 2025-08-09 10:19:22.475595+00 |
updated_at | 2025-08-26 06:30:06.43396+00 |
description | A K.I.S.S. sequential storage engine |
homepage | https://github.com/seqdb/seqdb |
repository | https://github.com/seqdb/seqdb |
max_upload_size | |
id | 1787791 |
size | 67,299 |
A K.I.S.S. (Keep It Simple, Stupid) sequential storage engine that provides memory-mapped file-based storage with dynamic region management.
seqdb is a lightweight storage engine designed for applications that need to store and retrieve data in named regions on disk. It provides:
use std::{fs, path::Path};
use seqdb::{Database, PAGE_SIZE, Result};
fn main() -> Result<()> {
// Create or open a database
let database = Database::open(Path::new("my_db"))?;
// Create a region
let (region_id, _) = database.create_region_if_needed("my_region")?;
// Write data to the region
database.write_all_to_region(region_id.into(), b"Hello, world!")?;
// Write at a specific offset
database.write_all_to_region_at(region_id.into(), b"Hi", 0)?;
// Read data using a reader
let reader = database.create_region_reader(region_id.into())?;
let data = reader.read_all();
// Truncate region to specific length
database.truncate_region(region_id.into(), 5)?;
// Flush changes and reclaim space
database.flush_then_punch()?;
Ok(())
}
Database
: Main entry point for database operationsIdentifier
: Region identifier (string or number)Reader
: Zero-copy reader for region dataRegion
: Metadata about storage regionsseqdb organizes data into regions within a single memory-mapped file. Each region has:
Regions can grow automatically and are moved/defragmented as needed for efficient space utilization.
This README was generated by Claude Code