数据库到数据仓库的离线增量同步方法及系统技术方案

技术编号:17796775 阅读:117 留言:0更新日期:2018-04-25 20:16
本发明专利技术提供了一种数据库到数据仓库的离线增量同步方法,包括以下步骤:监听数据库表的变更事件;将变更事件回流到分布式文件系统的目录中,同时将变更事件的增量数据按预设时间周期进行归档;将数据库表全量导入数据仓库表中;响应调度指令后,将时间周期内累加的增量数据与数据仓库表数据合成新的全量表,并用新的全量表覆盖之前表数据。本发明专利技术表数据全量只同步一次,第二次将表更新的数据和上一次的全量数据进行合并,合并出新的全量表。后续就一直使用增量合并的方式,因此,从数据库表同步变更的增量数据比同步全量表成本就变的很低了,在数据库资源受限的情况下,能完成数据库表到数据仓库的快速同步。

Offline incremental synchronization method and system for database to data warehouse

This invention provides an offline incremental synchronization method of database to data warehouse, which includes the following steps: monitor the change events of the database table, reflow the change events into the directory of the distributed file system, and file the incremental data of the changed events into the row in the default time cycle; import the total number of database tables into the number of data. According to the warehouse table, after the response scheduling instruction, the incremental data accumulated in the time cycle and the data warehouse table data are synthesized to a new full scale, and the previous table data are covered with a new full scale. The total amount of table data is synchronized only once, and the updated data and the last full amount data are merged in the second time to merge the new full scale. In the follow-up, incremental merging has been used, so the incremental data from the database table is lower than the cost of the synchronized total scale, and the database table to the data warehouse can be synchronized quickly when the database resource is limited.

【技术实现步骤摘要】
数据库到数据仓库的离线增量同步方法及系统
本专利技术涉及数据同步
,特别涉及一种数据库到数据仓库的离线增量同步方法系统。
技术介绍
当我们需要对OLTP数据库的某张业务大表进行统计报表分析,以提供一些所需的用于业务决策的数据依据,往往都是用ETL导入工具把数据库表全量导入数据仓库的HIVE表,然后利用大数据的集群资源能力快速地对表加工得出我们需要的统计报表。每天数据库表都有更新(新增、更新或者删除),如果每天都需要看这样的报表的话,就需要每天调度导一次新的HIVE表覆盖之前的,然后在产出新的报表。上述的做法存在以下缺陷:一方面,OLTP数据库是比较宝贵的资源,导入工具在导的过程势必需要限制速率,防止速率太快对造成资源压力,从而导致使用该数据库的上层核心业务应用受到影响,造成用户的不好体验。但是如果数据库表很大,而限速就会导致导入过程变的很长,最终报表产出就会很延迟,这份迟到的数据依据可能就变的毫无意义;另一方面,大部分业务表每天更新数据相对于全表是很少的,可能只占了1%,如果将数据库表全量导入数据仓库表中时,就需要每天把99%重复数据从一个地方搬到另一个地方,本身就白白浪费了很多资源。
技术实现思路
本专利技术的目的是提供一种数据库到数据仓库的离线增量同步方法和系统,解决现有上述的问题。为解决上述问题,本专利技术实施例提供一种数据库到数据仓库的离线增量同步方法,包括以下步骤:监听数据库表的变更事件;将变更事件回流到分布式文件系统的目录中,同时将变更事件的增量数据按预设时间周期进行归档;将数据库表全量导入数据仓库表中;响应调度指令后,将时间周期内累加的增量数据与数据仓库表数据合成新的全量表,并用新的全量表覆盖之前表数据。作为一种实施方式,所述将变更事件回流到分布式文件系统的目录中,包括以下步骤:对数据库表订阅数据变更事件,实时写入消息队列;实时地消费变更事件,并批量写入分布式文件系统的目录中。作为一种实施方式,所述订阅数据变更事件消息体内容包括:记录的事件类型、记录所有字段名和对应的值、以及能用于识别单个记录事件时序的字段名和值。作为一种实施方式,所述监听数据库表的变更事件,包括以下步骤:通过事件时序标记数据库表每个记录的多个变更事件。作为一种实施方式,所述将增量数据与数据仓库表数据合成新的全量表,包括以下步骤:筛选每个记录中最新的变更事件作为增量数据;通过全局唯一键来关联增量数据与数据仓库表的相同记录;将增量数据与数据仓库表数据进行合并。作为一种实施方式,若表为物理单表,则通过表的自增主键ID来作为表唯一键;若表为多个物理库表,则通过表的自增主键ID+分库字段来作为全局唯一键。本专利技术还提供一种数据库到数据仓库的离线增量同步系统,包括:监听单元,监听数据库表的变更事件;回流单元,将变更事件回流到分布式文件系统的目录中,同时将变更事件的增量数据按预设时间周期进行归档;导入单元,将数据库表全量导入数据仓库表中;合并单元,响应调度指令后,将时间周期内累加的增量数据与数据仓库表数据合成新的全量表,并用新的全量表覆盖之前表数据。作为一种实施方式,所述回流单元包括:订阅模块,对数据库表订阅数据变更事件,实时写入消息队列;消费模块,实时地消费变更事件,并批量写入分布式文件系统的目录中。作为一种实施方式,所述监听单元包括:标记模块,通过事件时序标记数据库表每个记录的多个变更事件。作为一种实施方式,所述合并单元包括:筛选模块,筛选每个记录中最新的变更事件作为增量数据;关联模块,通过全局唯一键来关联增量数据与数据仓库表的相同记录。本专利技术相比于现有技术的有益效果在于:表数据全量只同步一次,第二次将表更新的数据和上一次的全量数据进行合并,合并出新的全量表。后续就一直使用增量合并的方式,因此,从数据库表同步变更的增量数据比同步全量表成本就变的很低了,在数据库资源受限的情况下,能完成数据库表到数据仓库的快速同步。附图说明图1为本专利技术的数据库到数据仓库的离线增量同步方法的流程图;图2为本专利技术的数据库到数据仓库的离线增量同步系统的模块连接图。附图标注:1、监听单元;11、标记模块;2、回流单元;21、订阅模块;22、消费模块;3、导入单元;4、合并单元;41、筛选模块;42、关联模块。具体实施方式以下结合附图,对本专利技术上述的和另外的技术特征和优点进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术的部分实施例,而不是全部实施例。如图1所示,一种数据库到数据仓库的离线增量同步方法,包括以下步骤:S100:监听数据库表的变更事件;S200:将变更事件回流到分布式文件系统的目录中,同时将变更事件的增量数据按预设时间周期进行归档;S300:将数据库表全量导入数据仓库表中;S400:响应调度指令后,将时间周期内累加的增量数据与数据仓库表数据合成新的全量表,并用新的全量表覆盖之前表数据。步骤S200具体包括以下内容:对数据库表订阅数据变更事件,实时写入消息队列,在本实施例中,消息队列可以采用比如nsq、kafka等开源产品,订阅数据变更事件消息体内容包括:记录的事件类型、记录所有字段名和对应的值、以及能用于识别单个记录事件时序的字段名和值;实时地消费变更事件,并批量写入分布式文件系统的目录中,在本实施例中,通过部署flumeagent作为数据搬运工来消费变更事件。其中,步骤S100还包括通过事件时序标记数据库表每个记录的多个变更事件。步骤S500具体包括以下内容:筛选每个记录中最新的变更事件作为增量数据;通过全局唯一键来关联增量数据与数据仓库表的相同记录,若表为物理单表,则通过表的自增主键ID来作为表唯一键,若表为多个物理库表,则通过表的自增主键ID+分库字段来作为全局唯一键;将增量数据与数据仓库表数据进行合并。如图2所示,一种数据库到数据仓库的离线增量同步系统,包括监听单元1,监听数据库表的变更事件;回流单元2,将变更事件回流到分布式文件系统的目录中,同时将变更事件的增量数据按预设时间周期进行归档;导入单元3,将数据库表全量导入数据仓库表中;合并单元4,响应调度指令后,将时间周期内累加的增量数据与数据仓库表数据合成新的全量表,并用新的全量表覆盖之前表数据。其中,回流单元2包括订阅模块21,对数据库表订阅数据变更事件,实时写入消息队列;消费模块22,实时地消费变更事件,并批量写入分布式文件系统的目录中。监听单元1包括标记模块11,通过事件时序标记数据库表每个记录的多个变更事件。合并单元4包括筛选模块41,筛选每个记录中最新的变更事件作为增量数据;关联模块42,通过全局唯一键来关联增量数据与数据仓库表的相同记录。在本实施例中,数据库为mysql,数据仓库为Hive,分布式文件系统为hdfs,其变更事件为binlog数据,订阅数据变更事件采用cannal组件(阿里巴巴开源项目,基于mysql数据库binlog的增量订阅&消费),数据库表导入数据仓库表采用datax组件(阿里巴巴开源项目,离线数据同步工具),增量合并采用mapreduc来实现。本专利技术通过表数据全量只同步一次,第二次将表更新的数据和上一次的全量数据进行合并,合并出新的全量表。后续就一直使用增量合并的方式,因此,从数据库表同步变更的增量数据比同步全量表成本就变的很低了,在数据本文档来自技高网...
数据库到数据仓库的离线增量同步方法及系统

【技术保护点】
一种数据库到数据仓库的离线增量同步方法,其特征在于,包括以下步骤:监听数据库表的变更事件;将变更事件回流到分布式文件系统的目录中,同时将变更事件的增量数据按预设时间周期进行归档;将数据库表全量导入数据仓库表中;响应调度指令后,将时间周期内累加的增量数据与数据仓库表数据合成新的全量表,并用新的全量表覆盖之前表数据。

【技术特征摘要】
1.一种数据库到数据仓库的离线增量同步方法,其特征在于,包括以下步骤:监听数据库表的变更事件;将变更事件回流到分布式文件系统的目录中,同时将变更事件的增量数据按预设时间周期进行归档;将数据库表全量导入数据仓库表中;响应调度指令后,将时间周期内累加的增量数据与数据仓库表数据合成新的全量表,并用新的全量表覆盖之前表数据。2.根据权利要求1所述的数据库到数据仓库的离线增量同步方法,其特征在于,所述将变更事件回流到分布式文件系统的目录中,包括以下步骤:对数据库表订阅数据变更事件,实时写入消息队列;实时地消费变更事件,并批量写入分布式文件系统的目录中。3.根据权利要求2所述的数据库到数据仓库的离线增量同步方法,其特征在于,所述订阅数据变更事件消息体内容包括:记录的事件类型、记录所有字段名和对应的值、以及能用于识别单个记录事件时序的字段名和值。4.根据权利要求1所述的数据库到数据仓库的离线增量同步方法,其特征在于,所述监听数据库表的变更事件,包括以下步骤:通过事件时序标记数据库表每个记录的多个变更事件。5.根据权利要求4所述的数据库到数据仓库的离线增量同步方法,其特征在于,所述将增量数据与数据仓库表数据合成新的全量表,包括以下步骤:筛选每个记录中最新的变更事件作为增量数据;通过全局唯一键来关联增量数据与数据仓库表的相同记录;将增量数...

【专利技术属性】
技术研发人员:胡加华
申请(专利权)人:杭州有赞科技有限公司
类型:发明
国别省市:浙江,33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1