#key-value-store #random-access #hdd #persistent #local-storage #embedded-database #optimized

cannyls

嵌入式持久化键值存储,针对随机访问工作负载和大容量硬盘进行优化

5个版本

使用旧的Rust 2015

0.10.0 2020年8月7日
0.9.4 2020年2月25日
0.9.2 2019年1月16日
0.9.1 2018年10月26日
0.9.0 2018年10月17日

#98 in 数据库实现

Download history 26/week @ 2024-03-11 23/week @ 2024-03-18 28/week @ 2024-03-25 75/week @ 2024-04-01 15/week @ 2024-04-08 19/week @ 2024-04-15 28/week @ 2024-04-22 23/week @ 2024-04-29 25/week @ 2024-05-06 19/week @ 2024-05-13 23/week @ 2024-05-20 10/week @ 2024-05-27 23/week @ 2024-06-03 19/week @ 2024-06-10 15/week @ 2024-06-17 20/week @ 2024-06-24

77 每月下载量
8 crates 中使用

MIT 许可证

345KB
6.5K SLoC

cannyls

Crates.io: cannyls Documentation Build Status License: MIT

CannyLS是一种嵌入式持久化键值存储,针对随机访问工作负载和大容量硬盘进行优化。

CannyLS主要具有以下特性

  • 用于存储称为“块”的对象的本地存储
    • 基本上,一个块是一个简单的键值条目
    • 其独特属性是键是固定长度(128位)且适合存储相对较大的值(例如,几个MB)
  • 提供简单功能
  • 针对大容量硬盘(高达512 TB)的随机访问工作负载进行优化
  • 旨在提供可预测和稳定的读写延迟
    • 在执行操作时,有关磁盘访问次数的(几乎)严格上限
      • 在执行 PUTDELETE 时只有一个磁盘访问,而在执行 PUT 时有两个
    • 没有像压缩和全停GC这样的后台处理,这些处理可能会长时间阻止正常操作
    • 为了消除开销和不确定性,CannyLS没有缓存层
      • 它使用直接I/O以绕过操作系统层缓存(例如,页面缓存)
      • 如果您需要任何缓存层,则由您负责实现
  • 通过 Prometheus 暴露详细的指标。

有关CannyLS的更多详细信息,请参阅 Wiki

文档

依赖项

~4MB
~79K SLoC