Infinitree

加密嵌入式数据库
授权协议 MIT
开发语言 Rust
所属分类 数据库相关、 数据库服务器
软件类型 开源软件
地区 不详
投 递 者 上官砚文
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

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 是一个嵌入式加密数据库。 默认线程安全 透明地处理热/温/冷存储层;目前支持 S3 兼容的后端 可以使用Iterator trait查询,无需完全加载的版本化数据结构 加密所有磁盘数据,仅在使用时解密 专注于性能和灵活 可扩展的自定义数据类型和存储策略 ReadMore:https://github.com/symmetree-la

 相关资料
  • 我正在构建一个将使用neo4j的web应用程序。我将在Java构建一个REST API,它将使用Neo4j嵌入式版本。这个架构有什么问题吗? 用别的方法好吗?Neo4j服务器? 谢谢!

  • 我有一个Spring Boot和嵌入式Mongo DB的项目,我也想查找存储在那里的数据。我学习了本教程https://springframework.guru/spring-boot-with-embedd-mongoDB/

  • 问题内容: 我打算开发一个小型(Java)应用程序来管理我的财务。我相信我需要使用嵌入式数据库,但是我没有关于此问题的经验。我试图查看一些可用的产品,但是我无法确定哪种产品更适合我。H2,HSQLDB,Derby和Berkeley DB似乎是不错的候选者,但是我仍然看不到它们之间的比较。感谢您的比较,并帮助我决定使用哪个。 我打算将Hibernate用于我的应用程序(除非您建议使用DBMS提供的A

  • 我用RSA加密来加密C#中的一些数据。现在我想用Java解密加密的数据。但是我遇到了一些问题。 主要问题可能是将加密消息从c#获取到java。在c#中,我们有无符号字节,字节序是不同的 因此,为了进行测试,我将c#中加密数据的数组转换为数组并获得它的字符串表示形式。然后我将字节数组的字符串表示形式复制到我的java代码中并将其转换回“字节”数组。之后,我反转数组以匹配java的endianess。

  • 问题内容: 我正在寻找可以用于使用Qt开发的应用程序的良好嵌入式数据库。这些应用程序针对来自一家大型公司的各个站点的桌面用户。该数据库应能够在每个站点分别存储数据,并且该数据应在需要时与其他站点合并。 问题答案: 除了SQLite,以下任何一项都可以与Qt一起用作嵌入式数据库。Qt已经拥有大多数驱动程序,您可以找到其他驱动程序。在“与其他站点”合并数据方面,这完全取决于您的意思。用于SQLite和

  • 我对neo4j很陌生,我想创建一个应用程序。 在远程服务器模式下,似乎只有RESTAPI可以用于连接neo4j。所以我决定使用嵌入式数据库,因为我想使用neo4j提供的JAVA API。 本教程中有一个创建连接的示例: 似乎每次我运行这段代码时,它都会创建一个新的数据库实例,所有现有的数据都会被覆盖。 但是数据需要保存,我不会在代码中将所有数据导入数据库... 如何解决这个问题?我需要的是连接到数