
徐梓荐 等:分布式异构数据库数据同步工具
685
Cynomys has shown sound performance. The method is suit able for data synchronization between all other heterogeneous databases with
a similar mechanism like Binlog.
Key words: d ata synchronization; read/wri te separ ation; SQL r eduction
关系型数据库的数据存储方式一般有行式存储和列式存储两种.对于行存储数据库,支持海量数据的高效
更新,然而,当需要分析数据库中隐含的信息时,就可能会涉及一些针对数据库表中某一或某些属性上的聚合,
而这是行式存储数据库的不足.列式存储数据库对于海量数据更新没有很高的处理效率,而对数据分析,特别是
在某些属性上进行分析,往往有很好的查询优势.如果能够构建由行列数据库共同组成的分布式数据库系统,用
行存储数据库接受来自业务线的数据,再通过数据同步将这些数据同步到列存储数据库中进行数据分析,就可
以弥补数据库的上述不足,为真实的业务场景提供一个优化的解决方案.
本文以 MySQL 为对象,开展基于该数据库的数据同步技术研究工作,主要实现了一款基于数据库 Binlog
的分布式数据库中的数据同步工具 Cynomys. 鉴于当前并没有一种针对行存储数据库到列存储数据库的实时
同步工具,本文提出了一种基于 SQL 还原的实现方法,利用标准的 SQL 语句避免底层数据库引擎差异可能导致
的无法进行数据库同步的问题.
本文的主要贡献包括:(1) 设计并实现了 Binlog 解析器 BinParser 以及还原器 BinReducer, 解析器解析并获
取 Binlog 的日志信息,还原器将 BinParser 解析的日志内容还原为可执行的 SQL 语句;(2) 提出了基于 BinParser
和 BinReducer 的异构分布式数据同步方法 TD-Reduction,并开发了基于 TD-Reduction 的数据同步工具
Cynomys;( 3) 针对 ColumnStore 的存储结构提出了延迟提交(delay commit)的优化技术;(4) 本文针对 Cynomys
的性能、功能等方面做了大量实验,结果表明该工具有效且能够正常运行.
1 相关工作
对于分布式架构的数据库及其数据同步解决方案,研究人员提出了若干种体系架构以及基于此的各类问
题的解决方案,如:Stonebraker 提出了一种广域的分布式数据库系统
[1]
,Chen 等人提出了一种基于分布式数据库
的在线数据分割方法
[2]
,Google 开发了可扩展、多版本、全球分布式和同步复制的数据库 Spa nne r
[3]
,Wang 等人
提出了基于中间件的分布式数据同步技术
[4]
.
在商用数据库中,Oracle 和 SAP HANA 都提出了解决异构数据存储的方案.其中,Oracle 在其 12c 版本中加
入了解决异构数据存储问题的新特性 In-memory Option
[5]
.在 12c 版本以前,Oracle 所有的数据都是以行形式进
行存储的.该特性引入后,Oracle 允许用户将指定的表空间内所有的表以列形式存储在单独开辟的一块内存空
间 In-memory Area 中
[6]
,从而在查询分析数据时,对涉及某些属性上聚合的查询操作速度加快,并且这种双格式
架构多占用的内存开销被控制在单一格式架构内存开销的 20%以内
[7]
.SAP HANA 是混合型的内存数据库,它
同时支持行存储以及列存储
[8]
.与 Oracle 不同的是,它需要在创建新表时指定行式或列式存储,两种不同的存储
架构使用不同的存储引擎.这两种商用数据库的方案是针对行列存储数据库有不同的优势所提出的数据存储
方案,而 Cy nomy s 则是将行存储数据库中的数据实时同步或者迁移到列存储数据库中,与以上两种异构存储的
方案定位不同.
当前,常规意义上的数据迁移已经发展得较为成熟,解决方案也已经较为明确,例如基于负载均衡的数据迁
移方法
[9]
.而数据同步可以看做是实时的数据迁移过程.一般的数据同步可以基于数据库日志
[10,11]
、触发器
[12]
等,其中,以日志法最具代表性和可行性.然而由于不同数据库的日志格式差别很大,可供日志分析的接口也有
所不同,所以基于日志法的数据同步也局限于同种数据库,甚至要求版本相同或相近,这限制了数据同步技术的
发展.有人曾提出使用 SQL 还原的方法
[13]
,但该方法是基于 SQL Server 触发器实现的,人工干预程度大、维护
困难.Cynomy s 的基于标准 SQL 语句进行数据同步的方法受到该工作的启发.
在分布式环境下,许多数据库或分布式系统如 Google 的 Chubby,MegaStore,Spanner,Hadoop 中的 Zookeeper
等,都依赖 Paxos 算法
[14]
来保证不同结点之间事务的一致性.Cynomy s 是一款数据同步工具,是从主数据库(行存
文档被以下合辑收录
评论