#b-tree #kv #json #meta #index #blocks

bin+lib mintkv

基于 btree 的简单 kv 库

1 个不稳定版本

0.1.0 2024年4月18日

#1470数据库接口

Apache-2.0

78KB
2K SLoC

mintkv

MintKv 是一个基于 btree 的简单 KV 数据库,作为一个学习项目编写的。

文件系统布局

data
|----blocks
|      b_0000001
          data
          meta.json
          index.json
          tombstone
|      b_0000002
          data
          meta.json
          index.json
          tombstone
|-----memtables (mmap)
|         m_0001
             data 
             tombstone

待办事项

  • B+树作为引擎
  • 内存表
  • LE128 代码
  • 块(磁盘存在)
  • WAL
  • 墓碑
  • 压缩

示例

use mintkv::db::MintKv;
const TEST_COUNT: i32 = 1000;

fn main() {
    let mut db = MintKv::new("./data");
    for i in 0..TEST_COUNT {
        let (key, value) = (format!("key-{}", i), format!("value-{}", i));
        db.insert(&key, &value).unwrap();
    }

    for i in 0..TEST_COUNT {
        let key = format!("key-{}", i);
        let result = db.get(&key);
        println!("Search For: {}, Reesult: {:?}", key, result);
    }
}

无运行时依赖