17次发布

0.3.0 2024年6月4日
0.2.7 2021年11月11日
0.2.2 2021年4月17日
0.2.0 2021年3月31日
0.1.1 2020年10月6日

#68数据库实现

Download history 161/week @ 2024-05-30 30/week @ 2024-06-06 4/week @ 2024-06-13

每月 820次下载

GPL-3.0 许可证

18KB
293

Keratin

快速搭建/快速开发,嵌入式,模块化数据库

Keratin从一开始就设计得简单而全面。适用于任何可序列化和可反序列化的结构体。

将来您可以选择如何构建Keratin:如何与之交互,使用哪种持久化数据格式,附加自己的自定义模块以处理数据...

工作进行中!!!可能不建议在生产环境中使用

使用 cargo test -- --test-threads 1 运行测试

示例

use keratin::*;

fn main() -> Result<()> {
	// Choose your method of storage (Anything that implements the 'StorageEngine' trait should work)
    let se = keratin::storage::LocalFsStorage;

    // Create the collection (using None as the parameter defaults to a directory inside the project)
    let mut coll: Collection<String> = Collection::configure(None, &se)?;


    // Insert the data into the collection
    let result = coll.insert("key", "something".to_owned())?;
    assert!(result.is_ok());
    
    // Get the data from the collection
    let retrieved_data = coll.get(key).unwrap();
    assert_eq!(retrieved_data, "something");
    
    // Delete the entry
    coll.delete(&key)?;
    
    // Modify the data entry
    coll.modify("key", "another something".to_owned())?;
    
    let retrieved_data = coll.get("key").unwrap();
    assert_eq!(retrieved_data, "another something");
}

可用的引擎

  • 存储
    • LocalFsStorage
      • 将记录存储在本地文件系统中,作为BSON文件

待办事项

  • 元数据字段
    • 部分实现
  • 实现引擎
    • StorageEngine
    • CacheEngine(缓存记录并帮助查询)
      • 部分实现
    • QueryEngine(查询记录)
      • 缺失特质
    • NetworkEngine(通过网络访问keratin的其他实例)
    • ConfigurationEngine(如何以其他方式配置keratin?)
    • AuthenticationEngine(通过凭证访问和控制keratin实例)

使用默认配置的默认项目目录布局

project folder ---src/
				|
				|-Cargo.toml
				|
				|-target/
				|
				|-db/---------keratin.toml (config)
							|
							|-data/ ------- BSON documents

依赖项

~6.5MB
~116K SLoC