CN112307121B - 基于Oracle的数据同步方法、装置及计算机设备 - Google Patents
基于Oracle的数据同步方法、装置及计算机设备 Download PDFInfo
- Publication number
- CN112307121B CN112307121B CN202011191712.8A CN202011191712A CN112307121B CN 112307121 B CN112307121 B CN 112307121B CN 202011191712 A CN202011191712 A CN 202011191712A CN 112307121 B CN112307121 B CN 112307121B
- Authority
- CN
- China
- Prior art keywords
- data
- synchronized
- ignite
- table area
- oracle
- 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
- 238000000034 method Methods 0.000 title claims abstract description 65
- 230000001360 synchronised effect Effects 0.000 claims abstract description 93
- 238000012545 processing Methods 0.000 claims abstract description 35
- 230000005540 biological transmission Effects 0.000 claims abstract description 27
- 238000006243 chemical reaction Methods 0.000 claims abstract description 13
- 238000004590 computer program Methods 0.000 claims description 15
- 238000013507 mapping Methods 0.000 claims description 6
- 238000004140 cleaning Methods 0.000 claims description 5
- 238000005096 rolling process Methods 0.000 claims description 5
- 238000007405 data analysis Methods 0.000 claims description 4
- 238000001514 detection method Methods 0.000 claims description 4
- 230000008569 process Effects 0.000 abstract description 27
- 238000011161 development Methods 0.000 abstract description 6
- 238000005516 engineering process Methods 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 5
- 230000003203 everyday effect Effects 0.000 description 4
- 238000012544 monitoring process Methods 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000004888 barrier function Effects 0.000 description 2
- 230000002452 interceptive effect Effects 0.000 description 2
- 238000007781 pre-processing Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012216 screening Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- 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/2358—Change logging, detection, and notification
-
- 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/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了基于Oracle的数据同步方法、装置、计算机设备及存储介质,涉及云存储的分布式存储技术,包括若消息队列集群中从Oracle数据库中读取到增量日志数据,消费增量日志数据;解析获取其中的增量数据后依次进行特殊字符处理和类型转换,得到处理后增量数据并发送至Ignite集群进行存储;若当前系统时间与上一数据异步传输时间之间的时间间隔等于数据异步传输周期,调用SQL语句以从Oracle数据库中读取对应的待同步数据;获取Ignite集群的目标Ignite节点中的备用表区域,将待同步数据发送至备用表区域。该方法实现了异构数据库中的数据实时同步和定时批量同步,无需开发大量同步程序,降低开发成本,而且数据同步过程不易出错。
Description
技术领域
本发明涉及云存储的分布式存储技术领域,尤其涉及一种基于Oracle的数据同步方法、装置、计算机设备及存储介质。
背景技术
目前,将数据从一个平台同步至另一个平台中是数据同步的常见应用场景。数据的同步方式又分为实时同步和定时批量同步,为了实现异构数据库中的数据实时同步和定时批量同步过程,需要开发大量的同步程序,不仅开发工作量大,而且易出错,导致数据同步过程稳定性差。
发明内容
本发明实施例提供了一种基于Oracle的数据同步方法、装置、计算机设备及存储介质,旨在解决现有技术中异构数据库中的数据实时同步和定时批量同步过程,需要开发大量的同步程序,不仅开发工作量大,而且易出错的问题。
第一方面,本发明实施例提供了一种基于Oracle的数据同步方法,其包括:
实时检测消息队列集群中是否从Oracle数据库中读取到增量日志数据;
若消息队列集群中从Oracle数据库中读取到增量日志数据,消费所述消息队列集群中的增量日志数据;
解析获取所述增量日志数据中的增量数据,将所述增量数据依次进行特殊字符处理和类型转换,以得到处理后增量数据,将所述处理后增量数据发送至Ignite集群进行存储;
若当前系统时间与上一数据异步传输时间之间的时间间隔等于预设的数据异步传输周期,调用本地预先存储的SQL语句,通过所述SQL语句从Oracle数据库中读取对应的待同步数据;以及
获取Ignite集群的目标Ignite节点中的备用表区域,将所述待同步数据发送至备用表区域。
第二方面,本发明实施例提供了一种基于Oracle的数据同步装置,其包括:
增量日志数据检测单元,用于实时检测消息队列集群中是否从Oracle数据库中读取到增量日志数据;
数据消费单元,用于若消息队列集群中从Oracle数据库中读取到增量日志数据,消费所述消息队列集群中的增量日志数据;
数据解析处理单元,用于解析获取所述增量日志数据中的增量数据,将所述增量数据依次进行特殊字符处理和类型转换,以得到处理后增量数据,将所述处理后增量数据发送至Ignite集群进行存储;
待同步数据读取单元,用于若当前系统时间与上一数据异步传输时间之间的时间间隔等于预设的数据异步传输周期,调用本地预先存储的SQL语句,通过所述SQL语句从Oracle数据库中读取对应的待同步数据;以及
备用表区域定位发送单元,用于获取Ignite集群的目标Ignite节点中的备用表区域,将所述待同步数据发送至备用表区域。
第三方面,本发明实施例又提供了一种计算机设备,其包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述第一方面所述的基于Oracle的数据同步方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,其中所述计算机可读存储介质存储有计算机程序,所述计算机程序当被处理器执行时使所述处理器执行上述第一方面所述的基于Oracle的数据同步方法。
本发明实施例提供了一种基于Oracle的数据同步方法、装置、计算机设备及存储介质,包括实时检测消息队列集群中是否从Oracle数据库中读取到增量日志数据;若消息队列集群中从Oracle数据库中读取到增量日志数据,消费所述消息队列集群中的增量日志数据;解析获取所述增量日志数据中的增量数据,将所述增量数据依次进行特殊字符处理和类型转换,以得到处理后增量数据,将所述处理后增量数据发送至Ignite集群进行存储;若当前系统时间与上一数据异步传输时间之间的时间间隔等于预设的数据异步传输周期,调用本地预先存储的SQL语句,通过所述SQL语句从Oracle数据库中读取对应的待同步数据;获取Ignite集群的目标Ignite节点中的备用表区域,将所述待同步数据发送至备用表区域。该方法实现了异构数据库中的数据实时同步和定时批量同步,无需开发大量同步程序,降低开发成本,而且数据同步过程不易出错。
附图说明
为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的基于Oracle的数据同步方法的应用场景示意图;
图2为本发明实施例提供的基于Oracle的数据同步方法的流程示意图;
图3为本发明实施例提供的基于Oracle的数据同步装置的示意性框图;
图4为本发明实施例提供的计算机设备的示意性框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
还应当进一步理解,在本发明说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
请参阅图1和图2,图1为本发明实施例提供的基于Oracle的数据同步方法的应用场景示意图;图2为本发明实施例提供的基于Oracle的数据同步方法的流程示意图,该基于Oracle的数据同步方法应用于服务器中,该方法通过安装于服务器中的应用软件进行执行。
如图2所示,该方法包括步骤S110~S150。
S110、实时检测消息队列集群中是否从Oracle数据库中读取到增量日志数据。
在本实施例中,为了更清楚的理解本申请的技术方案,下面对所涉及的终端进行详细介绍。本申请是在数据同步服务器的角度描述技术方案。
一是Oracle数据库服务器,在该Oracle数据库服务器的Oracle数据库中存储有海量的用户数据,这些用户数据可以按月份分表存储,当Oracle数据库中有增量数据时会产生数据增量日志。
二是日志监控服务器,在日志监控服务器安装了用于监控Oracle数据库是否有日志产生的GolenGate软件,一旦监控到有日志产生,则将数据增量日志传输至消息队列集群。
三是消息队列集群,也即MQ集群,可接收大量的日志数据并分发至数据同步服务器。具体实施时,消息队列集群为Kafka集群,Kafka集群是一个分布式消息系统。
四是数据同步服务器,简记为服务器,其第一个作用是监控消息队列集群中是否接收到新的日志数据,一旦监控到消息队列集群有新的日志数据,则立即获取该日志数据。在解析了日志数据后,根据日志数据中对应的解析内容进行特殊字符处理和数据类型转换后,将数据发送至Ignite集群进程存储。服务器的第二个作用是定时批量将数据从Oracle数据库服务器同步至Ignite集群,可以视为服务器的异步工作模式。
五是Ignite集群,Ignite集群中包括多个Ignite节点,每一Ignite节点均能存储数据并根据数据及预设的计算策略进行运算。由于Ignite集群是由多个Ignite节点组成,故实现了并行运算。
其中,服务器实时检测消息队列集群中是否从Oracle数据库中读取到增量日志数据,以实现及时的获取增量数据后发送至Ignite集群进行存储。
S120、若消息队列集群中从Oracle数据库中读取到增量日志数据,消费所述消息队列集群中的增量日志数据。
在本实施例中,若数据库监测到消息队列集群中从Oracle数据库中读取到增量日志数据,此时数据库需立即从消息队列集群中消费增量日志数据。
S130、解析获取所述增量日志数据中的增量数据,将所述增量数据依次进行特殊字符处理和类型转换,以得到处理后增量数据,将所述处理后增量数据发送至Ignite集群进行存储。
在本实施例中,由于Oracle数据库产生的增量日志数据中包括“#”、“\”等字符,这些字符在计算机里面是有特殊含义的,故需要对这些特殊字符进行转义处理,也即在特殊字符之前增加一个“\”进行转义即可。而且由于增量日志数据中的数字、日期等是Oracle数据库中的数据类型,此时将其转为成java中数字、日期等对应的数据类型。通过上述数据处理,使得Ignite集群中无需再进行数据预处理,提高了数据同步的效率。
在一实施例中,步骤S130中解析获取所述增量日志数据中的增量数据包括:
获取所述增量日志数据中的目标表名称、数据操作类型及目标数据,根据所述目标表名称、数据操作类型及目标数据获取增量数据。
例如,获取所述增量日志数据如下:
{"table":"LIFEDATA.DEPT_INFO","op_type":"I","op_ts":"2020-02-03
12:53:11.002414","current_ts":"2020-02-03T20:53:13.413001","pos":"00000114320040407191","after":{XXXXXXX}};
其中,"table":"LIFEDATA.DEPT_INFO"表示目标表名称为DEPT_INFO,"op_type":"I"表示新增数据,"pos":"00000114320040407191"和"after":{XXXXXXX}表示从DEPT_INFO表中00000114320040407191位置之后的数据为本次新增的目标数据。通过对所述增量日志数据中进行解析,即可准确获知增量数据及其对应需同步到的目标位置。
在一实施例中,步骤S130中将所述增量数据依次进行特殊字符处理和类型转换,以得到处理后增量数据包括:
调用预先存储的特殊字符集合,获取所述特殊字符集合中包括的特殊字符;
判断所述增量数据中是否包括所述特殊字符集合中的特殊字符;
若所述增量数据中包括所述特殊字符集合中的特殊字符,获取对应的目标特殊字符集,将目标特殊字符集中每一目标特殊字符之前自动增加\以进行转义,得到转义处理后增量数据;
获取所述转义处理后增量数据中数字数据类型和日期数据类型,将所述转义处理后增量数据中数字数据类型和日期数据类型军转换成java数字数据类型和java日期数据类型,以得到处理后增量数据。
在本实施例中,为了更准确的获取增量日志数据中特殊字符,在数据同步服务器的本地存储有特殊字符集合,可以理解为特殊字符清单,里面包括需要进行转义处理的多个字符。
当在数据同步服务器中解析获取所述增量日志数据中的增量数据后,在增量数据中判断是否包括所述特殊字符集合中的特殊字符,若包括则表示增量数据中存在特殊字符需要进行转义处理,具体是在获取对应的目标特殊字符集,将目标特殊字符集中每一目标特殊字符之前自动增加\以进行转义,得到转义处理后增量数据。
之后由于转义处理后增量数据中数字数据类型和日期数据类型,这是Oracle数据库中的数据类型,而Ignite集群中是支持java类型的数字数据类型和日期数据类型,此时将所述转义处理后增量数据中数字数据类型和日期数据类型军转换成java数字数据类型和java日期数据类型,以得到处理后增量数据。通过上述特殊字符转义处理和数字类型转换后,处理后增量数据是可以直接存储至Ignite集群中目标Ignite节点中的目标数据表中。
上述步骤S110-S130描述了对数据时效性要求较高的数据从Oracle数据库同步至Ignite集群的过程。由于还有一些对数据时效性要求不高的数据,可以定时异步批量传输至Ignite集群。下面仍在数据同步服务器的角度描述数据定时异步批量传输的过程。
S140、若当前系统时间与上一数据异步传输时间之间的时间间隔等于预设的数据异步传输周期,调用本地预先存储的SQL语句,通过所述SQL语句从Oracle数据库中读取对应的待同步数据。
在本实施例中,从Oracle数据库中获取一些数据时效性不高的数据时,可以采取定时批量同步的方式。例如设置每天凌晨1点从Oracle数据库中根据预先存储的SQL语句从Oracle数据库中读取对应的待同步数据。为了实现每天定时的数据批量同步过程,需要进行当前系统时间与上一数据异步传输时间之间的时间间隔是否等于预设的数据异步传输周期这一判定,若当前系统时间与上一数据异步传输时间之间的时间间隔等于所述数据异步传输周期,则此时可以启动进行数据批量同步过程。
S150、获取Ignite集群的目标Ignite节点中的备用表区域,将所述待同步数据发送至备用表区域。
在本实施例中,数据同步服务器中调用预先存储的SQL语句从Oracle数据库服务器中获取了待同步数据后,需要将所述待同步数据进行处理后将其发送至目标Ignite节点中的备用表区域。
在一实施例中,步骤S150包括:
将所述待同步数据进行数据清洗,以更新待同步数据;
获取本地存储的字段映射表,根据所述字段映射表获取所述待同步数据中各字段在备用表区域中对应的待写入表字段,以生成当前SQL语句;
根据所述当前SQL语句将所述待同步数据写入至备用表区域。
在本实施例中,通过提前写好的SQL向Oracle查询数据,根据查询结果集的字段和待写入表字段的对应关系,生成更新SQL并执行,从而实现异步传输的过程。
之所以选择目标Ignite节点中的备用表区域,是因为目标Ignite节点中的生效表区域中的数据此时可能处于被调用参与计算,为了避免干扰当前运算,此时需要在目标Ignite节点中启用一个备用表区域。当完成将所述待同步数据发送至备用表区域进行存储后,可以将之前的生效表区域切换至当前备用表区域并清空,同时将之前的备用表区域切换成当前生效表区域。
在一实施例中,所述将所述待同步数据进行数据清洗,以更新待同步数据,包括:
获取所述待同步数据中的残缺数据及缺失数据,以存储至非有效数据表;
将所述待同步数据中的残缺数据及缺失数据进行删除,以更新待同步数据。
在本实施例中,由于通过所述SQL语句从Oracle数据库中读取对应的待同步数据中并不一定军事有效数据,此时为了筛选出其中的有效数据而写入备用表区域,需先进行数据清洗。在对所述待同步数据进行数据清洗时,是对数据进行重新审查和校验的过程,目的在于筛选出残缺数据及缺失数据,将其存储至非有效数据表中后,可以由数据同步服务器转发该非有效数据表至目标接收终端(例如,该目标接收终端是数据同步服务器的维护人员所使用的智能终端),以及时通知进行非有效数据的数据故障排查。而且,将所述待同步数据中的残缺数据及缺失数据进行删除后,即可更新待同步数据。
在一实施例中,所述根据所述当前SQL语句将所述待同步数据写入至备用表区域的步骤之后,还包括:
若接收到备用表区域对应的Ignite节点发送的同步失败通知信息,将待同步数据进行回滚后发送至备用表区域。
在本实施例中,当服务器将待同步数据发送至备用表区域的过程中若有故障产生导致数据写入失败,此时为了实现自动化排障,可以将待同步数据进行回滚再次后发送至备用表区域。一般将待同步数据最多回滚3次后仍未成功写入备用表区域,表示Ignite节点存在故障。可以由Ignite集群再次选定一个Ignite节点作为目标节点以供待同步数据写入。
在一实施例中,所述根据所述当前SQL语句将所述待同步数据写入至备用表区域的步骤之后,还包括:
若接收到备用表区域对应的Ignite节点发送的同步成功通知信息,判断是否接收到Ignite节点发送的备用表区域状态切换为生效表区域的切换通知信息;
若接收到Ignite节点发送的备用表区域状态切换为生效表区域的切换通知信息,将所述待同步数据发送至待删除区域进行存储。
在本实施例中,当接收到备用表区域对应的Ignite节点发送的同步成功通知信息,表示待同步数据已成功同步至Ignite节点中的备用表区域,此时该Ignite节点会将备用表区域状态切换为生效表区域从而实现AB表滚动更新,即正在同步过程中的数据,存储为一个非生效的版本,待数据全部同步完成后,切换生效。
当接收到Ignite节点发送的备用表区域状态切换为生效表区域的切换通知信息,此时服务器中的待同步数据发送至本地的待删除区域进行存储,之后可以定期清理待删除区域。
该方法实现了异构数据库中的数据实时同步和定时批量同步,无需开发大量同步程序,降低开发成本,而且数据同步过程不易出错。
本发明实施例还提供一种基于Oracle的数据同步装置,该基于Oracle的数据同步装置用于执行前述基于Oracle的数据同步方法的任一实施例。具体地,请参阅图3,图3是本发明实施例提供的基于Oracle的数据同步装置的示意性框图。该基于Oracle的数据同步装置100可以配置于服务器中。
如图3所示,基于Oracle的数据同步装置100包括:增量日志数据检测单元110、数据消费单元120、数据解析处理单元130、待同步数据读取单元140、备用表区域定位发送单元150。
增量日志数据检测单元110,用于实时检测消息队列集群中是否从Oracle数据库中读取到增量日志数据。
在本实施例中,服务器实时检测消息队列集群中是否从Oracle数据库中读取到增量日志数据,以实现及时的获取增量数据后发送至Ignite集群进行存储。
数据消费单元120,用于若消息队列集群中从Oracle数据库中读取到增量日志数据,消费所述消息队列集群中的增量日志数据。
在本实施例中,若数据库监测到消息队列集群中从Oracle数据库中读取到增量日志数据,此时数据库需立即从消息队列集群中消费增量日志数据。
数据解析处理单元130,用于解析获取所述增量日志数据中的增量数据,将所述增量数据依次进行特殊字符处理和类型转换,以得到处理后增量数据,将所述处理后增量数据发送至Ignite集群进行存储。
在本实施例中,由于Oracle数据库产生的增量日志数据中包括“#”、“\”等字符,这些字符在计算机里面是有特殊含义的,故需要对这些特殊字符进行转义处理,也即在特殊字符之前增加一个“\”进行转义即可。而且由于增量日志数据中的数字、日期等是Oracle数据库中的数据类型,此时将其转为成java中数字、日期等对应的数据类型。通过上述数据处理,使得Ignite集群中无需再进行数据预处理,提高了数据同步的效率。
在一实施例中,数据解析处理单元130还用于:
获取所述增量日志数据中的目标表名称、数据操作类型及目标数据,根据所述目标表名称、数据操作类型及目标数据获取增量数据。
例如,获取所述增量日志数据如下:
{"table":"LIFEDATA.DEPT_INFO","op_type":"I","op_ts":"2020-02-03
12:53:11.002414","current_ts":"2020-02-03T20:53:13.413001","pos":"00000114320040407191","after":{XXXXXXX}};
其中,"table":"LIFEDATA.DEPT_INFO"表示目标表名称为DEPT_INFO,"op_type":"I"表示新增数据,"pos":"00000114320040407191"和"after":{XXXXXXX}表示从DEPT_INFO表中00000114320040407191位置之后的数据为本次新增的目标数据。通过对所述增量日志数据中进行解析,即可准确获知增量数据及其对应需同步到的目标位置。
在一实施例中,数据解析处理单元130还用于:
调用预先存储的特殊字符集合,获取所述特殊字符集合中包括的特殊字符;
判断所述增量数据中是否包括所述特殊字符集合中的特殊字符;
若所述增量数据中包括所述特殊字符集合中的特殊字符,获取对应的目标特殊字符集,将目标特殊字符集中每一目标特殊字符之前自动增加\以进行转义,得到转义处理后增量数据;
获取所述转义处理后增量数据中数字数据类型和日期数据类型,将所述转义处理后增量数据中数字数据类型和日期数据类型军转换成java数字数据类型和java日期数据类型,以得到处理后增量数据。
在本实施例中,为了更准确的获取增量日志数据中特殊字符,在数据同步服务器的本地存储有特殊字符集合,可以理解为特殊字符清单,里面包括需要进行转义处理的多个字符。
当在数据同步服务器中解析获取所述增量日志数据中的增量数据后,在增量数据中判断是否包括所述特殊字符集合中的特殊字符,若包括则表示增量数据中存在特殊字符需要进行转义处理,具体是在获取对应的目标特殊字符集,将目标特殊字符集中每一目标特殊字符之前自动增加\以进行转义,得到转义处理后增量数据。
之后由于转义处理后增量数据中数字数据类型和日期数据类型,这是Oracle数据库中的数据类型,而Ignite集群中是支持java类型的数字数据类型和日期数据类型,此时将所述转义处理后增量数据中数字数据类型和日期数据类型军转换成java数字数据类型和java日期数据类型,以得到处理后增量数据。通过上述特殊字符转义处理和数字类型转换后,处理后增量数据是可以直接存储至Ignite集群中目标Ignite节点中的目标数据表中。
上述过程描述了对数据时效性要求较高的数据从Oracle数据库同步至Ignite集群的过程。由于还有一些对数据时效性要求不高的数据,可以定时异步批量传输至Ignite集群。下面仍在数据同步服务器的角度描述数据定时异步批量传输的过程。
待同步数据读取单元140,用于若当前系统时间与上一数据异步传输时间之间的时间间隔等于预设的数据异步传输周期,调用本地预先存储的SQL语句,通过所述SQL语句从Oracle数据库中读取对应的待同步数据。
在本实施例中,从Oracle数据库中获取一些数据时效性不高的数据时,可以采取定时批量同步的方式。例如设置每天凌晨1点从Oracle数据库中根据预先存储的SQL语句从Oracle数据库中读取对应的待同步数据。为了实现每天定时的数据批量同步过程,需要进行当前系统时间与上一数据异步传输时间之间的时间间隔是否等于预设的数据异步传输周期这一判定,若当前系统时间与上一数据异步传输时间之间的时间间隔等于所述数据异步传输周期,则此时可以启动进行数据批量同步过程。
备用表区域定位发送单元150,用于获取Ignite集群的目标Ignite节点中的备用表区域,将所述待同步数据发送至备用表区域。
在本实施例中,数据同步服务器中调用预先存储的SQL语句从Oracle数据库服务器中获取了待同步数据后,需要将所述待同步数据进行处理后将其发送至目标Ignite节点中的备用表区域。
在一实施例中,备用表区域定位发送单元150包括:
数据清洗单元,用于将所述待同步数据进行数据清洗,以更新待同步数据;
当前SQL语句生成单元,用于获取本地存储的字段映射表,根据所述字段映射表获取所述待同步数据中各字段在备用表区域中对应的待写入表字段,以生成当前SQL语句;
当前数据同步单元,用于根据所述当前SQL语句将所述待同步数据写入至备用表区域。
在本实施例中,通过提前写好的SQL向Oracle查询数据,根据查询结果集的字段和待写入表字段的对应关系,生成更新SQL并执行,从而实现异步传输的过程。
之所以选择目标Ignite节点中的备用表区域,是因为目标Ignite节点中的生效表区域中的数据此时可能处于被调用参与计算,为了避免干扰当前运算,此时需要在目标Ignite节点中启用一个备用表区域。当完成将所述待同步数据发送至备用表区域进行存储后,可以将之前的生效表区域切换至当前备用表区域并清空,同时将之前的备用表区域切换成当前生效表区域。
在一实施例中,所述数据清洗单元,包括:
非有效数据筛选单元,用于获取所述待同步数据中的残缺数据及缺失数据,以存储至非有效数据表;
非有效数据删除单元,用于将所述待同步数据中的残缺数据及缺失数据进行删除,以更新待同步数据。
在本实施例中,由于通过所述SQL语句从Oracle数据库中读取对应的待同步数据中并不一定军事有效数据,此时为了筛选出其中的有效数据而写入备用表区域,需先进行数据清洗。在对所述待同步数据进行数据清洗时,是对数据进行重新审查和校验的过程,目的在于筛选出残缺数据及缺失数据,将其存储至非有效数据表中后,可以由数据同步服务器转发该非有效数据表至目标接收终端(例如,该目标接收终端是数据同步服务器的维护人员所使用的智能终端),以及时通知进行非有效数据的数据故障排查。而且,将所述待同步数据中的残缺数据及缺失数据进行删除后,即可更新待同步数据。
在一实施例中,所述基于Oracle的数据同步装置100还包括:
数据回滚单元,用于若接收到备用表区域对应的Ignite节点发送的同步失败通知信息,将待同步数据进行回滚后发送至备用表区域。
在本实施例中,当服务器将待同步数据发送至备用表区域的过程中若有故障产生导致数据写入失败,此时为了实现自动化排障,可以将待同步数据进行回滚再次后发送至备用表区域。一般将待同步数据最多回滚3次后仍未成功写入备用表区域,表示Ignite节点存在故障。可以由Ignite集群再次选定一个Ignite节点作为目标节点以供待同步数据写入。
在一实施例中,所述基于Oracle的数据同步装置100还包括:
切换消息检测单元,用于若接收到备用表区域对应的Ignite节点发送的同步成功通知信息,判断是否接收到Ignite节点发送的备用表区域状态切换为生效表区域的切换通知信息;
数据迁移单元,用于若接收到Ignite节点发送的备用表区域状态切换为生效表区域的切换通知信息,将所述待同步数据发送至待删除区域进行存储。
在本实施例中,当接收到备用表区域对应的Ignite节点发送的同步成功通知信息,表示待同步数据已成功同步至Ignite节点中的备用表区域,此时该Ignite节点会将备用表区域状态切换为生效表区域从而实现AB表滚动更新,即正在同步过程中的数据,存储为一个非生效的版本,待数据全部同步完成后,切换生效。
当接收到Ignite节点发送的备用表区域状态切换为生效表区域的切换通知信息,此时服务器中的待同步数据发送至本地的待删除区域进行存储,之后可以定期清理待删除区域。
该装置实现了异构数据库中的数据实时同步和定时批量同步,无需开发大量同步程序,降低开发成本,而且数据同步过程不易出错。
上述基于Oracle的数据同步装置可以实现为计算机程序的形式,该计算机程序可以在如图4所示的计算机设备上运行。
请参阅图4,图4是本发明实施例提供的计算机设备的示意性框图。该计算机设备500是服务器,服务器可以是独立的服务器,也可以是多个服务器组成的服务器集群。
参阅图4,该计算机设备500包括通过系统总线501连接的处理器502、存储器和网络接口505,其中,存储器可以包括非易失性存储介质503和内存储器504。
该非易失性存储介质503可存储操作系统5031和计算机程序5032。该计算机程序5032被执行时,可使得处理器502执行基于Oracle的数据同步方法。
该处理器502用于提供计算和控制能力,支撑整个计算机设备500的运行。
该内存储器504为非易失性存储介质503中的计算机程序5032的运行提供环境,该计算机程序5032被处理器502执行时,可使得处理器502执行基于Oracle的数据同步方法。
该网络接口505用于进行网络通信,如提供数据信息的传输等。本领域技术人员可以理解,图4中示出的结构,仅仅是与本发明方案相关的部分结构的框图,并不构成对本发明方案所应用于其上的计算机设备500的限定,具体的计算机设备500可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
其中,所述处理器502用于运行存储在存储器中的计算机程序5032,以实现本发明实施例公开的基于Oracle的数据同步方法。
本领域技术人员可以理解,图4中示出的计算机设备的实施例并不构成对计算机设备具体构成的限定,在其他实施例中,计算机设备可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。例如,在一些实施例中,计算机设备可以仅包括存储器及处理器,在这样的实施例中,存储器及处理器的结构及功能与图4所示实施例一致,在此不再赘述。
应当理解,在本发明实施例中,处理器502可以是中央处理单元(CentralProcessing Unit,CPU),该处理器502还可以是其他通用处理器、数字信号处理器(DigitalSignal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable GateArray,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。其中,通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
在本发明的另一实施例中提供计算机可读存储介质。该计算机可读存储介质可以为非易失性的计算机可读存储介质。该计算机可读存储介质存储有计算机程序,其中计算机程序被处理器执行时实现本发明实施例公开的基于Oracle的数据同步方法。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的设备、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本发明所提供的几个实施例中,应该理解到,所揭露的设备、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为逻辑功能划分,实际实现时可以有另外的划分方式,也可以将具有相同功能的单元集合成一个单元,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (7)
1.一种基于Oracle的数据同步方法,其特征在于,包括:
实时检测消息队列集群中是否从Oracle数据库中读取到增量日志数据;
若消息队列集群中从Oracle数据库中读取到增量日志数据,消费所述消息队列集群中的增量日志数据;
解析获取所述增量日志数据中的增量数据,将所述增量数据依次进行特殊字符处理和类型转换,以得到处理后增量数据,将所述处理后增量数据发送至Ignite集群进行存储;
若当前系统时间与上一数据异步传输时间之间的时间间隔等于预设的数据异步传输周期,调用本地预先存储的SQL语句,通过所述SQL语句从Oracle数据库中读取对应的待同步数据;以及
获取Ignite集群的目标Ignite节点中的备用表区域,将所述待同步数据发送至备用表区域;
所述将所述增量数据依次进行特殊字符处理和类型转换,以得到处理后增量数据,包括:
调用预先存储的特殊字符集合,获取所述特殊字符集合中包括的特殊字符;
判断所述增量数据中是否包括所述特殊字符集合中的特殊字符;
若所述增量数据中包括所述特殊字符集合中的特殊字符,获取对应的目标特殊字符集,将目标特殊字符集中每一目标特殊字符之前自动增加以进行转义,得到转义处理后增量数据;
获取所述转义处理后增量数据中数字数据类型和日期数据类型,将所述转义处理后增量数据中数字数据类型和日期数据类型军转换成java数字数据类型和java日期数据类型,以得到处理后增量数据;
所述获取Ignite集群的目标Ignite节点中的备用表区域,将所述待同步数据发送至备用表区域,包括:
将所述待同步数据进行数据清洗,以更新待同步数据;
获取本地存储的字段映射表,根据所述字段映射表获取所述待同步数据中各字段在备用表区域中对应的待写入表字段,以生成当前SQL语句;
根据所述当前SQL语句将所述待同步数据写入至备用表区域;
所述将所述待同步数据进行数据清洗,以更新待同步数据,包括:
获取所述待同步数据中的残缺数据及缺失数据,以存储至非有效数据表;
将所述待同步数据中的残缺数据及缺失数据进行删除,以更新待同步数据。
2.根据权利要求1所述的基于Oracle的数据同步方法,其特征在于,所述解析获取所述增量日志数据中的增量数据,包括:
获取所述增量日志数据中的目标表名称、数据操作类型及目标数据,根据所述目标表名称、数据操作类型及目标数据获取增量数据。
3.根据权利要求1所述的基于Oracle的数据同步方法,其特征在于,所述根据所述当前SQL语句将所述待同步数据写入至备用表区域之后,还包括:
若接收到备用表区域对应的Ignite节点发送的同步失败通知信息,将待同步数据进行回滚后发送至备用表区域。
4.根据权利要求1所述的基于Oracle的数据同步方法,其特征在于,所述根据所述当前SQL语句将所述待同步数据写入至备用表区域之后,还包括:
若接收到备用表区域对应的Ignite节点发送的同步成功通知信息,判断是否接收到Ignite节点发送的备用表区域状态切换为生效表区域的切换通知信息;
若接收到Ignite节点发送的备用表区域状态切换为生效表区域的切换通知信息,将所述待同步数据发送至待删除区域进行存储。
5.一种基于Oracle的数据同步装置,其特征在于,所述装置包括:
增量日志数据检测单元,用于实时检测消息队列集群中是否从Oracle数据库中读取到增量日志数据;
数据消费单元,用于若消息队列集群中从Oracle数据库中读取到增量日志数据,消费所述消息队列集群中的增量日志数据;
数据解析处理单元,用于解析获取所述增量日志数据中的增量数据,将所述增量数据依次进行特殊字符处理和类型转换,以得到处理后增量数据,将所述处理后增量数据发送至Ignite集群进行存储;
待同步数据读取单元,用于若当前系统时间与上一数据异步传输时间之间的时间间隔等于预设的数据异步传输周期,调用本地预先存储的SQL语句,通过所述SQL语句从Oracle数据库中读取对应的待同步数据;以及
备用表区域定位发送单元,用于获取Ignite集群的目标Ignite节点中的备用表区域,将所述待同步数据发送至备用表区域;
所述装置用于实现如权利要求1至4任一项所述的基于Oracle的数据同步方法。
6.一种计算机设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至4中任一项所述的基于Oracle的数据同步方法。
7.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序当被处理器执行时使所述处理器执行如权利要求1至4任一项所述的基于Oracle的数据同步方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011191712.8A CN112307121B (zh) | 2020-10-30 | 2020-10-30 | 基于Oracle的数据同步方法、装置及计算机设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011191712.8A CN112307121B (zh) | 2020-10-30 | 2020-10-30 | 基于Oracle的数据同步方法、装置及计算机设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112307121A CN112307121A (zh) | 2021-02-02 |
CN112307121B true CN112307121B (zh) | 2023-10-31 |
Family
ID=74333015
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011191712.8A Active CN112307121B (zh) | 2020-10-30 | 2020-10-30 | 基于Oracle的数据同步方法、装置及计算机设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112307121B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113051275A (zh) * | 2021-03-31 | 2021-06-29 | 银盛支付服务股份有限公司 | 一种兼容实时和离线数据处理的存储架构方法 |
CN113157701A (zh) * | 2021-04-27 | 2021-07-23 | 中国工商银行股份有限公司 | 一种oracle数据库的双活机制部署方法及装置 |
CN113515374B (zh) * | 2021-05-18 | 2024-02-27 | 中国工商银行股份有限公司 | 数据处理方法及装置、电子设备和计算机可读存储介质 |
CN113486116A (zh) * | 2021-07-07 | 2021-10-08 | 建信金融科技有限责任公司 | 一种数据同步方法、装置、电子设备及计算机可读介质 |
CN113486019B (zh) * | 2021-07-27 | 2024-02-23 | 中国银行股份有限公司 | 自动触发对远程多数据库数据实时批量同步方法和装置 |
CN113836214A (zh) * | 2021-09-30 | 2021-12-24 | 杭州数梦工场科技有限公司 | 应用于etl的数据加载、读取方法和装置及电子设备 |
CN115203336A (zh) * | 2022-09-19 | 2022-10-18 | 平安银行股份有限公司 | 数据库数据实时同步方法、系统、计算机终端及存储介质 |
CN115392802A (zh) * | 2022-10-28 | 2022-11-25 | 江苏智云天工科技有限公司 | 工业产品的缺陷检测方法、系统、介质及设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102222071A (zh) * | 2010-04-16 | 2011-10-19 | 华为技术有限公司 | 数据同步处理方法、设备及系统 |
CN102819588A (zh) * | 2012-08-06 | 2012-12-12 | 南京中兴软创科技股份有限公司 | 一种应用于Oracle数据库的动态数据处理方法 |
CN110909006A (zh) * | 2019-10-15 | 2020-03-24 | 中国平安人寿保险股份有限公司 | 数据同步的方法、装置、计算机设备及存储介质 |
CN111597257A (zh) * | 2020-05-09 | 2020-08-28 | 远光软件股份有限公司 | 数据库的同步方法、装置、存储介质及终端 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9659078B2 (en) * | 2013-08-29 | 2017-05-23 | Oracle International Corporation | System and method for supporting failover during synchronization between clusters in a distributed data grid |
-
2020
- 2020-10-30 CN CN202011191712.8A patent/CN112307121B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102222071A (zh) * | 2010-04-16 | 2011-10-19 | 华为技术有限公司 | 数据同步处理方法、设备及系统 |
CN102819588A (zh) * | 2012-08-06 | 2012-12-12 | 南京中兴软创科技股份有限公司 | 一种应用于Oracle数据库的动态数据处理方法 |
CN110909006A (zh) * | 2019-10-15 | 2020-03-24 | 中国平安人寿保险股份有限公司 | 数据同步的方法、装置、计算机设备及存储介质 |
CN111597257A (zh) * | 2020-05-09 | 2020-08-28 | 远光软件股份有限公司 | 数据库的同步方法、装置、存储介质及终端 |
Also Published As
Publication number | Publication date |
---|---|
CN112307121A (zh) | 2021-02-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112307121B (zh) | 基于Oracle的数据同步方法、装置及计算机设备 | |
CN102291416B (zh) | 一种客户端与服务器端双向同步的方法及系统 | |
CN110795503A (zh) | 分布式存储系统的多集群数据同步方法及相关装置 | |
CN111198662B (zh) | 一种数据存储方法、装置和计算机可读存储介质 | |
CN110895488B (zh) | 任务调度方法及装置 | |
CN106030456A (zh) | 自动异步切换标识 | |
CN113360579A (zh) | 数据库高可用处理方法、装置、电子设备及存储介质 | |
EP2696297B1 (en) | System and method for generating information file based on parallel processing | |
CN112015815A (zh) | 数据同步方法、装置及计算机可读存储介质 | |
CN113419872B (zh) | 一种应用系统接口集成系统、集成方法、设备及存储介质 | |
Yang et al. | Multi-Active Multi-Datacenter Distributed Database Architecture Design based-on Secondary Development Zookeeper | |
CN108509293A (zh) | 一种用户日志时间戳容错方法及系统 | |
US7895355B2 (en) | Method and system for detecting gaps in a data stream | |
CN112800060A (zh) | 数据处理方法、装置、计算机可读存储介质及电子设备 | |
CN112463883A (zh) | 基于大数据同步平台的可靠性监控方法、装置、设备 | |
CN109684611B (zh) | 一种字典转码方法、装置、存储介质及终端 | |
CN114090338A (zh) | 一种请求处理方法、装置及电子设备 | |
CN112685486A (zh) | 数据库集群的数据管理方法、装置、电子设备及存储介质 | |
CN113064950A (zh) | 一种数据同步方法、装置、设备及存储介质 | |
CN105205168A (zh) | 一种基于Redis数据库的曝光系统及其操作方法 | |
CN106375354B (zh) | 数据处理方法及装置 | |
CN112699322B (zh) | 一种分层弱中心化区块链浏览器生成方法及其相关组件 | |
CN111143475B (zh) | 一种用于Storm的数据分析的状态管理的方法及装置 | |
CN117349384B (zh) | 一种数据库同步的方法、系统及设备 | |
CN117395263B (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 |