3个不稳定版本
0.4.1 | 2023年9月5日 |
---|---|
0.4.0 | 2023年9月5日 |
0.3.0 | 2023年8月14日 |
#184 在 数据库实现
每月42次下载
185KB
1K SLoC
📚 Readatabase (readb)
🚨 更新警报:0.4.0版本中存在重大更改
- 🛠 重新整理了数据库代码结构。现在您必须使用
use readb::Database;
。 - ✅ 构造函数不再需要
unwrap()
。为了向后兼容,仍保留一个.unwrap()
方法。- 🔁 相反,我们在
DatabaseSettings
中引入了create_path
属性。如果您不使用Default
,这可能会造成破坏性更改。
- 🔁 相反,我们在
🔍 "不要重复造轮子。" 尽管有这个智慧,但在这里我们有 readb:一个全新、精简的嵌入式键值数据库,完全使用Rust编写。
readb类似于sled,以简洁著称,具有出色的读取性能。它主要关注读取,同时也支持写入和删除。它轻量级,依赖性最小,大小不到200KB。
🌟 特性
- 自定义缓存:从一系列缓存策略中选择(一些仍在开发中)。
- 无锁读取:优化并发访问。
- 远程克隆:轻松同步数据。
- 事务:安全和高效的数据修改。
🚀 readb的速度秘诀
readb以读取为中心。假设数据大部分是静态的,我们通过有效地利用磁盘和内存,在内存效率与速度之间取得平衡。
数据管理包括
- 链接:关联而不重复。
- 插入:线性追加数据,快速访问。
readb的线性方法与众不同,确保快速操作。
🎯 理想用户?
如果您主要处理读取请求,并渴望一个快速、高效的本地解决方案,readb就在那里等待。虽然它在写入速度上表现优异,但在压缩方面有一些妥协。
📊 基准测试
写入基准:
操作 | readb 最大时间 |
sled 最大时间 |
---|---|---|
1,000 | 147.02 µs | 332.65 µs |
1,000,000 | 238.48 ms | 485.63 ms |
读取基准:
基准类型 | 读取时间 | sled 时间 | 读取时间 |
---|---|---|---|
检索1000个项目 | 50.30 | 79.25 | 97.95 |
检索1000个项目(10%) | 49.05 | 17.84 | 22.39 |
检索1000个项目(20%带重复) | 49.16 | 33.92 | 43.17 |
检索10000个项目 | 67.56 | 1,256.75 | 1,225.68 |
检索10000个项目(10%) | 55.29 | 311.57 | 357.98 |
检索10000个项目(20%带重复) | 61.13 | 541.79 | 692.16 |
检索100000个项目 | 209.59 | 36,977 | 52,558 |
检索100000个项目(10%) | 86.25 | 3,465.1 | 5,090.9 |
检索100000个项目(20%带重复) | 124.29 | 6,831.8 | 10,151 |
视觉:
🛠 开始使用
1. 数据库设置
Database
结构体管理索引、缓存和数据加载,需要两个泛型
C
:缓存机制(实现Cache
特性)。L
:数据加载器(实现Loader
特性)。
2. 操作
从获取键到维护数据一致性,我们都有相应的解决方案。
3. 高级特性
从数据写入到高效的垃圾回收,提升您的数据库性能。
📦 1.0版本路线图
随着API的稳定,我们的重点转向优化缓存和增强文档。随着我们向1.0版本迈进,向后兼容性仍然至关重要。
📝 许可证
根据Apache许可证版本2.0授权。查看NOTICE文件以获取更多详细信息。
依赖项
~0.5–13MB
~197K SLoC