| Crates.io | dumbo_rocks_db |
| lib.rs | dumbo_rocks_db |
| version | 0.2.3 |
| created_at | 2025-07-07 03:39:06.589916+00 |
| updated_at | 2025-08-22 15:30:29.524944+00 |
| description | RocksDB数据库操作模块,提供类型安全的列族(Column Family)抽象。 |
| homepage | |
| repository | https://github.com/cao5zy/dumbo_rocks_db |
| max_upload_size | |
| id | 1740687 |
| size | 41,874 |
RocksDB数据库操作模块,提供类型安全的列族(Column Family)抽象。
本模块通过DbContext管理数据库连接,使用ColumnFamily<T>提供类型安全的数据操作。每个列族对应一个类型T,该类型需实现Keyable trait。
在系统启动时初始化全局数据库实例:
use dumbo_rocks_db::DbContext;
// 参数说明:
// - db_path: 数据库存储路径
// - column_families: 所有列族名称列表
DbContext::initialize(db_path, column_families)?;
为每个列族创建实现Keyable的类型:
use serde::{Serialize, Deserialize};
use dumbo_rocks_db::Keyable;
#[derive(Serialize, Deserialize)]
struct User {
id: String,
name: String,
}
impl Keyable for User {
fn key(&self) -> String {
self.id.clone()
}
fn column_family() -> &'static str {
"users" // 对应初始化时传入的列族名称
}
}
use dumbo_rocks_db::ColumnFamily;
// 创建列族访问对象
let user_cf = ColumnFamily::<User>::new();
// 插入数据
user_cf.set(&User {
id: "001".into(),
name: "Alice".into()
})?;
// 查询数据
let user = user_cf.get("001")?;
// 获取全部数据
let all_users = user_cf.get_all()?;
// 删除数据
user_cf.del("001")?;
DbContextinitialize(db_path: &str, column_families: &[&str]):初始化数据库连接ColumnFamily<T>要求 T: Keyable,提供以下操作:
get(key: &str) -> Result<Option<T>>:按键查询set(item: &T) -> Result<()>:插入/更新数据del(key: &str) -> Result<()>:删除数据get_all() -> Result<Vec<T>>:获取列族全部数据count_all() -> Result<usize>: 获取总的记录数keep_size(size: usize): 根据索引的顺序,保留指定数量的数据,超过这个数量的就删除 (0.2.0)Keyable trait数据模型必须实现的特征:
pub trait Keyable: Serialize + DeserializeOwned {
/// 获取数据主键
fn key(&self) -> String;
/// 返回对应的列族名称
fn column_family() -> &'static str;
}
use dumbo_rocks_db::generate_timestamp_index;
let start_time = chrono::Utc::now();
let id_name : &str = "warning";
let index_id = generate_timestamp_index(id_name, start_time);