#key-value-database #sled #sled-database #user-defined #tree #byte #btree-map

bincode-sled

使用类型而非字节来构建Sled。由bincode-v2提供动力。

3个版本

0.0.3 2023年12月24日
0.0.2 2023年12月20日
0.0.1 2023年12月19日

#89数据库实现

每月 28 次下载
entropy-rs 中使用

MIT 许可证

58KB
1K SLoC

bincode-sled - 基于sled构建的数据库

本项目受到typed-sled的启发,typed-sled是sled的一个出色的类型化中间件。

与typed-sled的区别

  • 使用bincode-v2代替seder来处理数据。
  • 删除数据的自定义实现。

API

sled是一个高性能的嵌入式数据库,其API类似于一个 BTreeMap<[u8], [u8]>.
bincode-sled在sled的基础上构建,并提供了类似于 BTreeMap<K, V> 的API,其中K和V是用户定义的类型。

示例

use bincode::{Encode, Decode};

#[derive(Debug, Clone, Encode, Decode, PartialEq)]
struct SomeValue(u32);

// Creating a temporary sled database
let db = sled::Config::new().temporary(true).open().unwrap();

// The id is used by sled to identify which Tree in the database (db) to open
let tree = bincode_sled::Tree::<String, SomeValue>::open(&db, "unique_id");

// insert and get, similar to std's BTreeMap
tree.insert(&"some_key".to_owned(), &SomeValue(10))?;

assert_eq!(tree.get(&"some_key".to_owned())?, Some(SomeValue(10)));
Ok(())


功能

提供多种功能以供常见用例使用

  • 使用 tantivy 通过树的关键字和值进行搜索的搜索引擎。
  • 自动键生成。
  • 将一个类型化的树转换为另一个类型化的树,具有不同的键和值类型。

依赖项

~2–7.5MB
~128K SLoC