Page 233 - 《软件学报》2021年第10期
P. 233
朱阅岸 等:构建新型高性能与高可用的键值数据库系统 3205
化写入吞吐量,同时提高备份的数据可见性.LogStore 在商用机器环境中从零开始构建,内嵌复制模
块,在这种情况下,我们可以更透彻地审视单拷贝系统带来的好处;
(2) 新颖的查询执行模型将线程绑定到特定数据分片,结合多版本并发控制技术,以无锁的方式消除并发
控制开销和上下文切换.实验结果表明:这种方法可以充分利用底层硬件资源,系统具有线性扩展性;
(3) 我们对单拷贝系统的特点进行了仔细的评估,测试了系统的读写性能、高可用特性,特别是对单拷贝
系统的索引访问开销进行了评估.
本文第 1 节是相关工作,对日志即数据的 DBMS 和键值数据库系统进行阐述和分析.第 2 节介绍我们的系
统设计,重点论述 LogStore 读写流程以及并发控制机制.第 3 节对系统进行实验评估,验证单拷贝系统对性能和
高可用性规范所带来的提升.第 4 节是总结.
1 相关工作
LogStore 涉及若干研究领域,如键值数据库系统、单拷贝系统实现、热备和数据缓存等.本节阐述这些领域
的最新研究进展.
键值数据库系统
过去 10 年涌现出许多新型的可扩展数据管理系统,这类统称为 NoSQL 的系统废弃了关系型数据库的诸多
[4]
限制,特别是牺牲一致性以达到可扩展需求.键值系统是 NoSQL 系统的典型代表.HBase 是最早、也是应用最
[5]
广泛之一的可扩展分布式键值系统,其完全遵照谷歌公司的 BigTable 模型进行设计开发.HBase 可将数据存储
在一张拥有数亿条数据、数百万列的大表中,通过唯一的 key 与 column family 定位唯一的数据单元,即{key,
[6]
column family,version}cell.RocksDB 是从 Google 的 LevelDB [7,8] 派生出来的,由 Facebook 开发维护.它被设计
成一个嵌入式、高性能、持久的键值存储系统.Facebook 的开发人员在数据层级大小和压缩策略方面优化了
RocksDB.除了 Facebook 之外,雅虎、领英和 MongoDB 等许多其他公司都将 RocksDB 作为存储的基础设施.
但是 RocksDB 使用 WAL+data 双拷贝架构.目前的研究结论是,这一存储模型对于灾难恢复和高可用性规范不
[9]
友好.微软公司开发了 Faster 高性能键值存储系统 .无闩锁数据结构、二级存储的无缝集成和原地更新,使
Faster 获得了优越的性能.Faster 采用类似二次机会置换的缓冲区管理算法.当数据记录从磁盘中读入内存时,
它被保留在称为混合日志的热区域中,其中数据可以就地更新.随着时间的推移,记录被移动到只读区域,最后
被置换回磁盘.LogStore 使用类似的缓冲区管理算法,随机选择数据项移动到冷却区域.如果在一个时间窗口内,
该数据量未被再次访问,那么系统会将该数据项置换出磁盘.与 Faster 不同,LogStore 不仅关注单机性能,还将系
统高可用纳入考察范围.Bitcask [10] 是一个只支持追加操作的键值存储系统,并使用日志作为唯一的数据存储,但
它必须确保内存足够大,以容纳关键字空间.
日志即数据架构(log as database,也被称为单拷贝架构)
亚马逊 Aurora 开发团队认为,数据处理的瓶颈已从存储层转向网络层 [11] .因此,Aurora 只通过网络层传输
redo 日志到 Amazon S3 存储,以减少网络 I/O,同时将记录日志操作与恢复功能委托给存储节点.通过这种方式,
Aurora 能够针对 SLA(service level agreement)提供更好的保障以及在计算层上对并发控制模块、锁模块等进行
深度优化.但是,Aurora 运行在 Amazon 网络服务生态系统之上,外界开发人员无法对日志即数据架构带来的好
处进行细致考察.我们自底向上构建 LogStore,并且验证日志即数据设计理念能够在普通商用计算环境中获得
良好性能.LogBase [12] 是较早的一个单拷贝系统,由新加坡国立大学数据库团队研发.LogBase 在 HBase 的基础
上发展而来,不同于 HBase,它只写入 redo 日志到 HDFS 以优化写性能.LogBase 的另一个贡献是开发了一个多
版本的内存索引,提高了对日志的访问效率.LogBase 需要定期做合并操作,以更好地支持范围查询.合并操作对
性能会产生较大的影响.目前,LogStore 也是采用类似的操作以支持范围查询.不久的将来,我们计划利用历史查
询来指导合并操作,以降低开销.Hyder [13] 将事务处理模块从存储层中独立出来,开发了一系列针对 SSD 的算法,
目的是为了在 SSD 共享数据集群中更好地扩展数据库.LogStore 的目标是面向一般的商用机器.与我们的工作
另外一个类似的系统是多伦多大学的 Query Fresh [14] ,该系统采用日志即数据的单拷贝架构,不仅考虑单机的性