CN109376196A - 一种redo日志批量同步方法及装置 - Google Patents

一种redo日志批量同步方法及装置 Download PDF

Info

Publication number
CN109376196A
CN109376196A CN201811115047.7A CN201811115047A CN109376196A CN 109376196 A CN109376196 A CN 109376196A CN 201811115047 A CN201811115047 A CN 201811115047A CN 109376196 A CN109376196 A CN 109376196A
Authority
CN
China
Prior art keywords
data
data group
value
oracle
nifi
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.)
Granted
Application number
CN201811115047.7A
Other languages
English (en)
Other versions
CN109376196B (zh
Inventor
王庆明
胡清
王建华
肖雪
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Inspur Software Technology Co Ltd
Original Assignee
Inspur Software Group Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Inspur Software Group Co Ltd filed Critical Inspur Software Group Co Ltd
Priority to CN201811115047.7A priority Critical patent/CN109376196B/zh
Publication of CN109376196A publication Critical patent/CN109376196A/zh
Application granted granted Critical
Publication of CN109376196B publication Critical patent/CN109376196B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Telephonic Communication Services (AREA)

Abstract

本发明提供了一种redo日志批量同步方法及装置,该方法包括:对oracle进行配置,并基于此对NiFi中的待配置组件进行配置;基于配置好的oracle和NiFi,按照时间先后顺序依次抽取oracle的redo日志中变化的各个数据,以顺序打包获得各个数据组,同一数据组中不同数据的操作标识相同,且对于任意相邻的两数据组,在先数据组中数据的抽取时间早于在后数据组中数据的抽取时间,该两数据组中数据的操作标识不同;需要进行格式转换时,根据数据格式转换要求对各数据组中的各个数据进行格式转换后,存储至指定的大数据平台,否则进行直接存储。因此,本方案可在不同系统之间进行同步。

Description

一种redo日志批量同步方法及装置
技术领域
本发明涉及计算机技术领域,特别涉及一种redo日志批量同步方法及装置。
背景技术
Oracle做为使用广泛的数据库,是许多行业大数据应用的数据源头。要对原有的数据进行分析,或者是提高系统性能,经常需要将oracle中的数据实时同步到一些大数据存储中。
目前,可以通过OGG(Oracle GoldenGate)来实现Oracle数据的同步。其中,OGG是一种基于日志的结构化数据复制软件。
但是,这一同步方式只能够在oracle系统之间进行同步。
发明内容
本发明提供了一种redo日志批量同步方法及装置,可在不同系统之间进行同步。
为了达到上述目的,本发明是通过如下技术方案实现的:
一方面,本发明提供了一种redo日志批量同步方法,对oracle进行配置,还包括:
基于配置好的所述oracle,对NiFi中的待配置组件进行配置;
基于配置好的所述oracle和配置好的所述NiFi,按照时间先后顺序依次抽取所述oracle的redo日志中变化的每一个数据,以按照时间先后顺序依次打包获得至少一个数据组,其中,所述至少一个数据组满足:同一数据组中不同数据的操作标识相同,以及,对于任意相邻的第一数据组和第二数据组,得到所述第一数据组的时间早于所述第二数据组时,所述第一数据组中任一数据的抽取时间早于所述第二数据组中任一数据的抽取时间,且所述第一数据组中任一数据的操作标识不同于所述第二数据组中任一数据的操作标识;
根据预设的数据格式转换要求,判断是否需要进行格式转换,若是,基于实时流式处理模式,针对依次获得的每一个所述数据组均执行:根据所述数据格式转换要求对当前数据组中的每一个数据均进行格式转换,并将经格式转换后的所述当前数据组存储至预设的数据存储要求所指定的大数据平台,否则,将所述当前数据组存储至所述数据存储要求所指定的大数据平台。
进一步地,所述对oracle进行配置,包括:判断所述oracle是否启用补全日志,若是,针对UPDATE命令更改的字段,在所述redo日志中的撤销数据块的变更矢量中,记录字段的更改前的值、字段的更改后的值、用于修改字段的预设条件的值;若否,针对所述UPDATE命令更改的字段,在所述redo日志中的撤销数据块的变更矢量中记录字段的更改前的值,在所述redo日志中的数据块的变更矢量中,记录字段的更改后的值但不记录同行中未被修改的字段,以及在不重启所述oracle的条件下,使用sqplus执行alter database addsupplemental log data命令,以启用所述补全日志。
进一步地,所述对NiFi中的待配置组件进行配置,包括:通过执行下述配置操作中的任意一种或多种,以对NiFi中的GetAllOracleChangeByLog组件进行配置:
将Database Connection Pooling Service的值,配置为所述oracle的连接池信息;
将Table Name的值,配置为要同步的表信息;
将target user name的值,配置为要同步的表所归属的用户;
将fetch size的值,配置为一个批次中可同步的最大数量;
将start time的值,配置为开始同步数据的时间段;
将include rowid的值,配置为要同步的表信息是否会包含rowid信息。
进一步地,所述数据格式转换要求包括:将avro格式的数据转换为json(JavaScript Object Notatio,JavaScript对象简谱)格式的数据时,所述根据所述数据格式转换要求对当前数据组中的每一个数据均进行格式转换,包括:在所述NiFi中,使用ConvertAvroToJSON组件将avro解析成json,以将avro格式的数据转换为json格式的数据。
进一步地,所述将所述当前数据组存储至所述数据存储要求所指定的大数据平台,包括:
所述数据存储要求包括用于持久化存储时,通过所述NiFi,将所述当前数据组存储至HDFS(Hadoop Distributed File System,Hadoop分布式文件系统)或Hbase;
所述数据存储要求包括用于统计分析时,通过所述NiFi,将所述当前数据组存储至Hive;
所述数据存储要求包括用于流式计算时,通过所述NiFi,将所述当前数据组存储至Kafka;
所述数据存储要求包括用于检索时,通过所述NiFi,将所述当前数据组存储至Elasticsearch。
另一方面,本发明提供了一种redo日志批量同步装置,包括:
第一配置单元,用于对oracle进行配置;
第二配置单元,用于基于配置好的所述oracle,对NiFi中的待配置组件进行配置;
数据抽取单元,用于基于配置好的所述oracle和配置好的所述NiFi,按照时间先后顺序依次抽取所述oracle的redo日志中变化的每一个数据,以按照时间先后顺序依次打包获得至少一个数据组,其中,所述至少一个数据组满足:同一数据组中不同数据的操作标识相同,以及,对于任意相邻的第一数据组和第二数据组,得到所述第一数据组的时间早于所述第二数据组时,所述第一数据组中任一数据的抽取时间早于所述第二数据组中任一数据的抽取时间,且所述第一数据组中任一数据的操作标识不同于所述第二数据组中任一数据的操作标识;
处理单元,用于根据预设的数据格式转换要求,判断是否需要进行格式转换,若是,基于实时流式处理模式,针对依次获得的每一个所述数据组均执行:根据所述数据格式转换要求对当前数据组中的每一个数据均进行格式转换,并将经格式转换后的所述当前数据组存储至预设的数据存储要求所指定的大数据平台,否则,将所述当前数据组存储至所述数据存储要求所指定的大数据平台。
进一步地,所述第一配置单元,用于判断所述oracle是否启用补全日志,若是,针对UPDATE命令更改的字段,在所述redo日志中的撤销数据块的变更矢量中,记录字段的更改前的值、字段的更改后的值、用于修改字段的预设条件的值;若否,针对所述UPDATE命令更改的字段,在所述redo日志中的撤销数据块的变更矢量中记录字段的更改前的值,在所述redo日志中的数据块的变更矢量中,记录字段的更改后的值但不记录同行中未被修改的字段,以及在不重启所述oracle的条件下,使用sqplus执行alter database addsupplemental log data命令,以启用所述补全日志。
进一步地,所述第二配置单元,用于通过执行下述配置操作中的任意一种或多种,以对NiFi中的GetAllOracleChangeByLog组件进行配置:
将Database Connection Pooling Service的值,配置为所述oracle的连接池信息;
将Table Name的值,配置为要同步的表信息;
将target user name的值,配置为要同步的表所归属的用户;
将fetch size的值,配置为一个批次中可同步的最大数量;
将start time的值,配置为开始同步数据的时间段;
将include rowid的值,配置为要同步的表信息是否会包含rowid信息。
进一步地,所述数据格式转换要求包括:将avro格式的数据转换为json格式的数据时,所述处理单元,用于在所述NiFi中,使用ConvertAvroToJSON组件将avro解析成json,以将avro格式的数据转换为json格式的数据。
进一步地,所述处理单元,用于所述数据存储要求包括用于持久化存储时,通过所述NiFi,将所述当前数据组存储至HDFS或Hbase;所述数据存储要求包括用于统计分析时,通过所述NiFi,将所述当前数据组存储至Hive;所述数据存储要求包括用于流式计算时,通过所述NiFi,将所述当前数据组存储至Kafka;所述数据存储要求包括用于检索时,通过所述NiFi,将所述当前数据组存储至Elasticsearch。
本发明提供了一种redo日志批量同步方法及装置,该方法包括:对oracle进行配置,并基于此对NiFi中的待配置组件进行配置;基于配置好的oracle和NiFi,按照时间先后顺序依次抽取oracle的redo日志中变化的各个数据,以顺序打包获得各个数据组,同一数据组中不同数据的操作标识相同,且对于任意相邻的两数据组,在先数据组中数据的抽取时间早于在后数据组中数据的抽取时间,该两数据组中数据的操作标识不同;需要进行格式转换时,根据数据格式转换要求对各数据组中的各个数据进行格式转换后,存储至指定的大数据平台,否则进行直接存储。因此,本发明可在不同系统之间进行同步。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一实施例提供的一种redo日志批量同步方法的流程图;
图2是本发明一实施例提供的另一种redo日志批量同步方法的流程图;
图3是本发明一实施例提供的一种redo日志批量同步装置的示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,本发明实施例提供了一种redo日志批量同步方法,可以包括以下步骤:
步骤101:对oracle进行配置。
步骤102:基于配置好的所述oracle,对NiFi中的待配置组件进行配置。
步骤103:基于配置好的所述oracle和配置好的所述NiFi,按照时间先后顺序依次抽取所述oracle的redo日志中变化的每一个数据,以按照时间先后顺序依次打包获得至少一个数据组,其中,所述至少一个数据组满足:同一数据组中不同数据的操作标识相同,以及,对于任意相邻的第一数据组和第二数据组,得到所述第一数据组的时间早于所述第二数据组时,所述第一数据组中任一数据的抽取时间早于所述第二数据组中任一数据的抽取时间,且所述第一数据组中任一数据的操作标识不同于所述第二数据组中任一数据的操作标识。
步骤104:根据预设的数据格式转换要求,判断是否需要进行格式转换,若是,基于实时流式处理模式,针对依次获得的每一个所述数据组均执行:根据所述数据格式转换要求对当前数据组中的每一个数据均进行格式转换,并将经格式转换后的所述当前数据组存储至预设的数据存储要求所指定的大数据平台,否则,将所述当前数据组存储至所述数据存储要求所指定的大数据平台。
本发明实施例提供了一种redo日志批量同步方法,该方法包括:对oracle进行配置,并基于此对NiFi中的待配置组件进行配置;基于配置好的oracle和NiFi,按照时间先后顺序依次抽取oracle的redo日志中变化的各个数据,以顺序打包获得各个数据组,同一数据组中不同数据的操作标识相同,且对于任意相邻的两数据组,在先数据组中数据的抽取时间早于在后数据组中数据的抽取时间,该两数据组中数据的操作标识不同;需要进行格式转换时,根据数据格式转换要求对各数据组中的各个数据进行格式转换后,存储至指定的大数据平台,否则进行直接存储。因此,本发明实施例可在不同系统之间进行同步。
本发明实施例中,可对oracle进行配置,部署配置NiFi单例/集群等。
本发明实施例中,可由NiFi负责整个业务数据采集、数据在各级节点间传输转换、数据入库工作等。
本发明实施例中,总的来说,主要可以包括下述4个阶段:
第一阶段:Oracle的配置;
第二阶段:数据采集并有序地分组发送数据;
第三阶段:数据转换;
第四阶段:数据存储。
详细地,针对上述第一阶段:
在本发明的一个实施例中,所述对oracle进行配置,包括:判断所述oracle是否启用补全日志,若是,针对UPDATE命令更改的字段,在所述redo日志中的撤销数据块的变更矢量中,记录字段的更改前的值、字段的更改后的值、用于修改字段的预设条件的值;若否,针对所述UPDATE命令更改的字段,在所述redo日志中的撤销数据块的变更矢量中记录字段的更改前的值,在所述redo日志中的数据块的变更矢量中,记录字段的更改后的值但不记录同行中未被修改的字段,以及在不重启所述oracle的条件下,使用sqplus执行alterdatabase add supplemental log data命令,以启用所述补全日志。
详细地,最小补全日志(Minimal supplemental logging)是开启oracle日志挖掘的最低日志要求,提供了行链接(chained rows)和多种数据存储,比如聚簇表、索引组织表的信息。通常情况下,在Oracle 9.2之后的版本中,默认都不开启。如此,可使用sqplus,执行:alter database add supplemental log data,即可,且该操作不需要重启启动oracle。
详细地,如果启用了补充日志,redo日志,或称重做日志,中的撤销数据块的变更矢量中,会记录被修改字段前的值和修改后的值,而且还会记录修改字段的那个条件的值。
详细地,如果未启用补全日志,重做日志只将UPDATE命令更改的字段的旧值保存在撤销数据块的变更矢量中,而在数据块中的变更矢量中记载被修改后的字段的新值,且同行中的未被修改的字段,不会被记载。
详细地,针对上述第二阶段:
在本发明的一个实施例中,所述对NiFi中的待配置组件进行配置,包括:通过执行下述配置操作中的任意一种或多种,以对NiFi中的GetAllOracleChangeByLog组件进行配置:
将Database Connection Pooling Service的值,配置为所述oracle的连接池信息;
将Table Name的值,配置为要同步的表信息;
将target user name的值,配置为要同步的表所归属的用户;
将fetch size的值,配置为一个批次中可同步的最大数量;
将start time的值,配置为开始同步数据的时间段;
将include rowid的值,配置为要同步的表信息是否会包含rowid信息。
首先,对于nifi中的GetAllOracleChangeByLog组件进行配置,比如,对于Database Connection Pooling Service,配置的是oracle的连接池信息;Table Name即表名,配置的是要同步的表信息;target user name,表示的是你要同步的表归属于哪个用户;fetch size,即一个批次中同步的最大数量是多少;start time即开始时间,表示的是你要从什么时间段开始同步数据;include rowid,表示的是要同步的表信息是否会包含rowid信息。
举例来说,配置的各个值可如下述表1所示。
表1
属性
Database Connection Pooling Service calhost:1521/orcl
Table Name DICTORNARY
target user name nifi
fetch size 1000
start time 2018-07-10 15:50:00
include rowid false
详细地,该GetAllOracleChangeByLog组件可将oracle中变化的数据抽取出来,每当遇到不同的操作类型时,就会重启生成一组,将相同的操作放到同一组数据中,并在属性中带有操作标识。其中,对于任一数据,其操作类型可以为新增、修改、删除中的任意一种。
如此,对于oracle的redo日志中变化的每一个数据,可以安装变化发生的时间先后顺序依次抽取各个数据,并通过不断地分组操作,以按照时间先后顺序依次打包获得各个数据组。基于此,同一数据组中各数据的操作标识相同,且对于任意两个先后相邻获得的数据组,在先数据组中各个数据的抽取时间应均早于在后数据组中各个数据的抽取时间,以及,这两数据组中数据的操作标识应不相同。当然,对于任意非相邻获得的两数据组,其中数据的操作标识可相同,也可不同。
详细地,针对上述第三阶段:
通常情况下,采集到的数据可以是avro格式的,如果有必要,可以将数据转换为其他的格式或者是进一步的对数据进行清洗。
举例来说,我们在此将数据转换为json,在nifi中,可以使用ConvertAvroToJSON组件将avro解析成json。此外,还可以通过InvokeHTTP组件调用自定义的接口对数据进行转换。
对于avro格式的数据,在nifi中,大多数存储组件可以直接处理,以将数据存储到对应的系统中。比如,可以利用PutElasticsearchHttpRecord组件将数据存储到Elasticsearch中。
基于上述内容可知,可以预设数据格式转换要求,以定义是否需要进行格式转换,以及需要进行格式转换时,可以定义如何进行格式转换。其中,需要进行格式转换时,数据经格式转换后可进行存储;不需要进行格式转换时,数据可以直接进行存储。
如此,在本发明的一个实施例中,所述数据格式转换要求包括:将avro格式的数据转换为json格式的数据时,所述根据所述数据格式转换要求对当前数据组中的每一个数据均进行格式转换,包括:在所述NiFi中,使用ConvertAvroToJSON组件将avro解析成json,以将avro格式的数据转换为json格式的数据。
详细地,针对上述第四阶段:
在本发明的一个实施例中,所述将所述当前数据组存储至所述数据存储要求所指定的大数据平台,包括:
所述数据存储要求包括用于持久化存储时,通过所述NiFi,将所述当前数据组存储至HDFS或Hbase;
所述数据存储要求包括用于统计分析时,通过所述NiFi,将所述当前数据组存储至Hive;
所述数据存储要求包括用于流式计算时,通过所述NiFi,将所述当前数据组存储至Kafka;
所述数据存储要求包括用于检索时,通过所述NiFi,将所述当前数据组存储至Elasticsearch。
详细地,对于大数据平台来说,大数据平台可以包括数据存储、数据治理、数据分析等所依赖的组件,且具体有实际业务需求选择部署使用哪些组件。
本发明实施例中,可通过NiFi直接将avro中的数据写入HDFS、HBase等完成持久化存储,写入Hive用于统计分析,写入Kafka用于流式计算,写入Elasticsearch用于检索等。如果需要对数据进行删除,则可根据属性中的operationFlag判断对应的操作类型,依次进行批量操作。
基于上述的四个阶段,可以完成oracle中变化数据的采集、传输、存储流程设计。对于要存储到其他系统中的需求,均可以参数该流程设计,甚至可以直接使用获取到的源数据,开发自定义接口,进行自定义设计。
综上所述,本发明实施例提出的基于NiFi和oracle的redo日志批量同步方法,能够无侵入地将oracle变化的数据,按照顺序并分类同步到对应的系统中,这一同步方法技术实施简单,难点低,开发工作少,易于实施与应用,性能快速稳定。此外,作为一种灵活多样可扩展的技术方案,本发明实施例根据实际业务需求可形成多种多样的多级数据采集流程。
如图2所示,本发明一个实施例提供了另一种redo日志批量同步方法,其特征在于,具体包括以下步骤:
步骤201:设置数据格式转换要求,且数据格式转换要求包括:将avro格式的数据转换为json格式的数据。
步骤202:设置数据存储要求,且数据存储要求包括:用于持久化存储,并存储至HDFS。
步骤203:判断oracle是否启用补全日志,若是,针对UPDATE命令更改的字段,在redo日志中的撤销数据块的变更矢量中,记录字段的更改前的值、字段的更改后的值、用于修改字段的预设条件的值;若否,针对UPDATE命令更改的字段,在redo日志中的撤销数据块的变更矢量中记录字段的更改前的值,在redo日志中的数据块的变更矢量中,记录字段的更改后的值但不记录同行中未被修改的字段,以及在不重启oracle的条件下,使用sqplus执行alter database add supplemental log data命令,以启用补全日志。
步骤204:基于配置好的oracle,通过将Database Connection Pooling Service的值配置为oracle的连接池信息,将Table Name的值配置为要同步的表信息,将targetuser name的值配置为要同步的表所归属的用户,将fetch size的值配置为一个批次中可同步的最大数量,将start time的值配置为开始同步数据的时间段,将include rowid的值配置为要同步的表信息是否会包含rowid信息,以对NiFi中的GetAllOracleChangeByLog组件进行配置。
步骤205:基于配置好的oracle和配置好的NiFi,按照时间先后顺序依次抽取oracle的redo日志中变化的每一个数据,以按照时间先后顺序依次打包获得至少一个数据组,其中,该至少一个数据组满足:同一数据组中不同数据的操作标识相同,以及,对于任意相邻的第一数据组和第二数据组,得到第一数据组的时间早于第二数据组时,第一数据组中任一数据的抽取时间早于第二数据组中任一数据的抽取时间,且第一数据组中任一数据的操作标识不同于第二数据组中任一数据的操作标识。
步骤206:根据数据格式转换要求,判断出需要进行格式转换。
步骤207:基于实时流式处理模式,针对依次获得的每一个数据组均执行:在NiFi中,使用ConvertAvroToJSON组件将avro解析成json,以将avro格式的数据转换为json格式的数据,并根据数据存储要求,通过NiFi,将经格式转换后的当前数据组存储至HDFS,以用于持久化存储。
如图3所示,本发明一个实施例提供了一种redo日志批量同步装置,可以包括:
第一配置单元301,用于对oracle进行配置;
第二配置单元302,用于基于配置好的所述oracle,对NiFi中的待配置组件进行配置;
数据抽取单元303,用于基于配置好的所述oracle和配置好的所述NiFi,按照时间先后顺序依次抽取所述oracle的redo日志中变化的每一个数据,以按照时间先后顺序依次打包获得至少一个数据组,其中,所述至少一个数据组满足:同一数据组中不同数据的操作标识相同,以及,对于任意相邻的第一数据组和第二数据组,得到所述第一数据组的时间早于所述第二数据组时,所述第一数据组中任一数据的抽取时间早于所述第二数据组中任一数据的抽取时间,且所述第一数据组中任一数据的操作标识不同于所述第二数据组中任一数据的操作标识;
处理单元304,用于根据预设的数据格式转换要求,判断是否需要进行格式转换,若是,基于实时流式处理模式,针对依次获得的每一个所述数据组均执行:根据所述数据格式转换要求对当前数据组中的每一个数据均进行格式转换,并将经格式转换后的所述当前数据组存储至预设的数据存储要求所指定的大数据平台,否则,将所述当前数据组存储至所述数据存储要求所指定的大数据平台。
在本发明一个实施例中,所述第一配置单元301,用于判断所述oracle是否启用补全日志,若是,针对UPDATE命令更改的字段,在所述redo日志中的撤销数据块的变更矢量中,记录字段的更改前的值、字段的更改后的值、用于修改字段的预设条件的值;若否,针对所述UPDATE命令更改的字段,在所述redo日志中的撤销数据块的变更矢量中记录字段的更改前的值,在所述redo日志中的数据块的变更矢量中,记录字段的更改后的值但不记录同行中未被修改的字段,以及在不重启所述oracle的条件下,使用sqplus执行alterdatabase add supplemental log data命令,以启用所述补全日志。
在本发明一个实施例中,所述第二配置单元302,用于通过执行下述配置操作中的任意一种或多种,以对NiFi中的GetAllOracleChangeByLog组件进行配置:
将Database Connection Pooling Service的值,配置为所述oracle的连接池信息;
将Table Name的值,配置为要同步的表信息;
将target user name的值,配置为要同步的表所归属的用户;
将fetch size的值,配置为一个批次中可同步的最大数量;
将start time的值,配置为开始同步数据的时间段;
将include rowid的值,配置为要同步的表信息是否会包含rowid信息。
在本发明一个实施例中,所述数据格式转换要求包括:将avro格式的数据转换为json格式的数据时,所述处理单元304,用于在所述NiFi中,使用ConvertAvroToJSON组件将avro解析成json,以将avro格式的数据转换为json格式的数据。
在本发明一个实施例中,所述处理单元304,用于所述数据存储要求包括用于持久化存储时,通过所述NiFi,将所述当前数据组存储至HDFS或Hbase;所述数据存储要求包括用于统计分析时,通过所述NiFi,将所述当前数据组存储至Hive;所述数据存储要求包括用于流式计算时,通过所述NiFi,将所述当前数据组存储至Kafka;所述数据存储要求包括用于检索时,通过所述NiFi,将所述当前数据组存储至Elasticsearch。
上述装置内的各单元之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
此外,本发明一个实施例提供了一种可读介质,包括执行指令,当存储控制器的处理器执行所述执行指令时,所述存储控制器执行上述任一所述的redo日志批量同步方法。
此外,本发明一个实施例提供了一种存储控制器,包括:处理器、存储器和总线;
所述存储器用于存储执行指令,所述处理器与所述存储器通过所述总线连接,当所述存储控制器运行时,所述处理器执行所述存储器存储的所述执行指令,以使所述存储控制器执行上述任一所述的redo日志批量同步方法。
综上所述,本发明的实施例具有至少如下有益效果:
1、本发明实施例中,提供的redo日志批量同步方法包括:对oracle进行配置,并基于此对NiFi中的待配置组件进行配置;基于配置好的oracle和NiFi,按照时间先后顺序依次抽取oracle的redo日志中变化的各个数据,以顺序打包获得各个数据组,同一数据组中不同数据的操作标识相同,且对于任意相邻的两数据组,在先数据组中数据的抽取时间早于在后数据组中数据的抽取时间,该两数据组中数据的操作标识不同;需要进行格式转换时,根据数据格式转换要求对各数据组中的各个数据进行格式转换后,存储至指定的大数据平台,否则进行直接存储。因此,本发明实施例可在不同系统之间进行同步。
2、本发明实施例提出的基于NiFi和oracle的redo日志批量同步方法,能够无侵入地将oracle变化的数据,按照顺序并分类同步到对应的系统中,这一同步方法技术实施简单,难点低,开发工作少,易于实施与应用,性能快速稳定。此外,作为一种灵活多样可扩展的技术方案,本发明实施例根据实际业务需求可形成多种多样的多级数据采集流程。
需要说明的是,在本文中,诸如第一和第二之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个······”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同因素。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储在计算机可读取的存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质中。
最后需要说明的是:以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

Claims (10)

1.一种redo日志批量同步方法,其特征在于,对oracle进行配置,还包括:
基于配置好的所述oracle,对NiFi中的待配置组件进行配置;
基于配置好的所述oracle和配置好的所述NiFi,按照时间先后顺序依次抽取所述oracle的redo日志中变化的每一个数据,以按照时间先后顺序依次打包获得至少一个数据组,其中,所述至少一个数据组满足:同一数据组中不同数据的操作标识相同,以及,对于任意相邻的第一数据组和第二数据组,得到所述第一数据组的时间早于所述第二数据组时,所述第一数据组中任一数据的抽取时间早于所述第二数据组中任一数据的抽取时间,且所述第一数据组中任一数据的操作标识不同于所述第二数据组中任一数据的操作标识;
根据预设的数据格式转换要求,判断是否需要进行格式转换,若是,基于实时流式处理模式,针对依次获得的每一个所述数据组均执行:根据所述数据格式转换要求对当前数据组中的每一个数据均进行格式转换,并将经格式转换后的所述当前数据组存储至预设的数据存储要求所指定的大数据平台,否则,将所述当前数据组存储至所述数据存储要求所指定的大数据平台。
2.根据权利要求1所述的方法,其特征在于,
所述对oracle进行配置,包括:判断所述oracle是否启用补全日志,若是,针对UPDATE命令更改的字段,在所述redo日志中的撤销数据块的变更矢量中,记录字段的更改前的值、字段的更改后的值、用于修改字段的预设条件的值;若否,针对所述UPDATE命令更改的字段,在所述redo日志中的撤销数据块的变更矢量中记录字段的更改前的值,在所述redo日志中的数据块的变更矢量中,记录字段的更改后的值但不记录同行中未被修改的字段,以及在不重启所述oracle的条件下,使用sqplus执行alter database add supplementallog data命令,以启用所述补全日志。
3.根据权利要求1所述的方法,其特征在于,
所述对NiFi中的待配置组件进行配置,包括:通过执行下述配置操作中的任意一种或多种,以对NiFi中的GetAllOracleChangeByLog组件进行配置:
将Database Connection Pooling Service的值,配置为所述oracle的连接池信息;
将Table Name的值,配置为要同步的表信息;
将target user name的值,配置为要同步的表所归属的用户;
将fetch size的值,配置为一个批次中可同步的最大数量;
将start time的值,配置为开始同步数据的时间段;
将include rowid的值,配置为要同步的表信息是否会包含rowid信息。
4.根据权利要求1所述的方法,其特征在于,
所述数据格式转换要求包括:将avro格式的数据转换为JavaScript对象简谱json格式的数据时,所述根据所述数据格式转换要求对当前数据组中的每一个数据均进行格式转换,包括:在所述NiFi中,使用ConvertAvroToJSON组件将avro解析成json,以将avro格式的数据转换为json格式的数据。
5.根据权利要求1至4中任一所述的方法,其特征在于,
所述将所述当前数据组存储至所述数据存储要求所指定的大数据平台,包括:
所述数据存储要求包括用于持久化存储时,通过所述NiFi,将所述当前数据组存储至Hadoop分布式文件系统HDFS或Hbase;
所述数据存储要求包括用于统计分析时,通过所述NiFi,将所述当前数据组存储至Hive;
所述数据存储要求包括用于流式计算时,通过所述NiFi,将所述当前数据组存储至Kafka;
所述数据存储要求包括用于检索时,通过所述NiFi,将所述当前数据组存储至Elasticsearch。
6.一种redo日志批量同步装置,其特征在于,包括:
第一配置单元,用于对oracle进行配置;
第二配置单元,用于基于配置好的所述oracle,对NiFi中的待配置组件进行配置;
数据抽取单元,用于基于配置好的所述oracle和配置好的所述NiFi,按照时间先后顺序依次抽取所述oracle的redo日志中变化的每一个数据,以按照时间先后顺序依次打包获得至少一个数据组,其中,所述至少一个数据组满足:同一数据组中不同数据的操作标识相同,以及,对于任意相邻的第一数据组和第二数据组,得到所述第一数据组的时间早于所述第二数据组时,所述第一数据组中任一数据的抽取时间早于所述第二数据组中任一数据的抽取时间,且所述第一数据组中任一数据的操作标识不同于所述第二数据组中任一数据的操作标识;
处理单元,用于根据预设的数据格式转换要求,判断是否需要进行格式转换,若是,基于实时流式处理模式,针对依次获得的每一个所述数据组均执行:根据所述数据格式转换要求对当前数据组中的每一个数据均进行格式转换,并将经格式转换后的所述当前数据组存储至预设的数据存储要求所指定的大数据平台,否则,将所述当前数据组存储至所述数据存储要求所指定的大数据平台。
7.根据权利要求6所述的redo日志批量同步装置,其特征在于,
所述第一配置单元,用于判断所述oracle是否启用补全日志,若是,针对UPDATE命令更改的字段,在所述redo日志中的撤销数据块的变更矢量中,记录字段的更改前的值、字段的更改后的值、用于修改字段的预设条件的值;若否,针对所述UPDATE命令更改的字段,在所述redo日志中的撤销数据块的变更矢量中记录字段的更改前的值,在所述redo日志中的数据块的变更矢量中,记录字段的更改后的值但不记录同行中未被修改的字段,以及在不重启所述oracle的条件下,使用sqplus执行alter database add supplemental log data命令,以启用所述补全日志。
8.根据权利要求6所述的redo日志批量同步装置,其特征在于,
所述第二配置单元,用于通过执行下述配置操作中的任意一种或多种,以对NiFi中的GetAllOracleChangeByLog组件进行配置:
将Database Connection Pooling Service的值,配置为所述oracle的连接池信息;
将Table Name的值,配置为要同步的表信息;
将target user name的值,配置为要同步的表所归属的用户;
将fetch size的值,配置为一个批次中可同步的最大数量;
将start time的值,配置为开始同步数据的时间段;
将include rowid的值,配置为要同步的表信息是否会包含rowid信息。
9.根据权利要求6所述的redo日志批量同步装置,其特征在于,
所述数据格式转换要求包括:将avro格式的数据转换为JavaScript对象简谱json格式的数据时,所述处理单元,用于在所述NiFi中,使用ConvertAvroToJSON组件将avro解析成json,以将avro格式的数据转换为json格式的数据。
10.根据权利要求6至9中任一所述的redo日志批量同步装置,其特征在于,
所述处理单元,用于所述数据存储要求包括用于持久化存储时,通过所述NiFi,将所述当前数据组存储至Hadoop分布式文件系统HDFS或Hbase;所述数据存储要求包括用于统计分析时,通过所述NiFi,将所述当前数据组存储至Hive;所述数据存储要求包括用于流式计算时,通过所述NiFi,将所述当前数据组存储至Kafka;所述数据存储要求包括用于检索时,通过所述NiFi,将所述当前数据组存储至Elasticsearch。
CN201811115047.7A 2018-09-25 2018-09-25 一种redo日志批量同步方法及装置 Active CN109376196B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811115047.7A CN109376196B (zh) 2018-09-25 2018-09-25 一种redo日志批量同步方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811115047.7A CN109376196B (zh) 2018-09-25 2018-09-25 一种redo日志批量同步方法及装置

Publications (2)

Publication Number Publication Date
CN109376196A true CN109376196A (zh) 2019-02-22
CN109376196B CN109376196B (zh) 2021-04-13

Family

ID=65402322

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811115047.7A Active CN109376196B (zh) 2018-09-25 2018-09-25 一种redo日志批量同步方法及装置

Country Status (1)

Country Link
CN (1) CN109376196B (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110162461A (zh) * 2019-04-16 2019-08-23 平安科技(深圳)有限公司 数据同步验证方法、装置和计算机设备
CN110647548A (zh) * 2019-09-23 2020-01-03 浪潮软件股份有限公司 一种基于NiFi及其状态值的流式数据转批量方法及系统
CN111008188A (zh) * 2019-10-29 2020-04-14 平安科技(深圳)有限公司 数据迁移方法、装置、计算机设备和存储介质
CN111258997A (zh) * 2020-01-16 2020-06-09 浪潮软件股份有限公司 基于NiFi的数据处理方法和装置
CN112685426A (zh) * 2021-01-21 2021-04-20 浪潮云信息技术股份公司 一种基于NiFi的Kafka消费NewSQL CDC流数据转换方法
CN112732662A (zh) * 2021-01-04 2021-04-30 浪潮云信息技术股份公司 一种NiFi同步数据量统计方法
CN113641304A (zh) * 2021-07-05 2021-11-12 深圳市宏旺微电子有限公司 用于管理数据块的方法、装置、终端设备及存储介质
CN113704213A (zh) * 2021-08-20 2021-11-26 辽宁振兴银行股份有限公司 一种基于sqlldr2和ogg数据同步的实现方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101807210A (zh) * 2010-04-26 2010-08-18 中兴通讯股份有限公司 一种数据库间数据同步的方法、系统及设备
CN102222071A (zh) * 2010-04-16 2011-10-19 华为技术有限公司 数据同步处理方法、设备及系统
CN102752372A (zh) * 2012-06-18 2012-10-24 天津神舟通用数据技术有限公司 一种基于文件的数据库同步方法
US20140258223A1 (en) * 2013-03-08 2014-09-11 Oracle International Corporation Adaptive high-performance database redo log synchronization
CN107330028A (zh) * 2017-06-23 2017-11-07 北京北信源软件股份有限公司 一种Apache NiFi在源数据录入数据库方面的扩展应用方法和系统

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102222071A (zh) * 2010-04-16 2011-10-19 华为技术有限公司 数据同步处理方法、设备及系统
CN101807210A (zh) * 2010-04-26 2010-08-18 中兴通讯股份有限公司 一种数据库间数据同步的方法、系统及设备
CN102752372A (zh) * 2012-06-18 2012-10-24 天津神舟通用数据技术有限公司 一种基于文件的数据库同步方法
US20140258223A1 (en) * 2013-03-08 2014-09-11 Oracle International Corporation Adaptive high-performance database redo log synchronization
CN107330028A (zh) * 2017-06-23 2017-11-07 北京北信源软件股份有限公司 一种Apache NiFi在源数据录入数据库方面的扩展应用方法和系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
邹先霞等: "基于数据库日志的变化数据捕获研究", 《小型微型计算机系统》 *

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110162461B (zh) * 2019-04-16 2023-08-15 平安科技(深圳)有限公司 数据同步验证方法、装置和计算机设备
CN110162461A (zh) * 2019-04-16 2019-08-23 平安科技(深圳)有限公司 数据同步验证方法、装置和计算机设备
CN110647548B (zh) * 2019-09-23 2023-03-21 浪潮软件股份有限公司 一种基于NiFi及其状态值的流式数据转批量方法及系统
CN110647548A (zh) * 2019-09-23 2020-01-03 浪潮软件股份有限公司 一种基于NiFi及其状态值的流式数据转批量方法及系统
CN111008188A (zh) * 2019-10-29 2020-04-14 平安科技(深圳)有限公司 数据迁移方法、装置、计算机设备和存储介质
CN111008188B (zh) * 2019-10-29 2023-08-15 平安科技(深圳)有限公司 数据迁移方法、装置、计算机设备和存储介质
CN111258997A (zh) * 2020-01-16 2020-06-09 浪潮软件股份有限公司 基于NiFi的数据处理方法和装置
CN111258997B (zh) * 2020-01-16 2023-11-03 浪潮软件股份有限公司 基于NiFi的数据处理方法和装置
CN112732662B (zh) * 2021-01-04 2023-03-28 浪潮云信息技术股份公司 一种NiFi同步数据量统计方法
CN112732662A (zh) * 2021-01-04 2021-04-30 浪潮云信息技术股份公司 一种NiFi同步数据量统计方法
CN112685426A (zh) * 2021-01-21 2021-04-20 浪潮云信息技术股份公司 一种基于NiFi的Kafka消费NewSQL CDC流数据转换方法
CN113641304A (zh) * 2021-07-05 2021-11-12 深圳市宏旺微电子有限公司 用于管理数据块的方法、装置、终端设备及存储介质
CN113641304B (zh) * 2021-07-05 2023-10-20 深圳市宏旺微电子有限公司 用于管理数据块的方法、装置、终端设备及存储介质
CN113704213A (zh) * 2021-08-20 2021-11-26 辽宁振兴银行股份有限公司 一种基于sqlldr2和ogg数据同步的实现方法

Also Published As

Publication number Publication date
CN109376196B (zh) 2021-04-13

Similar Documents

Publication Publication Date Title
CN109376196A (zh) 一种redo日志批量同步方法及装置
CN109460349B (zh) 一种基于日志的测试用例生成方法和装置
CN104317843B (zh) 一种数据同步etl系统
CN103810224B (zh) 信息持久化和查询方法及装置
CN107544984A (zh) 一种数据处理的方法和装置
CN110321383A (zh) 大数据平台数据同步方法、装置、计算机设备及存储介质
CN110674154B (zh) 一种基于Spark的对Hive中数据进行插入、更新和删除的方法
CN108319711B (zh) 数据库的事务一致性测试方法、装置、存储介质及设备
CN106874281B (zh) 实现数据库读写分离的方法和装置
CN106126601A (zh) 一种社保大数据分布式预处理方法及系统
CN107748782A (zh) 查询语句处理方法及装置
CN106682036A (zh) 一种数据交换系统及其交换方法
CN105787058B (zh) 一种用户标签系统及基于用户标签系统的数据推送系统
CN107515874A (zh) 一种分布式非关系型数据库中同步增量数据的方法与设备
CN107301214A (zh) 在hive中数据迁移方法、装置及终端设备
CN108536745A (zh) 基于Shell的数据表提取方法、终端、设备及存储介质
CN112130891A (zh) 一种数据库持续部署的方法和设备
CN111159020B (zh) 一种应用于同步软件测试的方法和装置
CN115438122A (zh) 数据异构同步系统
US20220129418A1 (en) Method for determining blood relationship of data, electronic device and storage medium
CN115203217A (zh) 数据同步方法、装置、设备及计算机可读存储介质
CN110704442A (zh) 一种大数据的实时获取方法及装置
US20150039558A1 (en) Database management method, database system and medium
CN116737829A (zh) 一种数据同步方法、装置、存储介质及电子设备
CN115391457B (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
TA01 Transfer of patent application right

Effective date of registration: 20210319

Address after: 250100 Inspur science and Technology Park, 1036 Inspur Road, hi tech Zone, Jinan City, Shandong Province

Applicant after: Inspur Software Technology Co.,Ltd.

Address before: 250100 Ji'nan hi tech Zone No. 2877, Shandong Province

Applicant before: INSPUR GROUP Co.,Ltd.

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant