14 个版本 (1 个稳定版本)
2.0.0 | 2021年11月4日 |
---|---|
0.11.0 | 2021年10月28日 |
0.10.4 | 2021年10月27日 |
0.10.0 | 2021年2月19日 |
0.2.0 | 2020年11月7日 |
1236 在 数据库接口 中排名
每月下载量:33
110KB
2.5K SLoC
PoloDB 是一个嵌入式文档数据库。
| 文档 |
简介
PoloDB 是一个用 Rust 编写的库,实现了轻量级的 MongoDB。
为什么
PoloDB 致力于提供一种现代的替代方案,用于 SQLite,目前它是客户端数据存储的几乎唯一选择。尽管 SQLite 是一种老而稳定的软件,但它缺乏一些现代功能。因此,我们开发了 PoloDB,这是一个 NoSQL 数据库,支持多线程和多会话,并保留了 SQLite 的嵌入式和轻量级特性。
特性
- 简单轻量
- 易于学习和使用
- 非关系型数据库
- 类似 MongoDB 的 API
- 跨平台
- 多个后端
- 文件系统(WAL)
- 内存
- IndexedDB(WIP)
快速入门
PoloDB 易于学习和使用
use polodb_core::Database;
use serde::{Serialize, Deserialize};
#[derive(Debug, Serialize, Deserialize)]
struct Book {
title: String,
author: String,
}
let db = Database::open_file(db_path)?;
let collection = db.collection::<Book>("books");
collection.insert_one(Book {
title: "The Three-Body Problem".to_string(),
author: "Liu Cixin".to_string(),
})?;
后端
文件系统后端
使用文件系统后端,PoloDB 将数据存储在一个单独的文件中。所有数据都持久地保存在磁盘上。
它被设计为灵活、通用且易于搜索。所有数据都使用 bson 格式编码,并以 PoloDB 的 lsm-tree 格式存储。
PoloDB 使用 WAL(写入前日志)来实现事务性写入并保护数据免受程序崩溃的影响。
内存后端
使用内存后端,所有数据都存储在内存中,使 PoloDB 成为一个纯内存数据库。
平台
理论上,PoloDB 支持所有 Rust 编译器支持的平台。但 PoloDB 是一个个人项目。由于时间限制,我仅在以下平台上编译和测试了它
- macOS Big Sur x64
- Linux x64 (在 Fedora 32 上测试)
- Windows 10 x64
手册
路线图
功能将按顺序逐一实现。
- 后端
- 内存
- 文件
- IndexedDB(WIP)
- 基本数据库 API
- CRUD
- 事务
- 序列化/反序列化
- 索引(Alpha)
- 聚合
- 命令行工具
- 平台
- macOS
- Linux
- Windows
- 网络浏览器(WIP)
- iOS
- Android
- 可视化工具
依赖项
~1.5MB
~23K SLoC