Kivaloo(发音为";kee-va-lieu";)是一组实用程序,它们共同形成一个数据存储,将最多255字节的键与最多255字节的值相关联。它旨在满足Tarsnap在线备份服务对高性能键值存储的需求,尽管它尚未用于此目的。
目前,kivaloo包括在本地文件系统内提供日志结构存储的块存储(LBS);管理日志结构B+树并为来自单个连接的请求提供服务的键值存储(Kvlds);以及接受多个连接并将请求和响应路由到和来自单个上游连接的请求多路复用器(MUX)。
将来可能会添加其他组件,以添加更多功能(例如,复制)或提供备选方案(例如,其他形式的底层存储)。
Kivaloo是持久的:在数据与磁盘进行fsynch之前,不会确认写入。(lbs实用程序支持数据丢失模式,该模式会跳过fsyncing以进行调试。)。
Kivaloo具有很强的一致性:如果操作A在操作B开始之前完成,操作B将看到操作A的结果。
与大多数基于日志结构存储的数据存储不同,kvlds实用程序根据I/O速率和使用的磁盘空间量执行后台清理;因此不需要单独定期执行压缩。
由于使用B+树来存储键-值对,kivaloo支持范围&34;请求。
在使用临时磁盘存储、具有2 kB B+树页面大小、40字节密钥和40字节值的EC2 c1中型实例上:
批量提取在RAM中以每秒约30,000对的速度运行,从磁盘以每秒约20,000对的速度运行。
在RAM中,批量更新的运行速度约为每秒110,000对;当页面位于操作系统磁盘缓存中时,批量更新速度降至每秒约75,000对;当需要从磁盘加载更新的密钥时,批量更新速度降至每秒60,000对。
随机读取在RAM中的运行速度约为每秒160,000到220,000对,当页面位于操作系统磁盘缓存中时,随机读取速度降至每秒约6,000到11,000对,并且当需要从磁盘加载页面时,磁盘寻道受到限制。
随机混合(50%读取,50%更新)在RAM中以每秒约14,000到30,000对的速度运行,在操作系统磁盘缓存中以每秒约1,000到4,000对的速度运行,并且在需要从磁盘加载页面时受磁盘寻道限制。
热点读取(随机选取一组65536个连续的密钥,以随机顺序读取它们,然后重复-这类似于Tarsnap的读取访问模式之一)在内存中以每秒约220,000对的速度运行,从磁盘以每秒约60,000对的速度运行。