Infinitree加密嵌入式数据库
Infinitree 是具有 3 层缓存的可扩展和加密嵌入式数据库,使用 Rust 编写。
主要特性
- 默认线程安全
- 透明式处理热/温/冷存储,目前支持 S3 兼容的后端
- 可以使用
Iterator
特征查询而无需完全加载的版本化数据结构 - 加密所有磁盘数据,仅在使用时解密
- 关注性能,以及性能/内存使用的灵活折中
- 可扩展自定义数据类型和存储策略
- 方便与云 worker 和 KMS 集成,用于进行访问控制
使用示例
use infinitree::{
Infinitree,
Index,
Key,
anyhow,
backends::Directory,
fields::{Serialized, VersionedMap, LocalField},
};
use serde::{Serialize, Deserialize};
#[derive(Serialize, Deserialize)]
pub struct PlantHealth {
id: usize,
air_humidity: usize,
soil_humidity: usize,
temperature: f32
}
#[derive(Index, Default, Clone)]
pub struct Measurements {
// rename the field when serializing
#[infinitree(name = "last_time")]
_old_last_time: Serialized<String>,
#[infinitree(name = "last_time2")]
last_time: Serialized<usize>,
// only store the keys in the index, not the values
#[infinitree(strategy = "infinitree::fields::SparseField")]
measurements: VersionedMap<usize, PlantHealth>,
// skip the next field when loading & serializing
#[infinitree(skip)]
current_time: usize,
}
fn main() -> anyhow::Result<()> {
let mut tree = Infinitree::<Measurements>::empty(
Directory::new("/storage")?,
Key::from_credentials("username", "password")?
);
tree.index().measurements.insert(1, PlantHealth {
id: 0,
air_humidity: 50,
soil_humidity: 60,
temperature: 23.3,
});
*tree.index().last_time.write() = 1;
tree.commit("first measurement! yay!");
Ok(())
}
评论
Infinitree加密嵌入式数据库
Infinitree是具有3层缓存的可扩展和加密嵌入式数据库,使用Rust编写。主要特性默认线程安全透明式处理热/温/冷存储,目前支持S3兼容的后端可以使用Iterator特征查询而无需完全加载的版本
Infinitree加密嵌入式数据库
0
hamsterdb嵌入式数据库
hamsterdb是一个采用C开发,非常快,轻量级的嵌入式数据库引擎。hamsterdb包括的B+树变长密钥和记录。它支持内存中的数据库和字节独立的文件,数据库,游标,多个数据库在一个文件中,“记录”
hamsterdb嵌入式数据库
0
HSQLDB嵌入式数据库
Hsqldb是一个开放源代码的JAVA数据库,其具有标准的SQL语法和JAVA接口,它可以自由使用和分发,非常简洁和快速的。具有Server模式,进程内模式(In-Process)和内存模式(Memo
HSQLDB嵌入式数据库
0