#key-value #optimized #hdd #random-access #workload #persistent #deadlines

camelliakv

适用于随机访问工作负载和大容量硬盘的嵌入式持久键值存储

1个稳定版本

1.0.0 2023年3月13日

#183 in 数据库实现

自定义许可证

330KB
6.5K SLoC

CamelliaKV

Crates.io: camelliakv Documentation Build Status License: MIT

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

CamelliaKV主要具有以下特性

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

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

文档

依赖关系

~3.5MB
~71K SLoC