5个版本

0.1.4 2024年4月10日
0.1.3 2024年3月4日
0.1.2 2024年1月3日
0.1.1 2024年1月1日
0.1.0 2023年11月30日

#75数据库实现

Download history 2/week @ 2024-05-17 1/week @ 2024-05-24

每月306次下载

Apache-2.0

50KB
1.5K SLoC

GhalaDb

docs.rs GitHub Workflow Status (with event) Crates.io

WiscKey论文启发的实现键值分离的关键值数据存储。

GhalaDb通过将键的存储与值的存储解耦来实现对SSD感知的数据布局。内存树存储键以及指向值的指针,而值则存储在单独的日志文件中。这显著降低了数据导入期间的写放大,同时促进了数据加载的速度。

由于GhalaDb将其所有键和数据指针都保存在内存中,因此它适用于具有小型键的应用程序。

use ghaladb::{GhalaDb, GhalaDbResult};

fn main() -> GhalaDbResult<()> {
    let mut db = GhalaDb::new("/tmp/ghaladb", None)?;
    let key = "king".to_owned();
    let val = "queen".to_owned();
    db.put(&key, &val)?;
    assert_eq!(db.get(&key)?.unwrap(), val);
    Ok(())
}

参考文献

依赖项

~0.7–1.2MB
~27K SLoC