上海2020年5月13日 /美通社/ -- 以键值对(Key-Value,简称KV)作为数据的存储方式,已经在很多场合得到了成功的应用。KV存储以其直观性,降低了很多应用程序调用数据的复杂度,可以获得更高数据的存取效率,但也有其局限性。宝存科技的Open-Channel SSD 定义了一种通用的,高效率的主机端直接访问 FLASH 的标准接口,百度基于此开发出一套高性能KV存储引擎,有效减少写放大对设备性能的影响。

当前KV的不足之处

目前KV的成熟应用场合有:

由于单机内存总量的限制,内存KV有持久化到硬盘的需求,而基于硬盘的KV数据库多使用LSM Tree的方式在文件系统中实现(如RocksDB),在实际应用中会出现以下问题:

尽管很多业务已经从KV的使用中受益,但当前KV的不足限制了KV本该发挥的作用。

百度在Open-Channel SSD上的KV实现

搜索引擎及相关业务对KV有很强的需求。结合对KV的深入理解以及SSD的发展方向,百度选择在Open-Channel SSD平台上实现一套高性能KV,以移除当前KV存在的不足,充分发挥KV在SSD上应有的性能。

Open-Channel SSD是白盒化的NVMe SSD。SSD的底层介质NAND Flash具有先擦后写、寿命有限的特点,因此将NAND Flash组织成主机可见的硬盘需要实现地址映射、垃圾回收、磨损均衡、错误处理等主要逻辑。Open-Channel SSD将实现这些逻辑的基本接口传递到主机层,用户可以将业务逻辑和SSD逻辑结合实现,使用软硬件深度捆绑优化的方式实现同样硬件上的收益大幅度提升。

在百度的Open-Channel KV实现中,SSD不再以块设备形式存在,而是以KV服务的形式呈现给上层业务,KV逻辑向上层提供KV接口。KV接口接收到的键值对将被一步写到物理介质NAND的某个地址上并在内存中记录映射关系,无需经过文件系统/虚拟内存/块设备的层层转换,读取时同理。数据的传输获得的是软件层面最短的路径,因而延迟大幅度缩短。

为什么要用kvm和openstack(Open-Channel的高性能KV存储应用实践)(1)

按照这种方法实现的KV可以解决传统KV存在的问题:

性能对比实测:

为什么要用kvm和openstack(Open-Channel的高性能KV存储应用实践)(2)

为什么要用kvm和openstack(Open-Channel的高性能KV存储应用实践)(3)

Open-Channel平台提供的助力

Open-Channel SSD作为软硬件优化的基础,目前已经有稳定的开发平台,Linux内核也已内置支持。百度Open-Channel KV使用的硬件平台具有以下特点:

总结

作为一个独立的存储引擎,百度Open-Channel KV项目已成功接入多个重要业务,实现了同等级产品中单独提升存储性能和单独优化软件逻辑都无法达到的业务性能提升幅度。此次Open-Channel应用的成功实践,证明了存储类应用在Open-Channel SSD上获得大幅度性能提升的可能性,也验证了Open-Channel平台的可靠性。宝存科技基于Open-Channel的更多创新项目已经在孵化中,未来我们可以看到Open-Channel SSD在更广泛的范围内的成功应用,为高可靠性、高效率、高性价比的IT基础设施带来独特的价值。

,