1个不稳定版本
0.0.1 | 2023年3月28日 |
---|
#5 在 #blobd
27KB
475 行
blobd
极其快速且并行的对象存储,以原始设备速度运行。适用于在万亿个对象(小型或大型)上执行数百万个并发随机部分读取,且具有恒定的延迟。
- 所有优点:无共享架构,io_uring,异步Rust I/O,无页缓存,直接I/O。
- 保证持久性:可以安全在任何时候崩溃,成功结果意味着数据已经100%持久化。
- 创建分区以在或跨块设备或文件本地分片,以实现极高的创建和删除吞吐量。
- 可作为嵌入式库、RPC服务器或带有CORS、范围请求、预签名URL和HTTP/2的HTTP RESTful服务器使用。
- 异步复制和事件流。
设计
- 设备上的可配置固定大小哈希表,其中堆中有对象的链表。整个设备映射到内存中。
- 优化读取,然后创建,然后删除。无法列出对象。
- 创建一个对象,然后并行以16 MiB部分写入其数据,然后提交。
- 一旦提交,对象就是不可变的。目前无法进行版本控制。一个对象在提交时替换所有具有相同键的其他对象(不是创建时)。
- 仅存储对象的尺寸。不收集其他元数据,也无法设置自定义元数据。
- 设备必须小于256 TiB。对象限制为1 TiB。存储的对象峰值最佳数量约为140万亿。
- 未提交的对象可在7天后被删除。对象删除后,占用的空间可能不会立即释放。
历史
该项目以前被称为Turbostore,完全用C编写;您仍然可以在这里看到代码。
依赖项
~9–25MB
~340K SLoC