CN107958082B - 数据库到数据仓库的离线增量同步方法及系统 - Google Patents
数据库到数据仓库的离线增量同步方法及系统 Download PDFInfo
- Publication number
- CN107958082B CN107958082B CN201711349321.2A CN201711349321A CN107958082B CN 107958082 B CN107958082 B CN 107958082B CN 201711349321 A CN201711349321 A CN 201711349321A CN 107958082 B CN107958082 B CN 107958082B
- Authority
- CN
- China
- Prior art keywords
- data
- database
- incremental
- change
- change event
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2372—Updates performed during offline database operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/283—Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP
Abstract
本发明提供了一种数据库到数据仓库的离线增量同步方法,包括以下步骤:监听数据库表的变更事件;将变更事件回流到分布式文件系统的目录中,同时将变更事件的增量数据按预设时间周期进行归档;将数据库表全量导入数据仓库表中;响应调度指令后,将时间周期内累加的增量数据与数据仓库表数据合成新的全量表,并用新的全量表覆盖之前表数据。本发明表数据全量只同步一次,第二次将表更新的数据和上一次的全量数据进行合并,合并出新的全量表。后续就一直使用增量合并的方式,因此,从数据库表同步变更的增量数据比同步全量表成本就变的很低了,在数据库资源受限的情况下,能完成数据库表到数据仓库的快速同步。
Description
技术领域
本发明涉及数据同步技术领域,特别涉及一种数据库到数据仓库的离线增量同步方法系统。
背景技术
当我们需要对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等开源产品,订阅数据变更事件消息体内容包括:记录的事件类型、记录所有字段名和对应的值、以及能用于识别单个记录事件时序的字段名和值;实时地消费变更事件,并批量写入分布式文件系统的目录中,在本实施例中,通过部署flume agent作为数据搬运工来消费变更事件。
其中,步骤S100还包括通过事件时序标记数据库表每个记录的多个变更事件。
步骤S400具体包括以下内容:
筛选每个记录中最新的变更事件作为增量数据;
通过全局唯一键来关联增量数据与数据仓库表的相同记录,若表为物理单表,则通过表的自增主键ID来作为表唯一键,若表为多个物理库表,则通过表的自增主键ID+分库字段来作为全局唯一键;
将增量数据与数据仓库表数据进行合并。
如图2所示,一种数据库到数据仓库的离线增量同步系统,包括监听单元1,监听数据库表的变更事件;回流单元2,将变更事件回流到分布式文件系统的目录中,同时将变更事件的增量数据按预设时间周期进行归档;导入单元3,将数据库表全量导入数据仓库表中;合并单元4,响应调度指令后,将时间周期内累加的增量数据与数据仓库表数据合成新的全量表,并用新的全量表覆盖之前表数据。
其中,回流单元2包括订阅模块21,对数据库表订阅数据变更事件,实时写入消息队列;消费模块22,实时地消费变更事件,并批量写入分布式文件系统的目录中。监听单元1包括标记模块11,通过事件时序标记数据库表每个记录的多个变更事件。合并单元4包括筛选模块41,筛选每个记录中最新的变更事件作为增量数据;关联模块42,通过全局唯一键来关联增量数据与数据仓库表的相同记录。
在本实施例中,数据库为mysql,数据仓库为Hive,分布式文件系统为hdfs,其变更事件为binlog数据,订阅数据变更事件采用cannal组件(阿里巴巴开源项目,基于mysql数据库binlog的增量订阅&消费),数据库表导入数据仓库表采用datax组件(阿里巴巴开源项目,离线数据同步工具),增量合并采用mapreduc来实现。
本发明通过表数据全量只同步一次,第二次将表更新的数据和上一次的全量数据进行合并,合并出新的全量表。后续就一直使用增量合并的方式,因此,从数据库表同步变更的增量数据比同步全量表成本就变的很低了,在数据库资源受限的情况下,能完成数据库表到数据仓库的快速同步。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步的详细说明,应当理解,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围。特别指出,对于本领域技术人员来说,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种数据库到数据仓库的离线增量同步方法,其特征在于,包括以下步骤:
监听数据库表的变更事件;
将变更事件回流到分布式文件系统的目录中,同时将变更事件的增量数据按预设时间周期进行归档;
所述将变更事件回流到分布式文件系统的目录中,包括以下步骤:
对数据库表订阅数据变更事件,实时写入消息队列;
实时地消费变更事件,并批量写入分布式文件系统的目录中;
将数据库表全量导入数据仓库表中;
响应调度指令后,将时间周期内累加的增量数据与数据仓库表数据合成新的全量表,并用新的全量表覆盖之前表数据。
2.根据权利要求1所述的数据库到数据仓库的离线增量同步方法,其特征在于,所述订阅数据变更事件消息体内容包括:记录的事件类型、记录所有字段名和对应的值、以及能用于识别单个记录事件时序的字段名和值。
3.根据权利要求1所述的数据库到数据仓库的离线增量同步方法,其特征在于,所述监听数据库表的变更事件,包括以下步骤:
通过事件时序标记数据库表每个记录的多个变更事件。
4.根据权利要求3所述的数据库到数据仓库的离线增量同步方法,其特征在于,所述将时间周期内累加的增量数据与数据仓库表数据合成新的全量表,包括以下步骤:
筛选每个记录中最新的变更事件作为增量数据;
通过全局唯一键来关联增量数据与数据仓库表的相同记录;
将增量数据与数据仓库表数据进行合并。
5.根据权利要求4所述的数据库到数据仓库的离线增量同步方法,其特征在于,
若表为物理单表,则通过表的自增主键ID来作为表唯一键;
若表为多个物理库表,则通过表的自增主键ID+分库字段来作为全局唯一键。
6.一种数据库到数据仓库的离线增量同步系统,其特征在于,包括:
监听单元,监听数据库表的变更事件;
回流单元,将变更事件回流到分布式文件系统的目录中,同时将变更事件的增量数据按预设时间周期进行归档;
所述回流单元包括:
订阅模块,对数据库表订阅数据变更事件,实时写入消息队列;
消费模块,实时地消费变更事件,并批量写入分布式文件系统的目录中;
导入单元,将数据库表全量导入数据仓库表中;
合并单元,响应调度指令后,将时间周期内累加的增量数据与数据仓库表数据合成新的全量表,并用新的全量表覆盖之前表数据。
7.根据权利要求6所述的数据库到数据仓库的离线增量同步系统,其特征在于,所述监听单元包括:
标记模块,通过事件时序标记数据库表每个记录的多个变更事件。
8.根据权利要求6所述的数据库到数据仓库的离线增量同步系统,其特征在于,所述合并单元包括:
筛选模块,筛选每个记录中最新的变更事件作为增量数据;
关联模块,通过全局唯一键来关联增量数据与数据仓库表的相同记录。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711349321.2A CN107958082B (zh) | 2017-12-15 | 2017-12-15 | 数据库到数据仓库的离线增量同步方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711349321.2A CN107958082B (zh) | 2017-12-15 | 2017-12-15 | 数据库到数据仓库的离线增量同步方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107958082A CN107958082A (zh) | 2018-04-24 |
CN107958082B true CN107958082B (zh) | 2021-03-26 |
Family
ID=61959141
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711349321.2A Active CN107958082B (zh) | 2017-12-15 | 2017-12-15 | 数据库到数据仓库的离线增量同步方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107958082B (zh) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110457348B (zh) * | 2018-05-02 | 2022-05-10 | 北京三快在线科技有限公司 | 一种数据处理方法及装置 |
CN108710665B (zh) * | 2018-05-15 | 2021-11-16 | 创新先进技术有限公司 | 数据回流方法、装置、系统及设备 |
CN108776934B (zh) * | 2018-05-15 | 2022-06-07 | 中国平安人寿保险股份有限公司 | 分布式数据计算方法、装置、计算机设备及可读存储介质 |
CN113553313B (zh) * | 2018-07-10 | 2023-12-05 | 创新先进技术有限公司 | 一种数据迁移方法及系统、存储介质、电子设备 |
CN109241033A (zh) * | 2018-08-21 | 2019-01-18 | 北京京东尚科信息技术有限公司 | 创建实时数据仓库的方法和装置 |
CN109376149A (zh) * | 2018-08-22 | 2019-02-22 | 中国平安人寿保险股份有限公司 | 将数据落地到数据平台的方法、设备和存储介质 |
CN111767318A (zh) * | 2019-04-01 | 2020-10-13 | 广州精选速购网络科技有限公司 | 一种数据统计方法、装置、电子设备及介质 |
CN110232097A (zh) * | 2019-06-21 | 2019-09-13 | 北京奇艺世纪科技有限公司 | 一种数据同步方法及装置 |
CN110704448A (zh) * | 2019-09-29 | 2020-01-17 | 上海易点时空网络有限公司 | 数据同步方法及装置、服务器 |
CN111400407B (zh) * | 2020-04-10 | 2023-09-26 | 浙江大华技术股份有限公司 | 数据的同步方法及装置、存储介质及电子装置 |
CN112115200B (zh) * | 2020-09-16 | 2023-08-29 | 北京奇艺世纪科技有限公司 | 数据同步方法、装置、电子设备及可读存储介质 |
CN112434087A (zh) * | 2020-12-08 | 2021-03-02 | 中国人寿保险股份有限公司 | 一种跨系统数据比对方法、装置、电子设备及存储介质 |
CN112711599B (zh) * | 2020-12-29 | 2023-02-28 | 食亨(上海)科技服务有限公司 | 数据增量更新方法 |
CN113434598B (zh) * | 2021-06-28 | 2024-03-22 | 青岛海尔科技有限公司 | 实现数据双写的方法、装置与电子装置 |
CN113760952A (zh) * | 2021-08-09 | 2021-12-07 | 深圳前海爱客风信息技术有限公司 | 数据查询方法及装置、存储介质、电子装置 |
CN116561138A (zh) * | 2022-01-28 | 2023-08-08 | 马上消费金融股份有限公司 | 数据处理方法和装置 |
CN117648383A (zh) * | 2024-01-30 | 2024-03-05 | 中国人民解放军国防科技大学 | 一种异构数据库实时数据同步方法、装置、设备及介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102096685A (zh) * | 2009-12-11 | 2011-06-15 | 阿里巴巴集团控股有限公司 | 分布式数据同步到数据仓库的方法及装置 |
CN105243067A (zh) * | 2014-07-07 | 2016-01-13 | 北京明略软件系统有限公司 | 一种实现实时增量同步数据的方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080031316A1 (en) * | 2004-05-12 | 2008-02-07 | Maxim Belotserkovsky B | Carrier Recovery Architecture With Improved Acquisition |
-
2017
- 2017-12-15 CN CN201711349321.2A patent/CN107958082B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102096685A (zh) * | 2009-12-11 | 2011-06-15 | 阿里巴巴集团控股有限公司 | 分布式数据同步到数据仓库的方法及装置 |
CN105243067A (zh) * | 2014-07-07 | 2016-01-13 | 北京明略软件系统有限公司 | 一种实现实时增量同步数据的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN107958082A (zh) | 2018-04-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107958082B (zh) | 数据库到数据仓库的离线增量同步方法及系统 | |
CN102982085B (zh) | 数据迁移系统和方法 | |
CN102637214B (zh) | 基于数据库服务间的通用数据同步方法及其系统 | |
CN106503158B (zh) | 数据同步方法及装置 | |
CN108009258B (zh) | 一种可在线配置的数据采集与分析平台 | |
CN104778175A (zh) | 一种实现异构数据库数据同步的方法及系统 | |
CN101369283A (zh) | 一种内存数据库与物理数据库间的数据同步方法及系统 | |
CN110442651A (zh) | 一种基于kettle实现excel数据自动上传并触发调度的方法 | |
CN104008201A (zh) | 一种数控机床生产信息获取方法 | |
CN107748752B (zh) | 一种数据处理方法及装置 | |
CN103914458A (zh) | 一种海量数据迁移的方法及装置 | |
CN109299121B (zh) | 一种scada系统历史报警高效查询方法 | |
CN112559475B (zh) | 数据实时捕获和传输方法及系统 | |
CN103246549B (zh) | 一种数据转存的方法及系统 | |
CN106663048B (zh) | 日志记录系统、日志记录装置、数据日志记录方法 | |
CN110888774B (zh) | 基于hbase的大数据报表处理方法及装置 | |
CN112988702A (zh) | 异构数据源实时数据传输方法及系统、存储介质及终端 | |
CN107423404A (zh) | 流程实例数据同步处理方法和装置 | |
CN104063468A (zh) | 一种数据报表自动生成及提取方法及装置 | |
CN103218284B (zh) | 一种设备使用率信息获取方法 | |
CN105760485A (zh) | 财务数据抽取方法及系统 | |
CN103327112B (zh) | 基于云存储的桌面同步方法以及实现桌面同步的装置 | |
CN107844566B (zh) | 一种dump控制方法及其系统 | |
CN104346378B (zh) | 一种实现复杂数据处理的方法、装置及系统 | |
CN111858767A (zh) | 同步数据的处理方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |