公开/公告号CN102915336A
专利类型发明专利
公开/公告日2013-02-06
原文格式PDF
申请/专利权人 北京金和软件股份有限公司;
申请/专利号CN201210347923.5
申请日2012-09-18
分类号
代理机构北京远大卓悦知识产权代理事务所(普通合伙);
代理人史霞
地址 100093 北京市海淀区上地软件园南路57号院科技楼
入库时间 2024-02-19 17:18:13
法律状态公告日
法律状态信息
法律状态
2015-07-15
授权
授权
2013-03-20
实质审查的生效 IPC(主分类):G06F17/30 申请日:20120918
实质审查的生效
2013-02-06
公开
公开
技术领域
本发明涉及计算机技术领域,具体涉及数据仓库领域技术中的ETL技术, 主要应用于一切涉及到数据仓库ETL操作的产品中。
背景技术
ETL是Extract(抽取)、Transform(转换)、Load(加载)的简称,是数 据仓库实施工作的核心步骤。其中抽取有全量抽取和增量抽取两种方式。全 量抽取类似于数据迁移或数据复制,它将数据源中的数据一次性全部抽取到 目标数据库中。全量抽取一般的实现方法是每次均删除目标数据库中的数据, 全部重新加载数据源的数据,这种方法的实现简单,但当数据量较大时,抽 取的时间较长,性能非常差。增量抽取是在上次抽取的基础上,只抽取新增 或修改的数据,与全量抽取相比,增量抽取所处理的数据量少,性能较好, 不会对业务系统造成太大的性能压力。
增量抽取技术的难点在于如何捕获业务系统的新增、修改、删除的数据, 并基于这些变化的数据更新数据仓库中的数据。如果不能有效地捕获这些变 化的数据,将严重影响增量抽取的效率。目前,现有的数据捕获技术主要有 触发器方法、时间戳方法、全表对比方法、CDC(Changed Data Capture,变 化数据捕获)方法,但这些方法要么只能解决某一方面的问题,要么对业务 系统具有较高的要求,如触发器方法要求数据源具备触发器的功能,且必须 保证源数据库和目标数据库的连接始终畅通;时间戳方法只能处理新增和修 改的数据,无法处理删除的数据;全表对比方法性能较差,且不能处理修改 的数据;CDC方法要求源数据库与目标数据库为同构的数据库。
发明内容
本发明的目的是提供一种可以增量抽取业务数据表中数据的方法,所述 方法中业务数据库和数据仓库可以是异构的。
本发明的另一目的是提供一种使业务数据库和数据仓库只在增量抽取时 处于连通状态的增量抽取数据方法。
为了解决现有技术存在的困难,达到上述目的,本发明提供了一种基于 时间戳和日志的增量数据捕获和抽取方法,所述方法包括如下步骤:
步骤一、为业务系统中的每个需要增量抽取数据的表增加一个自增长的 代理键字段和一个时间戳字段;
步骤二、新增或修改数据表中的数据时,采用时间戳的方式;
步骤三、删除数据表中的数据时,采用日志记录的方式。
优选的是,步骤二中所述的时间戳方式包括如下步骤:
a在数据仓库的全局参数表中记录每个数据表最近一次已抽取的时间戳 值;
b将所述修改数据所在行的时间戳字段的值设置为当前的系统时间;
c增量抽取数据表中的数据时,只抽取每个数据表中时间戳值大于最近一 次已抽取的时间戳值的数据;
d将全局参数表中数据表的时间戳值更新为本次增量抽取的数据中最新 的时间戳值。
优选的是,步骤三中所述的日志记录的方式包括如下步骤:
I在系统中创建删除日志表;
II将删除数据所在数据表的表名和所在行的代理键值写入所述删除日志 表中;
III在数据仓库的全局参数表中,记录每个数据表上次已处理的删除记录 的最大代理键值;
IV增量处理删除记录时,只处理每个数据表中代理键值大于所述最大代 理键值的删除记录对应的数据;
V将数据仓库全局参数表中的最大代理键值更新为本次增量处理的数据 中最大的代理键值。
本发明的有益效果是:本发明所述方法可以处理新增、修改、删除的数据; 每次只抽取上次抽取后未抽取的新增或修改的数据和上次处理后未处理的删 除的数据,业务数据量较小;业务数据库和数据仓库可以是异构的;业务数 据库和数据仓库允许只在抽取时处于连通状态,不必时时刻刻处于连通状态。 因此,本发明可以显著提升数据的抽取效率,减轻抽取时对业务数据库的压 力,降低抽取的技术复杂度。
附图说明
图1为本发明实施例中所述数据表的原结构
图2为修改后的图1数据表结构
图3为本发明实施例中所述全局参数表中存储的时间戳值
图4为本发明实施例中所述的删除日志表的结构
图5为本发明实施例中所述全局参数表中存储的最大代理键值
具体实施方式
下面结合附图对本发明做进一步说明,以使本领域普通技术人员参照本 说明书后能够据以实施。
本发明所述的一种基于时间戳和日志的增量数据捕获和抽取方法包括如 下步骤:
步骤一、为业务系统中的每个需要增量抽取数据的表增加一个自增长的 代理键字段和一个时间戳字段,增加后每个数据表的每行数据都具有一时间 戳值和代理键值。如图1所示,在即时通讯(IM)软件中,群组管理是一个 常见的功能,群组用户表存储着群ID和用户ID的对应关系。为其增加一个 自增长的代理键字段“关系ID”和时间戳字段“修改时间”,此表中的每行数据 就具有了关系ID值和修改时间值,图2为修改后的结构。
步骤二、新增或修改数据表中的数据时,采用时间戳的方式。所述时间 戳方式包括如下步骤:
a在数据仓库的全局参数表中记录每个数据表最近一次已抽取的时间戳 值。即业务数据表中小于所述时间戳值的行中的数据是在此次增量抽取之后 未修改的,大于所述时间戳值的行中的数据是在此次增量抽取之后新修改的。 如图3所示,群组关系表的最近一次已抽取数据的最新的时间戳值为 “2012-04-25 11:59:59”。
b将所述修改数据所在行的时间戳字段的值设置为当前的系统时间,表 明所述数据是在全局参数表中的时间戳值对应的时间增量抽取之后新修改 的。
c增量抽取数据表中的数据时,只抽取每个数据表中时间戳值大于最近一 次已抽取的时间戳值的数据,即只抽取业务数据表中所在行的时间戳值大于 全局参数表中的时间戳值的数据。如举例中,新一次增量抽取只抽取修改时 间大于“2012-04-25 11:59:59”的数据。
d将全局参数表中数据表的时间戳值更新为本次增量抽取的数据中最新 的时间戳值,记录的是本次增量抽取结束的时间,在此处理之后的修改数据 所在行的时间戳值应大于全局参数表中本次记录的时间戳值。
步骤三、删除数据表中的数据时,采用日志记录的方式,所述日志记录 的方式包括如下步骤:
I在业务系统中创建删除日志表。所述删除日志表的结构如图4所示, 因数据表中的某一数据经删除后,此数据所在行的时间戳值和代理键值等信 息也将被一起删除,无法记录,所以需在业务系统中创建一份删除日志表, 用来记录删除数据信息。图4中所述“日志ID”为所述删除日志表中添加的自 增长的代理键值。
II将删除数据所在数据表的表名和所在行的代理键值写入所述删除日志 表中,此目的是为了记录所述删除数据在业务数据库表中的具体位置。图4 中所述的“主键ID”为步骤一中添加的所述代理键值,通过“表名”和“主键ID” 的记录,可以准确地记录所述删除数据在数据库表中的具体位置。
III在数据仓库的全局参数表中,记录每个数据表上次已处理的删除记录 的最大代理键值。图4中的“日志ID”是自增长的代理键值,如图5所示,在 数据仓库的全局参数表中,记录每个数据表上次已处理的删除记录的最大代 理键值1056,即最大的日志ID值,目的是表明在全局参数表中,代理键值 大于记录的所述最大代理键值1056的删除数据是未处理的新的删除记录。
IV增量处理删除记录时,只处理每个数据表中代理键值大于所述最大代 理键值的删除记录对应的数据。因为每个数据表中代理键值大于所述最大代 理键值1056的删除记录是未处理的新的删除记录,所以在此次增量处理中, 只需处理这些新的删除记录即可。
V将数据仓库全局参数表中的最大代理键值更新为本次增量处理的数据 中最大的代理键值。此目的是表明在本次增量处理后,代理键值大于本次新 设的最大代理键值的删除记录是本次增量处理后新删除的记录,以便于管理 员下次进行处理。
尽管本发明的实施方案已公开如上,但其并不仅仅限于说明书和实施方 式中所列运用,它完全可以被适用于各种适合本发明的领域,对于熟悉本领 域的人员而言,可容易地实现另外的修改,因此在不背离权利要求及等同范 围所限定的一般概念下,本发明并不限于特定的细节和这里示出与描述的图 例。
机译: 等时数据音频数据,一种用于数据通信网络的流读取方法,涉及基于周期漂移来修改时间戳信息,其中时间戳信息指示数据的读取时间
机译: 数据库管理系统中基于增量数据循环的关键性能指标抽取方法和系统
机译: 一种带有时间戳的方法-基于预留的tdma协议的同步