AC-Key: Adaptive Caching for LSM-based Key-Value Stores

AC-Key: Adaptive Caching for LSM-based Key-Value Stores

基于lsm树的键值存储(Key-Value store, Key-Value)的读性能受到了严重的影响,因为它采用了分级结构来提高写性能。缓存是提高读操作性能的主要技术之一。设计一个高效的缓存算法具有挑战性,因为层次结构掩盖了缓存特定键的成本和收益,并且点查找和范围查询操作之间的权衡使缓存替换决策进一步复杂化

我们提出AC-Key,一种自适应缓存的KeyValue存储来解决这些挑战。AC-Key管理3个不同的缓存组件,分别是键值缓存、键指针缓存和块缓存,并根据工作负载调整它们的大小。AC-Key利用一种新颖的缓存效率因子来捕获缓存成本和缓存收益的异构性。我们通过修改RocksDB来实现AC-Key。评估结果表明,AC-Key在各种工作负载下的性能均高于RocksDB,在相变工作负载下甚至优于最佳的离线固定大小缓存方案

一面临的问题

    在为LSM-KVS设计有效的缓存方案时,存在两个主要的独特挑战。首先,LSM具有多级设计,每个缓存的键-值对(缓存好处)保存的存储I/O可能不同。KV对所在的层越深,如果缓存它,则可以节省更多的存储I/ o。另外,一个键值对所占用的DRAM缓存大小(缓存成本)也因键值大小的不同而不同。对缓存方案来说,评估成本和收益并做出相应的替换决策是一个挑战。第二,两种类型的读操作,即点查找和范围查询,具有完全不同的缓存需求。点查找更倾向于缓存单个键值对(KV)以提高空间效率[6,7]。如果值很大,另一种方法是缓存一个键-指针对(KP,其中指针指向值在存储中的位置)[7]。相比之下,范围查询不能通过缓存零星的单个键来实现,因此人们求助于缓存块来支持范围查询[5,6]。很难理清缓存KV、KP和块之间的权衡,因为它们每个都有特定类型的有利工作负载。此外,设计一个可以处理动态工作负载的自适应缓存方案更具挑战性

二研究内容

本文全面研究了缓存KV、KP和块之间的权衡,并提出AC-Key,一种基于lsm的键值存储的自适应缓存,以结合它们在处理不同工作负载方面的优势。AC-Key为每种类型的条目(KV、KP和block)使用一个des-ignated缓存组件。通过提出的分层自适应缓存算法,利用缓存指导缓存组件大小调整,动态调整每个缓存组件的大小。AC-Key利用一种新的缓存效率因子来量化不同的缓存成本和收益,以辅助缓存组件之间的边界调整以及每个缓存组件内的替换决策。 

 AC-Key Design

     AC-Key(图4)缓存所有三种类型的条目——KV、KP和block——并为每种类型指定缓存组件。与上一节中描述的固定大小的方案不同,AC-Key为每个缓存组件提供了动态大小。通过提出的分层自适应缓存算法调整缓存大小。AC-Key综合考虑了不同缓存项的异构代价和收益以及LSM-KVS独特的层次化结构,利用缓存效率因子定量地指导缓存组件之间的缓存大小调整以及缓存组件内部的替换策略。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值