4个版本
0.0.4 | 2024年6月18日 |
---|---|
0.0.3 | 2024年6月9日 |
0.0.2 | 2024年6月5日 |
0.0.1 | 2024年6月2日 |
#407 在 数据库接口
每月 31 次下载
80KB
1.5K SLoC
Deeb - JSON数据库
发音为 D-B
,Deeb是一个适用于小型网站和快速原型设计的符合ACID的JSON数据库。
Deeb受到Mongo的灵活性和SQLite的轻量级的启发,是一个将一组JSON文件转换为数据库的工具。
Deeb将JSON文件组转换为数据库的能力允许您简单地打开json文件并根据需要编辑。
请参阅以下快速入门或文档以获取更多信息。
快速入门
- 将Deeb添加到您的
Cargo.toml
文件中
cargo add deeb
- 为您的数据库创建一个JSON文件。
echo '{"user": []}' > user.json
echo '{"comment": []}' > comment.json
- 创建Deeb实例并执行操作
use deeb::*;
use serde_json::json;
use anyhow::Error;
#[tokio::main]
async fn main() -> Result<(), Error> {
// Set up a new Deeb instance
let db = Deeb::new();
// Create a new entity
let user = Entity::from("user");
let comment = Entity::from("comment");
db.add_instance("test", "./user.json", vec![user.clone()])
.await?;
db.add_instance("test2", "./comment.json", vec![comment.clone()])
.await?;
// Single Operations
db.insert(&user, json!({"id": 1, "name": "Joey", "age": 10}), None).await?;
db.find_one(&user, Query::eq("name", "Joey"), None).await?;
// Perform a transaction
let mut transaction = db.begin_transaction().await;
// Insert data into the database
db.insert(&user, json!({"id": 1, "name": "Steve", "age": 3}), Some(&mut transaction)).await?;
db.insert(&user, json!({"id": 2, "name": "Johnny", "age": 3}), Some(&mut transaction)).await?;
db.insert(&comment, json!({"user_id": 1, "comment": "Hello"}), Some(&mut transaction)).await?;
db.insert(&comment, json!({"user_id": 1, "comment": "Hi"}), Some(&mut transaction)).await?;
// Query the database
let query = Query::like("name", "Steve");
let result = db.find_one(&user, query, Some(&mut transaction)).await?;
// Update the database
let query = Query::ne("name", "Steve");
let update = json!({"name": "Steve", "age": 3});
db.update_one(&user, query, update, Some(&mut transaction)).await?;
// Delete from the database
let query = Query::eq("name", "Johnny");
db.delete_one(&user, query, Some(&mut transaction)).await?;
db.commit(&mut transaction).await?;
Ok(())
}
功能
- ACID兼容:Deeb是一个符合ACID的数据库
- 基于JSON:Deeb使用JSON文件作为数据库
- 无模式:Deeb是无模式的
- 事务:Deeb支持事务
- 查询:Deeb支持查询、嵌套查询和组合查询。
路线图
- 基本CRUD操作
- 事务
- 索引
- 查询
- 迁移
- 基准测试
- 关联
- 文档
- 测试
- 示例
- 日志记录
- 错误处理
- CI/CD
依赖项
~4–11MB
~103K SLoC