多源异构数据增量抽取的方法及装置的制造方法

xiaoxiao2021-2-28  212

多源异构数据增量抽取的方法及装置的制造方法
【技术领域】
[0001] 本发明涉及数据库技术领域,具体地,涉及一种多源异构数据增量抽取的方法及 装置。
【背景技术】
[0002] 随着信息技术的发展,越来越多的业务数据被产生,对于企业来说,数据是企业的 财富,是一种重要的战略资源。当企业积累了一定量的数据时,基于数据仓库技术,对数据 进行挖掘分析,能够从中发现很多有价值的信息。在数据仓库的构建过程中,需要将各种分 布的、异构的数据源中的数据抽取后进行清洗、转换和加载(Extraction Transformation& Load,ETL),最后进入到数据仓库中。ETL是数据仓库实施过程中非常重要的一个步骤,通常 占到数据仓库整个开发时间的60%~80%左右。ETL处理抽取效率的高低、转换质量的好 坏,直接影响着数据仓库的建设和数据挖掘结果的有效性。根据抽取方式不同,ETL抽取过 程大体上分为全量抽取和增量抽取。全量抽取一般在数据仓库刚刚建立或者数据仓库尚未 存在数据的情况下使用,而且该过程的使用十分方便。增量抽取只是针对某个时间段内曾 有过操作的数据进行操作,相对于全量抽取,它是数据仓库后期维护的重要组成部分。而 且,在数据集成领域,为提升数据处理效率,增量数据抽取已成为其中不可缺少的关键技 术。
[0003] 由于企业的许多业务数据所处的平台和使用的数据源存在差异,造成不同地域的 业务数据库中的增量数据难以抽取集成到统一的数据仓库中,从而不能全面的提供准确的 业务数据,也就不能为决策者给予所需要的信息。虽然现有的ETL工具可以对来自多数据源 的数据进行抽取、转换和加载工作,但是在使用效率和操作性等方面存在很多不足,而且对 多地市分布的异构数据源不能完全支持使用,因此建立高效的支持多源异构的ETL增量抽 取过程对于后期进行业务数据挖掘非常重要。
[0004] 增量抽取需要快速而准确的获取自上次抽取以来数据库中要抽取的表中变化的 数据,同时又不能对业务系统造成太大压力。在ETL使用过程中,增量抽取的方式较全量抽 取应用更广,实现过程也更加复杂。目前增量数据抽取常用的捕获变化数据的方式有如下 几种:
[0005] (1)触发器方式
[0006] 触发器方式的主要思想是通过激活触发器达到捕获变化数据的目的。这种方式在 要抽取的表上建立需要的触发器,一般需要建立插入、修改和删除三种触发器。每当源表中 的数据发生变化,触发器捕获变更的数据并把数据保存到中间临时表里,然后抽取线程将 这些变更的数据从临时表里取出并加载到数据仓库。
[0007] (2)时间戳方式
[0008] 时间戳方式主要是根据日期和时间来捕获被操作过的记录,该方式的主要思想是 通过时间戳的更新捕获曾操作过的记录。这种捕获数据的方式需要源表中有时间戳字段或 者可以增加时间戳字段。在数据抽取过程中,只需要将上次获取的时间与当前源表记录的 时间戳字段中的时间进行比对,获取那些曾被操作过的数据加载到数据仓库中。
[0009] (3)全表删除方式
[0010] 全表删除方式实现较简单,该方式是在数据抽取之前,首先进行全表的数据删除 操作,再将源表中的所有数据全部重新加载进来。
[0011] (4)全表比对方式
[0012] 全表比对方式是将源表中的记录与目标表中的记录进行逐一的比对,捕获新增 的,不一致和不存在的数据,分别对应发生增加、修改和删除操作的记录,然后根据比对结 果做出相应操作。目前,又衍生出一种新的全表比对方式,该方式需要为源表和目标表分别 创建一个结构一样的MD5临时表,该表存着两个字段,一是对应源表和目标表中分别记录的 主键值,另一个是将源表和目标表每条记录的字段以及数据值经过MD5分别加密后得到的 MD5校验码。在增量数据抽取时,首先,将源表与目标表中的记录和数据进行MD5加密,接着, 将对应表中记录的主键值和加密结果分别存放至对应的MD5临时表。紧接着,比较两个临时 表中的主键值和校验码,如果两临时表主键值相同,MD5校验码比对结果不同,则说明源数 据发生变化,需要进行Update操作;如果源表对应的MD5临时表中主键存在,而目标表对应 的MD5临时表没有该主键,则说明需要新增数据,进行Insert操作;如果源表对应的MD5临时 表中主键不存在,而目标表对应的MD5临时表却有该主键,说明该数据已经被删除,则进行 Delete 操作。
[0013] (5)日志表方式
[0014] 对于生产数据库,可以创建一个业务日志表,用于记录特定的业务数据的变化情 况。当进行增量数据抽取时,只需要读取业务日志表中的数据,继而捕获变化的数据以及相 应的操作。
[0015] (6)事务日志分析方式
[0016] 事务日志分析方式就是通过分析数据库本身的日志文件来捕获变化数据从而完 成增量数据抽取。在增量抽取过程中,根据指定的时间,获取源数据库的日志文件中数据操 纵语言记录(DDL)的信息,得到最近一次增量抽取之后所进行的所有操作,再根据这些信息 对数据仓库进行相应的操作来完成本次的增量抽取。
[0017] (7)数据库捕获方式(CDC)
[0018] 数据库捕获方式的原理是通过分析数据库自身的日志来判断变化的数据。Oracle 针对变化的数据引入了变化数据捕获CDC(Change Data Capture)方式。CDC可以自动捕获 到最近一次数据抽取之后被操作过的记录,并且在对源库中的数据表插入、更新和删除操 作后,将操作的数据提取到变更表中,最后使用可控的方式利用视图提供给数据仓库完成 数据抽取。
[0019] 下面分别对上面提到的7种变化数据捕获方法分析各自的不足:
[0020] (1)触发器方式需要在源业务系统中建立三种触发器,需要对源数据库进行修改, 如果数据的变化十分频繁,对系统性能开销会造成很大压力,而且用户一般不允许修改源 数据库。
[0021] (2)时间戳方式实现较简单,但是这种方法无法捕获到数据的删除操作,不能支持 表被物理删除的场景。另外,源数据库中的表并不完全都具有时间戳字段,所以时间戳方式 在数据抽取的完备性上不足,数据准确性也不能得到保证。
[0022] (3)全表删除方式的实现是最简单的,但是这种方式只适用于对抽取时间不严格 或者数据量较小的场景,对于处理大数据量,显然时间的消耗是不能接受的。
[0023] (4)全表比对方式的规则十分简单且容易实现,而且对源表结构没有侵入性,但是 在实施过程中需要进行一一比对,在性能上相对来说比较差。
[0024] (5)日志表方式抽取的规则方便而简单,对源表结构没有侵入性,但是日志表需要 在建表初期由用户建立,这种方式对用户的技术水平要求过高,而且对系统的开销很大,在 性能上也不是最佳的方式,后期维护麻烦。
[0025] (6)事务日志分析方式和日志表方式类似,虽然它拥有自己的系统事务日志而不 需要用户去建立,但是性能也不是最佳的。
[0026] (7)数据库捕获方式自行实现ETL过程,但由于业务系统数据库版本与产品不统 一,实现过程相对复杂,并且需要深入研究方能实现,CDC产品推出时间短,存在一些BUG., 暂时无法推广使用。
[0027] 通过上述可知,现有数据增量抽取的方案,准确率和效率低,以及完备性不足。

【发明内容】

[0028] 本发明实施例提供了一种多源异构数据增量抽取的方法及装置,用以提高增量抽 取的准确率,效率以及完备性。
[0029] -方面,本发明实施例提供了一种多源异构数据增量抽取的方法,用以提高增量 抽取的准确率,效率以及完备性,该方法包括:
[0030] 解析源数据库事务日志,从解析结果中获取源数据库中变化数据表的主键信息、 数据操作类型和操作时间戳信息;
[0031 ]根据主键信息、数据操作类型和操作时间戳信息,确定增量变化的数据,将增量变 化的数据抽取到数据仓库中。
[0032] 另一方面,本发明实施例还提供了一种多源异构数据增量抽取的装置,用以提高 增量抽取的准确率,效率以及完备性,该装置包括:
[0033] 解析单元,用于从解析结果中获取源数据库中变化数据表的主键信息、数据操作 类型和操作时间戳信息;
[0034] 抽取单元,用于根据所述主键信息、数据操作类型和操作时间戳信息,确定增量变 化的数据,将增量变化的数据抽取到数据仓库中。
[0035]与现有技术中传统的时间戳方式无法捕获被物理删除的数据,以及目前的ETL工 具在抽取、转换和加载工作中使用效率和操作性等方面存在很多不足,不能完全支持对多 地市分布的异构数据源进行抽取相比较,本发明实施例提供的技术方案,以数据库事务日 志为基础,首先解析源数据库事务日志,获取源数据库事务日志的分析结果,从中可以得到 数据库的具体变化数据,从该具体变化数据中读取主键信息、数据操作类型以及操作时间 戳信息等,再结合传统的时间戳方式捕获增量变化的数据,最后根据操作类型字段进行批 量操作执行增量抽取。通过解析数据库事务日志,可以根据操作类型字段设置批量操作,节 省了大量时间和系统资源,极大提高了增量数据抽取效率;同时,事务日志方法可以不限哪 种数据库类型都可以使用,支持多源异构数据增量抽取,实现了保证数据的准确性和完备 性,降低生产系统的压力,节省大量时间和系统资源,支持多源异构的数据抽取,极大提高 了增量数据抽取的效率。
【附图说明】
[0036] 此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,并不 构成对本发明的限定。在附图中:
[0037] 图1为本发明实施例中多源异构数据增量抽取的方法的流程示意图;
[0038] 图2为本发明另一实施例中多源异构数据增量抽取的方法的流程示意图;
[0039] 图3为本发明实施例中源数据库中记录抽取时间戳信息的表的结构示意图;
[0040] 图4为本发明实施例中查询语句XML配置方法的示意图;
[0041] 图5为本发明实施例中Kettle执行增量抽取的转换的示意图;
[0042] 图6是本发明实施例中多源异构数据增量抽取的装置的结构示意图;
[0043] 图7是本发明另一实施例中多源异构数据增量抽取的装置的结构示意图。
【具体实施方式】
[0044]为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施方式和附图,对 本发明做进一步详细说明。在此,本发明的示意性实施方式及其说明用于解释本发明,但并 不作为对本发明的限定。
[0045]针对现有技术中传统的时间戳方式无法捕获被物理删除的数据以及目前的ETL工 具在抽取、转换和加载工作中使用效率和操作性等方面存在很多不足,不能完全支持对多 地市分布的异构数据源进行抽取,本方案提供一种对多源异构数据增量抽取的方法和装 置。该方法以数据库事务日志为基础,在可靠性的保证下,首先解析数据库事务日志,获取 数据库事务日志的分析结果,从中可以得到数据库的具体变化数据,从该具体变化数据中 读取主键信息、数据操作类型以及操作时间戳信息等,然后在生产数据库中建立临时表,将 得到的结果汇总到该临时表里,再结合传统的时间戳方式捕获增量变化的数据,最后根据 操作类型字段进行批量操作执行增量抽取,抽取的数据集以Zip文件存储,以便后续进行转 换加载以及数据恢复。在该方法的指导下,弥补了时间戳方式无法捕获删除操作的不足,能 够保证数据的准确性和完备性,降低生产系统的压力,节省大量时间和系统资源,支持多源 异构的数据抽取,极大提高了增量数据抽取的效率。
[0046] 本发明提供的技术方案可通过如下步骤来描述:
[0047] 1、在数据抽取之前需要对数据库事务日志进行可靠性分析;
[0048] 2、借助数据库工具LogMiner对事务日志进行解析,获取数据的主键信息、数据操 作类型和操作时间戳信息等,并存储在临时表里;
[0049] 3、根据临时表的时间戳和数据操作类型字段判断增量变化并执行增量抽取,抽取 的数据集以Zip文件存储;
[0050] 4、执行方案之后重复步骤1。
[0051] 以上步骤可以形成一个良性循环,每隔一段时间调整一次增量抽取方案,可以动 态地保持装置的运行性能,提高增量数据抽取的效率。
[0052] 下面对本发明的技术方案进行详细介绍。
[0053] 本发明实施例提供了一种多源异构数据增量抽取的方法及装置,用以提高增量抽 取的准确率,效率以及完备性。
[0054] -方面,本发明实施例提供了一种多源异构数据增量抽取的方法,用以提高增量 抽取的准确率,效率以及完备性,图1为本发明一个实施例中多源异构数据增量抽取的方法 的流程示意图,如图1所示,该方法包括如下步骤:
[0055] 步骤102:解析源数据库事务日志,从解析结果中获取源数据库中变化数据表的主 键信息、数据操作类型和操作时间戳信息;
[0056] 步骤103:根据所述主键信息、数据操作类型和操作时间戳信息,确定增量变化的 数据,将增量变化的数据抽取到数据仓库中。
[0057]与现有技术中传统的时间戳方式无法捕获被物理删除的数据,以及目前的ETL工 具在抽取、转换和加载工作中使用效率和操作性等方面存在很多不足,不能完全支持对多 地市分布的异构数据源进行抽取相比较,本发明实施例提供的技术方案,以数据库事务日 志为基础,首先解析源数据库事务日志,获取源数据库事务日志的分析结果,从中可以得到 数据库的具体变化数据,从该具体变化数据中读取主键信息、数据操作类型以及操作时间 戳信息等,再结合传统的时间戳方式捕获增量变化的数据,最后根据操作类型字段进行批 量操作执行增量抽取。通过解析数据库事务日志,可以根据操作类型字段设置批量操作,节 省了大量时间和系统资源,极大提高了增量数据抽取效率;同时,事务日志方法可以不限哪 种数据库类型都可以使用,支持多源异构数据增量抽取,实现了保证数据的准确性和完备 性,降低生产系统的压力,节省大量时间和系统资源,支持多源异构的数据抽取,极大提高 了增量数据抽取的效率。
[0058] 图2为本发明另一实施例中多源异构数据增量抽取的方法的流程示意图,如图2所 示,在上述步骤102之前,还可以包括:
[0059] 步骤101:对源数据库事务日志进行可靠性分析,找出满足可靠性条件的源数据库 事务日志;
[0060] 解析源数据库事务日志,包括:对所述满足可靠性条件的源数据库事务日志进行 解析。
[0061] 具体实施时,可靠性指在规定的条件下和规定的时间内,完成规定功能的能力。由 于本方案是以数据库事务日志分析为基础的,因此事务日志的可靠性决定了对目标库的操 作准确性。所以在进行数据抽取之前需要确定数据库日志的可靠性分析。
[0062] 所述可靠性条件为:读源数据库事务日志的速度与写源数据库事务日志速度的比 值为S/(S_L),其中,S为源数据库事务日志文件所占用的物理空间大小,L为读源数据库事 务日志文件滞后于写源数据库事务日志文件的物理空间大小,1 < L < S-1。下面对该可靠性 条件的分析和研究过程介绍如下:
[0063] 假设日志文件(本发明实施例中提到的日志文件均是指源数据库事务日志文件) 所占用的物理空间大小为SizeQogfile),读取日志的速度为V r,写日志的速度为Vw。由于读 取日志操作滞后于写日志操作,因此假设Late(l〇gf ile)为读操作滞后于写操作的物理空 间大小。那么,如果想要保证数据库事务日志内容不被丢失,并且可靠性的读出日志文件记 录,需要满足以下条件:
[0064]
[0065] 其中,k为反复读取日志的次数(k M,k为正整数)。
[0066] 进一步推导,可以得出如下结果:
[0068]令Size(logfile) = S,Late(logfile) = L,则有:
[0072] 所以,要保证数据库事务日志内容不被丢失,必须满足读日志的速度是写日志速
[0073] 如果一个文件正在被写操作,则会被禁止其它读写操作,因此有关系1 < L < S-1。 当读取次数k不断增大时,读写速度比例接近于1。只有符合上述条件得到的日志文件才是 可靠地事务日志文件,只有当日志文件可靠时,才能保证以日志文件为基础的数据抽取的 准确性。
[0074] 在可靠性的保证下,接下来本方案阐述数据库事务日志的解析方法和增量抽取。
[0075] 首先,介绍上述步骤102的数据库事务日志的解析方法。
[0076] 具体实施时,本发明实施例中提到的数据库事务日志均指的是源数据库事务日 志,数据库事务日志中记录的信息包括:数据库的更改历史,操作类型(Insert,Update, Delete等),更改对应的SCN号(System Change Number:用来标记数据库在过去时间内的状 态和轨迹)以及执行这些操作的用户信息等,但其记录的原始日志是二进制存储,直接解析 根本无法看懂。在上述步骤102中,对事务日志进行解析的方法有多种,接下来本方案介绍 借助数据库工具LogMiner对事务日志进行解析的方法。
[0077] 数据库的事务日志需要使用数据库工具LogMiner进行解析。由于数据库事务日志 中记录的并非原始的对象名称,而只是他们在数据库中的内部编号。为了便于识别解析出 的SQL结果,需要使用原始对象的名称,因此需要用到LogMiner提取数据字典信息。接下来 首先介绍一下数据库工具LogMiner:
[0078] LogMiner包含两个包:
[0079] ①0131118_1〇81]1111'_(1包,这个包只包括一个用于提取数据字典信息的过程,即dbms_ logmnr_d.build(dictionary_filename varchar2,dietionary_location varchar2)过 程。
[0080] ②Dbms_logmnr包,它包括三个存储过程:
[0081] #dbms_logmnr.add_logfile(name varchar2,options number),用来添加 /删除 用于分析的日志文件 ;
[0082] #dbms_logmnr.start_logmnr(start_scn number,end_scn number,start_time number,end_time number,dictf ilename varchar2,options number),用来开启日志分析 工作;
[0083] #dbms_logmnr. end_logmnr(),用来终止分析会话,它将回收Log_Miner所占用 的内存。
[0084] 具体解析如下步骤1) 一6)所示:
[0085] 1)创建数据字典文件目录
[0087]其中,字段VALUE存放的值/data/cyx/logmnr就是数据字典文件存放的目录,如果 VALUE为空,需要更改设置。
[0088] 2)创建数据字典文件
[0089] SQL>exec dbms_logmnr_d . bui Id (di ct ionary_f ilename = >,dic.ora,, dictionary_location = >,/data6/cyx/logmnr,);
[0090] 其中,dictionary_location指的是字典信息文件的存放位置,即步骤1)中VALUE 的值;dictionary_f ilename指的是放于字典信息文件的名字,可以任意取;
[0091] 3)添加要分析的事务日志文件
[0092] SQL>exec dbms_logmnr.add_logfile(logfilename = >Vdata6/cyx/raclarch/ arch_l_197·arc',options=>dbms_logmnr.new);
[0093] 其中,logf ilename是事务日志文件对应的路径;
[0094] options选项有三个参数可以用:
[0095] NEW-表示创建一个新的日志文件列表;
[0096] ADDFILE-表示向这个列表中添加日志文件;
[0097] REM0VEFILE-表示向这个列表中删除日志文件。
[0098] 4)使用LogMiner进行日志分析
[0099] SQL>exec dbms_logmnr.start_logmnr(dictionary_f ilename = > Vdata6/cyx/ logmnr/dic.ora,)
[0100] 5)查看日志分析的结果
[0101] SQL>select sql_redo from v$logmnr_contents where username ='xxxx';
[0102] 6)终止日志分析事务,释放内存
[0103] SQL>exec dbms_logmnr.end_logmnr( )〇
[0104] 根据上述内容可以获取数据库事务日志的分析结果,从中可以得到数据库的具体 变化数据,从该具体变化数据中读取。
[0105] 接下来建立临时表,用于存储上述主键信息、数据操作类型以及操作时间戳信息 等,以便后续判断增量变化数据时使用。具体表结构设计如下表1所示:
[0106] 表1数据库事务日志解析结果临时表
[0109] 其中,L0G_ACTI0N取值为(Insert, Update, Delete),代表该条记录发生的操作类 型。
[0110] 后续介绍增量数据抽取时,需要根据该临时表的操作时间戳字段和操作类型字段 进行数据的抽取判断,这样通过解析数据库事务日志,可以根据操作类型字段设置批量操 作,节省了大量时间和系统资源,极大提高了增量数据抽取效率。同时,事务日志方法可以 不限哪种数据库类型都可以使用,支持多源异构数据增量抽取。
[0111] 接着,介绍上述步骤103的增量抽取。
[0112] 具体实施时,上述步骤103可以包括:
[0113] 根据所述数据操作类型和操作时间戳信息,确定增量变化的数据及数据类型;即 判断增量变化,确定增量变化的数据,以及该增量变化的数据是何种类型(是删除操作的增 量变化数据,还是:更新或者插入操作的增量变化数据)
[0114] 根据所述主键信息、增量变化的数据类型,将增量变化的数据抽取到数据仓库中。
[0115] 具体地,可以包括:
[0116]根据临时表里的数据操作类型和操作时间戳信息,确定增量变化的数据及类型;; [0117]根据临时表里的主键信息、增量变化的数据类型,将增量变化的数据增量抽取到 数据仓库中。
[0118] 首先,介绍如何确定(判断)增量变化的数据:
[0119] 具体实施时,本发明实施例提供的多源异构数据增量抽取的方法还包括:上述提 到的建立临时表,将所述主键信息、数据操作类型和操作时间戳信息存储在所述临时表里;
[0120] 根据所述数据操作类型和操作时间戳信息,确定增量变化的数据及数据类型,包 括:
[0121] 当临时表中的数据操作类型字段为删除操作时,比较临时表的操作时间戳和源数 据库中记录抽取时间戳信息的表中的操作时间戳,如果临时表的操作时间戳大于源数据库 中记录抽取时间戳信息的表中的操作时间戳,确定目标数据是增量变化数据,类型是删除 操作的增量变化数据;
[0122] 当临时表中的数据操作类型字段为更新或者插入操作时,如果源数据库中已有或 者已配置的创建时间戳大于执行上次增量抽取的时间戳,或者修改时间戳大于执行上次增 量抽取的时间戳,确定目标数据是增量变化数据,类型是更新或者插入操作的增量变化数 据。
[0123] 下面以一个小实施例进行介绍增量变化判断如下:
[0124] 根据上述临时表的操作时间戳(L0G_TMESTAMP)字段判断增量变化。其需要和源 数据库中记录抽取时间戳信息的表CDC_HME进行比较,该表存储两个时间戳字段CURRENT_ LOAD和LAST_L0AD。其中CURRENT_L0AD记载的是执行本次增量抽取的时间戳信息,LAST_ LOAD记载的是执行上次增量抽取的时间戳信息,该表的字段类型均为时间戳类型,CDC_ ??ΜΕ表结构如图3所示。
[0125] 为了提高抽取效率,本方案结合时间戳方式判断增量变化,不需要逐一比较临时 表的时间戳L0G_I1MESTAMP和⑶C_TME中的LAST_L0AD时间戳。优选地,根据临时表中操作 类型字段不同分为两种判断规则:
[0126] a)如果临时表中的操作类型字段为Delete,比较临时表的时间戳L0G_TMESTAMP 和CDCJIME中的LAST_L0AD时间戳,如果LOGJIMESTAMP大于LAST_L0AD,即认为该行数据是 增量变化数据。
[0127] b)如果临时表中的操作类型字段为Update(更新)或者Insert(插入)操作,只需根 据源数据库中已有或者配置的创建时间戳大于LAST_L0AD或者修改时间戳大于LAST_L0AD 判断为增量变化的数据。当然,也可以通过比较临时表的时间戳L0G_HMESTAMP和⑶C_I1ME 中的LAST_L0AD时间戳,来确定更新或者插入操作的增量变化数据。
[0128] 另外,本发明实施例中提到的大于可以理解为在操作时间上的晚于。上述提到创 建时间戳可以为Insert操作中的一种操作,修改时间戳操作可以为Update操作中的一种操 作。
[0129] 将数据库事务日志解析方法和时间戳方法结合,可以弥补时间戳方法捕获不了删 除操作的弊端,支持数据被物理删除的场景,同时又利用了时间戳方法简单快捷的优点,支 持后续使用XML配置的方式并发的执行增量抽取,以达到快速、高效、准确捕获增量数据的 目的。
[0130] 判断为增量变化数据后,需要根据上述规则分为两种办法执行增量抽取:
[0131] 具体实施时,根据所述主键信息、增量变化的数据类型,将增量变化的数据抽取到 数据仓库中,可以包括:
[0132] 当确定目标数据是删除操作的增量变化数据时,将临时表中解析出的主键信息抽 取出来,在加载数据前,根据主键信息,对数据仓库执行删除操作。
[0133] 当确定目标数据是更新或者插入操作的增量变化数据时,将查询语句配置在可扩 展标记语言XML文件中执行抽取,根据主键信息,对数据仓库执行数据更新或插入操作。
[0134] 下面以一个小实施例进行介绍增量抽取如下:
[0135] 如果临时表中的操作类型字段为Delete,而且L0G_TMESTAMP大于LAST_L0AD,则 将临时表中解析出的数据主键抽取出来,在加载数据前根据主键对数据仓库执行删除操 作。
[0136] 如果临时表中的操作类型字段Update或者Insert操作,只需根据源数据库中已有 或者配置的创建时间戳大于LAST_L0AD或者修改时间戳大于LAST_L0AD判断为增量变化的 数据,将查询语句配置在XML文件中执行抽取,然后根据主键对数据仓库执行数据更新或插 入操作。
[0137] 其中XML配置的格式和Kettle执行增量抽取的转换示例如图4和图5所示:图4为本 发明实施例中查询语句XML配置方法的示意图;图5为本发明实施例中Kettle执行增量抽取 的转换的示意图;其中,Kettle为ETL服务器上部署一套数据抽取的第三方工具,在后续介 绍多源异构数据增量抽取的装置的时候会介绍到。
[0138] 在Kettle中执行增量数据抽取,需要先进行删除操作,接着再进行插入或更新操 作,以免主键发生冲突。
[0139]下面对存储增量数据进行介绍。
[0140]具体实施时,如图2所示,本发明实施例提供的技术方案还可以包括步骤104:
[0141]将抽取的增量变化的数据存储在文本格式txt文件中;
[0142] 将存储在文本格式txt文件中的增量变化的数据以Zip压缩包方式存储。
[0143] 在一个实施例中,步骤104中将抽取的增量变化的数据存储在文本格式txt文件 中,包括:
[0144] 将删除操作的增量变化数据存储到第一文本格式txt文件中;
[0145]将更新或者插入操作的增量变化数据存储到第二文本格式txt文件中。
[0146] 具体地,执行完抽取后,将抽取的增量变化数据存放在txt文件中,以Zip压缩包方 式存放。根据增量抽取的两种操作规则,将删除Delete数据主键存放到一个txt文件中,文 件名以"D_XXXLOG_TIMESTAMP"存放,插入Insert和更新Update数据一起存放到一个txt文 件中。这样在执行数据加载时,可以先对文件名进行判断,如果有"D_"开头的文件,先执行 删除操作,然后再执行插入或更新操作,不至于引起主键冲突。
[0147] 具体实施时,如图2所示,本发明实施例提供的多源异构数据增量抽取的方法还可 以包括步骤105:更新源数据库中记录抽取时间戳信息的表中的操作时间戳信息。
[0148] 具体地,执行抽取结束后,删除源数据中根据事务日志建立的临时表,同时更新 LAST_L0AD为本次增量抽取时间戳信息。
[0149] 基于同一发明构思,本发明实施例中还提供了一种多源异构数据增量抽取的装 置,如下面的实施例所述。由于一种多源异构数据增量抽取的装置解决问题的原理与一种 多源异构数据增量抽取的方法相似,因此一种多源异构数据增量抽取的装置的实施可以参 见一种多源异构数据增量抽取的方法的实施,重复之处不再赘述。以下所使用的,术语"单 元"或者"模块"可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置 较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
[0150] 图6是本发明实施例中多源异构数据增量抽取的装置的结构示意图,如图6所示, 该装置包括:
[0151 ]解析单元20,用于解析源数据库事务日志,从解析结果中获取源数据库中变化数 据表的主键信息、数据操作类型和操作时间戳信息;
[0152] 抽取单元30,用于根据所述主键信息、数据操作类型和操作时间戳信息,确定增量 变化的数据,将增量变化的数据抽取到数据仓库中。
[0153] 具体实施时,所述解析单元20用于解析数据库的事务日志文件,得到数据库的具 体变化数据,从该具体变化数据中读取主键信息、数据操作类型及操作时间戳信息等,其中 数据操作类型中Insert代表变更类型为插入,Update代表变更类型为更新,Delete代表变 更类型为删除。同时在源数据库中建立临时表,用于存储上述获取到的事务日志信息。
[0154] 具体实施时,根据上述解析单元20的临时表内的操作时间戳和操作类型字段执行 抽取。其中时间戳需要和源数据库中记录抽取时间戳信息的表CDC_TME进行比较,该表存 储两个时间戳字段CURRENT_L0AD和LAST_L0AD。具体抽取单元30执行抽取判断规则如下:
[0155] a)如果临时表中的操作类型字段为Delete,则将该行对应的时间戳L0G_ TIMESTAMP 和 CDC_HME 表中的 LASTL0AD_HME 进行比较,如果 L0G_TIMESTAMP 大于 LAST_ LOAD,则将临时表中解析出的数据主键抽取出来,在加载数据前根据主键对数据仓库执行 删除操作。
[0156] b)如果临时表中的操作类型字段为Update或者Insert操作,只需根据源数据库中 已有或者配置的创建时间戳大于LAST_L0AD或者修改时间戳大于LAST_L0AD判断为增量变 化的数据,将查询语句配置在XML文件中执行抽取,然后根据主键对数据仓库执行数据更新 或插入操作。
[0157] 图7是本发明另一实施例中多源异构数据增量抽取的装置的结构示意图,如图7所 示,本发明实施例中多源异构数据增量抽取的装置,还可以包括:
[0158] 事务日志可靠性分析单元10,用于对源数据库事务日志进行可靠性分析,找出满 足可靠性条件的源数据库事务日志;
[0159]所述解析单元20具体用于对所述满足可靠性条件的源数据库事务日志进行解析。 [0160]在一个实施例中,所述可靠性条件为:读源数据库事务日志的速度与写源数据库 事务日志速度的比值为S/(S_L),其中,S为源数据库事务日志文件所占用的物理空间大小, L为读源数据库事务日志文件滞后于写源数据库事务日志文件的物理空间大小,1 < L < Β?ο
[0161 ]在一个实施例中,所述抽取单元30可以包括:
[0162] 增量变化数据确定单元,用于根据数据操作类型和操作时间戳信息,确定增量变 化的数据及数据类型;
[0163] 增量变化数据抽取单元,用于根据主键信息、增量变化的数据类型,将增量变化的 数据抽取到数据仓库中。
[0164] 在一个实施例中,本发明实施例提供的多源异构数据增量抽取的装置还包括:临 时表建立单元,用于建立临时表,将所述主键信息、数据操作类型和操作时间戳信息存储在 所述临时表里;
[0165] 所述增量变化数据确定单元可以包括:
[0166] 第一确定单元,用于当临时表中的数据操作类型字段为删除操作时,比较临时表 的操作时间戳和源数据库中记录抽取时间戳信息的表中的操作时间戳,如果临时表的操作 时间戳大于源数据库中记录抽取时间戳信息的表中的操作时间戳,确定目标数据是增量变 化数据,类型是删除操作的增量变化数据;
[0167] 第二确定单元,用于当临时表中的数据操作类型字段为更新或者插入操作时,如 果源数据库中已有或者已配置的创建时间戳大于执行上次增量抽取的时间戳,或者修改时 间戳大于执行上次增量抽取的时间戳,确定目标数据是增量变化数据,类型是更新或者插 入操作的增量变化数据。
[0168] 在一个实施例中,所述增量变化数据抽取单元可以包括:
[0169] 第一抽取单元,用于当确定目标数据是删除操作的增量变化数据时,将临时表中 解析出的主键信息抽取出来,在加载数据前,根据主键信息,对数据仓库执行删除操作。
[0170] 第二抽取单元,用于当确定目标数据是更新或者插入操作的增量变化数据时,将 查询语句配置在可扩展标记语言XML文件中执行抽取,根据主键信息,对数据仓库执行数据 更新或插入操作。
[0171] 在一个实施例中,本发明实施例中多源异构数据增量抽取的装置,如图7所示,还 可以包括:存储单元40,用于将抽取的增量变化的数据存储在文本格式txt文件中,将存储 在文本格式txt文件中的增量变化的数据以Zip压缩包方式存储。
[0172] 在一个实施例中,所述存储单元40具体用于:
[0173] 将删除操作的增量变化数据存储到第一文本格式txt文件中;
[0174]将更新或者插入操作的增量变化数据存储到第二文本格式txt文件中。
[0175] 具体实施时,执行完抽取后,将抽取的增量变化数据存放在txt文件中,以Zip压缩 包方式存放。根据抽取单元的抽取规则,将删除Delete数据主键存放到一个txt文件中,插 入Insert和更新Update数据一起存放到一个txt文件中,这样方便区分存储和二次加载。
[0176] 在一个实施例中,本发明实施例中多源异构数据增量抽取的装置,如图7所示,还 可以包括:时间戳更新单元50,用于更新源数据库中记录抽取时间戳信息的表中的操作时 间戳信息。
[0177] 具体实施时,执行抽取结束后,删除源数据中根据事务日志建立的临时表,同时更 新LAST_L0AD为本次增量抽取时间戳信息。
[0178] 当然,本发明实施例中多源异构数据增量抽取的装置,还可以包括:
[0179] 配置单元,根据上述多源异构增量数据抽取方法,需要在每一个ETL服务器上部署 一套数据抽取的第三方工具Kettle,并为其配置抽取源数据库和数据仓库的JNDI数据库连 接信息,支持多地市分布抽取。同时保证或者配置源数据库有"创建时间戳(Creatdt)"与 "最后修改时间戳(Modifydt)"字段,并要求字段类型是时间戳类型,精度精确到毫秒。
[0180] 综上所 述,本发明提供的技术方案,提供了一种数据库事务日志结合时间戳的方 式获取多源异构增量数据变化的方法;提供一种XML文件配置的方式查询源数据库中的数 据,利用Kettle工具执行并行增量抽取,将生成的数据以Zip压缩文件存储;提供一种验证 数据库事务日志抽取方法可靠性的分析方法;提供一种增量数据抽取方法和装置。
[0181] 通过以上对本发明实施例的介绍,本发明实施例提供的技术方案具有如下有益技 术效果:
[0182] (1)以数据库事务日志文件为基础,通过得到的数据库事务日志文件并解析,获取 事务日志文件中对该数据的各种详细操作和时间戳,尤其是删除操作,弥补了时间戳方式 无法捕获删除操作的不足,支持数据被物理删除的场景。同时,事务日志方法可以不限哪种 数据库类型都可以使用,支持多源异构数据增量抽取。两种方式结合,能够快速、高效而准 确的实现增量数据抽取;
[0183] (2)使用XML配置的方式并发的执行增量抽取,降低了对生产库系统的压力。同时 生成的抽取文件以Zip文件存储,可以方便的实现二次加载,方便进行数据恢复;
[0184] (3)本方案是数据库事务日志分析结合时间戳的方式执行增量抽取,事务日志的 可靠性决定了对数据仓库的操作准确性;
[0185] (4)能够保证数据的准确性和完备性,降低生产系统的压力,节省大量时间和系统 资源,支持多源异构的数据抽取,极大提高了增量数据抽取的效率。
[0186] 显然,本领域的技术人员应该明白,上述的本发明实施例的各模块、装置、或各步 骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计 算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可 以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的 顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中 的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明实施例不限制于任何特 定的硬件和软件结合。
[0187] 以上的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说 明,所应理解的是,以上仅为本发明的具体实施例而已,并不用于限定本发明的保护范围, 凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的 保护范围之内。
【主权项】
1. 一种多源异构数据增量抽取的方法,其特征在于,包括: 解析源数据库事务日志,从解析结果中获取源数据库中变化数据表的主键信息、数据 操作类型和操作时间戳信息; 根据所述主键信息、数据操作类型和操作时间戳信息,确定增量变化的数据,将增量变 化的数据抽取到数据仓库中。2. 如权利要求1所述的多源异构数据增量抽取的方法,其特征在于,在解析源数据库事 务日志之前,还包括:对源数据库事务日志进行可靠性分析,找出满足可靠性条件的源数据 库事务日志; 解析源数据库事务日志,包括:对所述满足可靠性条件的源数据库事务日志进行解析。3. 如权利要求2所述的多源异构数据增量抽取的方法,其特征在于,所述可靠性条件 为:读源数据库事务日志的速度与写源数据库事务日志速度的比值为S/(S-L),其中,S为源 数据库事务日志文件所占用的物理空间大小,L为读源数据库事务日志文件滞后于写源数 据库事务日志文件的物理空间大小,1 <L<S-1。4. 如权利要求1所述的多源异构数据增量抽取的方法,其特征在于,根据所述主键信 息、数据操作类型和操作时间戳信息,确定增量变化的数据,将增量变化的数据抽取到数据 仓库中,包括: 根据所述数据操作类型和操作时间戳信息,确定增量变化的数据及数据类型; 根据所述主键信息、增量变化的数据类型,将增量变化的数据抽取到数据仓库中。5. 如权利要求4所述的多源异构数据增量抽取的方法,其特征在于,还包括:建立临时 表,将所述主键信息、数据操作类型和操作时间戳信息存储在所述临时表里; 根据所述数据操作类型和操作时间戳信息,确定增量变化的数据及数据类型,包括: 当临时表中的数据操作类型字段为删除操作时,比较临时表的操作时间戳和源数据库 中记录抽取时间戳信息的表中的操作时间戳,如果临时表的操作时间戳大于源数据库中记 录抽取时间戳信息的表中的操作时间戳,确定目标数据是增量变化数据,类型是删除操作 的增量变化数据; 当临时表中的数据操作类型字段为更新或者插入操作时,如果源数据库中已有或者已 配置的创建时间戳大于执行上次增量抽取的时间戳,或者修改时间戳大于执行上次增量抽 取的时间戳,确定目标数据是增量变化数据,类型是更新或者插入操作的增量变化数据。6. 如权利要求5所述的多源异构数据增量抽取的方法,其特征在于,根据所述主键信 息、增量变化的数据类型,将增量变化的数据抽取到数据仓库中,包括: 当确定目标数据是删除操作的增量变化数据时,将临时表中解析出的主键信息抽取出 来,在加载数据前,根据主键信息,对数据仓库执行删除操作; 当确定目标数据是更新或者插入操作的增量变化数据时,将查询语句配置在可扩展标 记语言XML文件中执行抽取,根据主键信息,对数据仓库执行数据更新或插入操作。7. 如权利要求1所述的多源异构数据增量抽取的方法,其特征在于,还包括: 将抽取的增量变化的数据存储在文本格式txt文件中; 将存储在文本格式txt文件中的增量变化的数据以Zip压缩包方式存储。8. 如权利要求1所述的多源异构数据增量抽取的方法,其特征在于,还包括:更新源数 据库中记录抽取时间戳信息的表中的操作时间戳信息。9. 一种多源异构数据增量抽取的装置,其特征在于,包括: 解析单元,用于解析源数据库事务日志,从解析结果中获取源数据库中变化数据表的 主键信息、数据操作类型和操作时间戳信息; 抽取单元,用于根据所述主键信息、数据操作类型和操作时间戳信息,确定增量变化的 数据,将增量变化的数据抽取到数据仓库中。10. 如权利要求9所述的多源异构数据增量抽取的装置,其特征在于,还包括:事务日志 可靠性分析单元,用于对源数据库事务日志进行可靠性分析,找出满足可靠性条件的源数 据库事务日志; 所述解析单元具体用于对所述满足可靠性条件的源数据库事务日志进行解析。11. 如权利要求10所述的多源异构数据增量抽取的装置,其特征在于,所述可靠性条件 为:读源数据库事务日志的速度与写源数据库事务日志速度的比值为S/(S-L),其中,S为源 数据库事务日志文件所占用的物理空间大小,L为读源数据库事务日志文件滞后于写源数 据库事务日志文件的物理空间大小,1 <L<S-1。12. 如权利要求9所述的多源异构数据增量抽取的装置,其特征在于,所述抽取单元包 括: 增量变化数据确定单元,用于根据数据操作类型和操作时间戳信息,确定增量变化的 数据及数据类型; 增量变化数据抽取单元,用于根据主键信息、增量变化的数据类型,将增量变化的数据 抽取到数据仓库中。13. 如权利要求12所述的多源异构数据增量抽取的装置,其特征在于,还包括:临时表 建立单元,用于建立临时表,将所述主键信息、数据操作类型和操作时间戳信息存储在所述 临时表里; 所述增量变化数据确定单元包括: 第一确定单元,用于当临时表中的数据操作类型字段为删除操作时,比较临时表的操 作时间戳和源数据库中记录抽取时间戳信息的表中的操作时间戳,如果临时表的操作时间 戳大于源数据库中记录抽取时间戳信息的表中的操作时间戳,确定目标数据是增量变化数 据,类型是删除操作的增量变化数据; 第二确定单元,用于当临时表中的数据操作类型字段为更新或者插入操作时,如果源 数据库中已有或者已配置的创建时间戳大于执行上次增量抽取的时间戳,或者修改时间戳 大于执行上次增量抽取的时间戳,确定目标数据是增量变化数据,类型是更新或者插入操 作的增量变化数据。14. 如权利要求13所述的多源异构数据增量抽取的装置,其特征在于,所述增量变化数 据抽取单元包括: 第一抽取单元,用于当确定目标数据是删除操作的增量变化数据时,将临时表中解析 出的主键信息抽取出来,在加载数据前,根据主键信息,对数据仓库执行删除操作; 第二抽取单元,用于当确定目标数据是更新或者插入操作的增量变化数据时,将查询 语句配置在可扩展标记语言XML文件中执行抽取,根据主键信息,对数据仓库执行数据更新 或插入操作。15. 如权利要求9所述的多源异构数据增量抽取的装置,其特征在于,还包括:时间戳更 新单元,用于更新源数据库中记录抽取时间戳信息的表中的操作时间戳信息。
【专利摘要】本发明公开了一种多源异构数据增量抽取的方法及装置,该方法包括:解析源数据库事务日志,从解析结果中获取源数据库中变化数据表的主键信息、数据操作类型和操作时间戳信息;根据主键信息、数据操作类型和操作时间戳信息,确定增量变化的数据,将增量变化的数据抽取到数据仓库中。本发明提供的技术方案提高了数据增量抽取的准确率、效率以及完备性。
【IPC分类】G06F17/30
【公开号】CN105488187
【申请号】CN201510867992
【发明人】胡玉婷, 刘伟
【申请人】北京四达时代软件技术股份有限公司
【公开日】2016年4月13日
【申请日】2015年12月2日

最新回复(0)