13 个版本
0.3.5 | 2023年7月25日 |
---|---|
0.3.4 | 2023年6月24日 |
0.2.0 | 2023年6月20日 |
0.1.5 | 2023年6月20日 |
#673 在 数据库接口
96 每月下载量
53KB
1K SLoC
MicroDB
用于在内存不足以存储大量数据的程序中的微型数据库
已完成功能
- 磁盘存储
- 获取、设置、分配、释放
- 缓存
- 错误自动恢复
- 基本类型(数字、字符串、vecs、选项、结果)的序列化
- 易于实现的序列化
- 可推导序列化
- (可能) 支持通过 TCP 的多客户端
- (可能) 将操作镜像到备份服务器(需要 TCP)
如何使用
MicroDB 在您的应用程序运行的地方运行:保存、缓存同步等都在您的应用程序的另一个线程中简单发生。
要开始,创建一个数据库
let db = MicroDB::create(
"example_db.data.mdb",
"example_db.meta.mdb",
MicroDB::sensible_cache_period(
/*requests of unique objects per second*/10.0,
/*max ram usage*/0.1,
/*average object size in mb*/0.01,
/*safety (how important staying within ram spec is)*/1.0),
MicroDB::sensible_block_size(
/*object amount*/500.0,
/*average object size in bytes*/10_0000.0,
/*object size fluctuation in bytes*/0.0,
/*storage tightness*/1.0
),
)
或使用 ::new 加载一个,并省略 block_size 参数。
现在您就可以开始了!
它有多快?
以下是一个显示对一个值请求量的速度的测试
Setting test --raw--> true
Reading test 10000 times.
Done! Took 1ms: 0.0001ms per read.
以下是一个显示在10000个值上每个值一个请求的速度的测试
Setting horizontal_test/{0..10000} --raw--> true
Reading back all values...
Done! Write took 5570ms: 0.557ms per write; Read took 143ms: 0.0143ms per read.
如你所见,速度相当低,实际上比像 Postgres 这样的 SQL 数据库在这些数据集大小的数据库中要快得多。这个数据库不是为处理大型数据集而设计的,但它对小型数据集非常有效。
目前,数据库在读取时大约是 O(log n) 的缩放,但在写入时较慢(不确定有多慢)。