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] ,该系统采用日志即数据的单拷贝架构,不仅考虑单机的性
   228   229   230   231   232   233   234   235   236   237   238