| Crates.io | seqdb |
| lib.rs | seqdb |
| version | 0.2.16 |
| created_at | 2025-08-09 10:19:22.475595+00 |
| updated_at | 2025-09-20 16:45:09.203962+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 | 71,290 |
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