CN111984729A - 异构数据库数据同步方法、装置、介质和电子设备 - Google Patents
异构数据库数据同步方法、装置、介质和电子设备 Download PDFInfo
- Publication number
- CN111984729A CN111984729A CN202010820904.4A CN202010820904A CN111984729A CN 111984729 A CN111984729 A CN 111984729A CN 202010820904 A CN202010820904 A CN 202010820904A CN 111984729 A CN111984729 A CN 111984729A
- Authority
- CN
- China
- Prior art keywords
- data
- write
- indication information
- thread
- database
- 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.)
- Pending
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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开涉及数据库技术领域,具体涉及一种异构数据库数据同步方法、异构数据库数据同步装置、计算机可读存储介质和电子设备,其中所述方法包括:从源数据库传输来的增量数据文件中读取数据及指示信息;所述指示信息包含指示所述数据待写入的表信息;基于预设配置文件和所述指示信息确定所述数据是否涉及目标数据库中的关联关系表;确定所述数据不涉及所述关联关系表时,基于所述预设配置文件和所述指示信息将所述数据分配至多个写线程中的指定写线程,以使读取的多个数据各自对应的指定写线程将数据并行写入所述目标数据库。本公开的实施方案可以在异构数据库***环境下数据同步时提高目标数据库的数据入库加载性能。
Description
技术领域
本公开实施例涉及数据库技术领域,尤其涉及一种异构数据库数据同步方法、异构数据库数据同步装置,以及实现所述异构数据库数据同步方法的计算机可读存储介质和电子设备。
背景技术
随着计算机网络技术的不断发展,数据库同步技术作为维护各个数据库节点之间数据一致性的方法,成为保证***性能和提高***可靠性的关键技术。
针对异构数据库***,可利用数据同步工具同步数据,通常可以包括三个阶段:第一阶段进行存量数据的初始化装载,获得数据同步的基础点;第二阶段以初始化数据装载建立的同步基础点为基准进行增量数据同步;第三阶段定期对数据同步的源数据库的数据和目标数据库的数据进行比对校验,以确认在数据同步过程中没有丢失数据。在第二阶段增量数据同步时,主要考量的性能指标包括最大延迟和最大吞吐量。其中,最大延迟指的是源数据库增加新数据后,间隔多长时间可以传输到达目标数据库。最大吞吐量指的是在源数据库端预先堆积大量的日志文件后启动数据同步软件工具,同步软件工具可以在多长时间之内将堆积的源数据库端数据同步至目标数据库。
为了提高数据同步性能,可优化这两个性能指标,例如可提高源数据库端增量数据的解析速度,提高数据传输速度以及提高目标数据库的数据入库加载速度等。但是在异构数据库***环境下增量数据同步时,如何提升目标数据库的数据入库加载性能是一个亟需解决的问题。
发明内容
为了解决上述技术问题或者至少部分地解决上述技术问题,本公开提供了一种异构数据库数据同步方法、异构数据库数据同步装置,以及实现所述异构数据库数据同步方法的计算机可读存储介质和电子设备。
第一方面,本公开实施例提供了异构数据库数据同步方法,包括:
从源数据库传输来的增量数据文件中读取数据及指示信息;所述指示信息包含指示所述数据待写入的表信息;
基于预设配置文件和所述指示信息确定所述数据是否涉及目标数据库中的关联关系表;
确定所述数据不涉及所述关联关系表时,基于所述预设配置文件和所述指示信息将所述数据分配至多个写线程中的指定写线程,以使读取的多个数据各自对应的指定写线程将数据并行写入所述目标数据库。
在本公开的一些实施例中,所述预设配置文件中预先设置有目标数据库中不同表的表信息与对应的写线程标识之间的对应关系;
所述基于所述预设配置文件和所述指示信息将所述数据分配至多个写线程中的指定写线程,包括:
基于所述指示信息中所述数据待写入的表信息及所述对应关系,确定所述数据对应的写线程标识;
基于所述数据对应的写线程标识,将所述数据分发至所述数据对应的写线程标识指示的指定写线程。
在本公开的一些实施例中,所述预设配置文件还包括预设数据分配策略,该预设数据分配策略指示基于预设轮询算法在多个写线程之间分配数据;
所述基于所述预设配置文件和所述指示信息将所述数据分配至多个写线程中的指定写线程,包括:
基于所述指示信息中所述数据待写入的表信息及所述对应关系,确定所述数据待写入的表是否为第一预设数据表;该第一预设数据表是所述对应关系中涉及的至少一个表;
确定不是所述第一预设数据表时,基于所述预设数据分配策略将所述数据分配至多个写线程中的指定写线程;
确定是所述第一预设数据表时,基于所述对应关系和所述指示信息将所述数据分配至多个写线程中的指定写线程。
在本公开的一些实施例中,所述预设配置文件还包括关联关系表的表信息;所述基于预设配置文件和所述指示信息确定所述数据是否涉及目标数据库中的关联关系表,包括:
获取所述预设配置文件中的关联关系表的表信息;
确定所述关联关系表的表信息与所述指示信息中的所述数据待写入的表信息是否相同;
确定相同时,所述数据涉及所述目标数据库中的关联关系表;
确定不同时,所述数据不涉及所述目标数据库中的关联关系表。
在本公开的一些实施例中,所述预设配置文件还包括一致性保护策略,该一致性保护策略包括对关联关系表操作时的数据分配规则和串行执行顺序;所述方法还包括:
确定所述数据涉及所述关联关系表时,确定所有写线程是否写完数据;
确定所有写线程写完数据时,基于所述一致性保护策略中的数据分配规则将所述数据分配至多个写线程中的指定写线程;
基于所述一致性保护策略中的串行执行顺序,使所述数据对应的指定写线程串行执行,以将所述数据写入所述目标数据库中的关联关系表。
在本公开的一些实施例中,所述数据分配规则包括基于预设轮询算法的分配规则;和/或,所述表信息包括表名称和/或表的唯一标识。
在本公开的一些实施例中,所述从源数据库传输来的增量数据文件中读取数据及指示信息之前,还包括:
在所述目标数据库侧初始化启动一读线程和多个写线程;
为所述多个写线程分别配置对应的缓存队列,并将所述多个写线程与所述目标数据库连接;其中,分配至各指定写线程的数据进入对应的缓存队列中。
在本公开的一些实施例中,还包括:
传输至所述目标数据库的增量数据文件以事务为单位顺序存储;
所述从源数据库传输来的增量数据文件中读取多个数据,包括:
所述读线程依次串行读取顺序存储的增量数据文件以读取数据。
在本公开的一些实施例中,还包括:
所述读线程向每个所述写线程的缓存队列中***停止指令数据,并退出读线程;
每个所述写线程收到所述停止指令数据时退出写线程,在所有线程都停止运行时结束数据同步。
第二方面,本公开实施例提供一种异构数据库数据同步装置,包括:
数据读取模块,用以从源数据库传输来的增量数据文件中读取数据及指示信息;所述指示信息包含指示所述数据待写入的表信息;
关系确定模块,用以基于预设配置文件和所述指示信息确定所述数据是否涉及目标数据库中的关联关系表;
数据处理模块,用以确定所述数据不涉及所述关联关系表时,基于所述预设配置文件和所述指示信息将所述数据分配至多个写线程中的指定写线程,以使读取的多个数据各自对应的指定写线程将数据并行写入所述目标数据库。
第三方面,本公开实施例提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述第一方面任一实施例所述异构数据库数据同步方法的步骤。
第四方面,本公开实施例提供一种电子设备,包括:
处理器;以及
存储器,用于存储所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行上述第一方面任一实施例所述异构数据库数据同步方法的步骤。
本公开实施例提供的技术方案与现有技术相比具有如下优点:
本公开的实施例中,先从源数据库传输来的增量数据文件中读取数据及指示信息,所述指示信息包含指示所述数据待写入的表信息;然后基于预设配置文件和所述指示信息确定所述数据是否涉及目标数据库中的关联关系表;确定所述数据不涉及所述关联关系表时,再基于所述预设配置文件和所述指示信息将所述数据分配至多个写线程中的指定写线程,以使读取的多个数据各自对应的指定写线程将数据并行写入所述目标数据库。这样,本实施例方案本质可将待写入多个不相关目标数据库表的增量数据动态分配至多个指定写线程,即多个入库通道,然后可将数据并行写入目标数据库,如此在很大程度上提高了目标数据库的数据写入效率,节省数据处理时间,从而在异构数据库***环境下增量数据同步时可大幅提高目标数据库的数据入库加载性能。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本公开实施例异构数据库数据同步方法流程图;
图2为本公开实施例另一异构数据库数据同步方法流程图;
图3为本公开实施例中示例异构数据库***架构示意图;
图4为本公开实施例异构数据库数据同步场景示意图;
图5为本公开实施例中异构数据库数据同步装置示意图;
图6为本公开实施例中实现异构数据库数据同步方法的电子设备示意图。
具体实施方式
为了能够更清楚地理解本公开的上述目的、特征和优点,下面将对本公开的方案进行进一步描述。需要说明的是,在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本公开,但本公开还可以采用其他不同于在此描述的方式来实施;显然,说明书中的实施例只是本公开的一部分实施例,而不是全部的实施例。
在异构数据库***环境下增量数据同步时,例如使用日志文件进行异构数据库增量数据同步的环境中,上层应用程序短时间内不会对目标数据库中的多张表同时进行数据操纵语言DML(Data Manipulation Language)操作,例如对表中数据的***、删除和修改等操作。基于此特点,本实施例方案中可将待写入多个不相关目标数据库表的增量数据动态分配至不同的入库通道中以并行写入目标数据库,以尽量减少对目标数据库的正常工作影响,从而在异构数据库***环境下增量数据同步时可大幅提高目标数据库的数据入库加载性能。
图1为本公开实施例提供的一种异构数据库数据同步方法流程图,参考图1中所示,该数据同步方法可以包括以下步骤:
步骤S102:从源数据库传输来的增量数据文件中读取数据及指示信息。指示信息包含指示数据待写入的表信息。
步骤S104:基于预设配置文件和所述指示信息确定所述数据是否涉及目标数据库中的关联关系表。
步骤S106:确定所述数据不涉及所述关联关系表时,基于所述预设配置文件和所述指示信息将所述数据分配至多个写线程中的指定写线程,以使读取的多个数据各自对应的指定写线程将数据并行写入所述目标数据库。
本公开实施例的上述异构数据库数据同步方法,可将待写入多个不相关目标数据库表的增量数据动态分配至多个指定写线程,即多个入库通道,多个不相关目标数据库表即读取的多个数据不涉及关联关系表,无业务关联关系,各数据的写入互不影响业务关系。通过多个入库通道可将数据并行写入目标数据库,如此可尽量减少对目标数据库的正常工作影响,以在很大程度上提高目标数据库的数据写入效率,节省数据处理时间,从而在异构数据库***环境下增量数据同步时可大幅提高目标数据库的数据入库加载性能。
在本公开的一些实施例中,源数据库与目标数据库是异构数据库***的至少一部分,增量数据文件可以由源数据库侧的源端数据同步软件通过网络如局域网或者广域网传输至目标数据库侧的目标端同步软件。表信息可以包括但不限于表名称和/或表的唯一标识。本实施例中表信息可以是表名称如TABLE1,也即通过表信息可以指示读取的例如数据X1是待写入目标数据库中的一张表TABLE1中,本实施例中对此不作限制,由具体业务需要确定。
在本公开的一些实施例中,步骤S102中从源数据库传输来的增量数据文件中读取数据及指示信息之前,还可以包括以下步骤:
步骤a):在所述目标数据库侧初始化启动一读线程和多个写线程。读线程可以从增量数据文件中读取数据及指示信息。
步骤b):为所述多个写线程分别配置对应的缓存队列,并将所述多个写线程与所述目标数据库连接。其中,分配至各指定写线程的数据进入对应的缓存队列中。本实施例中基于多个写线程及对应的缓存队列,在目标数据库侧以多通道并行入库的方式装载数据,可以提高目标数据库的数据入库加载性能。
可选的,在上述实施例的基础上,在本公开的一些实施例中,还可以包括如下步骤c):传输至所述目标数据库的增量数据文件以事务为单位顺序存储。相应的,步骤S102中从增量数据文件中读取多个数据,具体可以包括:所述读线程依次串行读取顺序存储的增量数据文件以读取数据。
可选的,在本公开的一些实施例中,预设配置文件中可以预先设置有目标数据库中不同表的表信息与对应的写线程标识之间的对应关系。示例性的,多个写线程以不同的写线程标识区分,预设配置文件可以预先配置例如表TABLE1、表TABLE2、表TABLE3、表TABLE4、表TABLE5、表TABLE6与对应的写线程标识1、写线程标识2、写线程标识3、写线程标识4、写线程标识5和写线程标识6之间的对应关系,如表1所示的对应关系,仅为简单示例,本实施例中并不限于此。
表1
表信息(表名称) | 写线程标识 |
TABLE1 | 1 |
TABLE2 | 2 |
TABLE3 | 3 |
TABLE4 | 4 |
TABLE5 | 5 |
TABLE6 | 6 |
相应的,步骤S106中,基于预设配置文件和指示信息将数据分配至多个写线程中的指定写线程,具体包括以下步骤:
基于指示信息中数据待写入的表信息及对应关系,确定数据对应的写线程标识。
基于数据对应的写线程标识,将数据分发至数据对应的写线程标识指示的指定写线程。
具体的,作为示例,例如指示信息指示数据X1是待写入目标数据库中的表TABLE1中,基于示例的上述对应关系可以查表确定TABLE1对应的写线程标识是1,从而可将数据X1分发至写线程标识1指示的指定写线程的缓存队列中。又例如,指示信息指示数据X2、X3和X4是均待写入目标数据库中的表TABLE2中,基于对应关系可以查表确定相应的后续写入数据X2、X3和X4的操作均由写线程标识2表示的指定线程执行,也即可将数据X2、X3和X4分发至写线程标识2指示的指定写线程的缓存队列中。
读线程可读取增量数据文件中的多个数据重复上述分配过程,同时各数据各自对应的指定写线程从各自的缓存队列中获取数据封装为SQL语句在目标数据库执行,以并行写入所述目标数据库中。如此可将待写入多个不相关目标数据库表的增量数据动态分配至多个指定写线程,即多个入库通道,通过多个入库通道可将数据并行写入目标数据库,如此可尽量减少对目标数据库的正常工作影响,以在很大程度上提高目标数据库的数据写入效率,节省数据处理时间,从而在异构数据库***环境下增量数据同步时可大幅提高目标数据库的数据入库加载性能。
本实施例中,通过预设配置文件可以预先设置针对目标数据库中不同表的操作如写操作对应的指定写线程。针对哪些表需要配置相应指定写线程可根据上层应用的需要设置,该预设配置文件可以被预先配置或更新等,具体可根据应用场景配置或更新,如此在异构数据库同步时丰富功能,可适用不同场景,适用性更好。
可选的,在上述任一实施例中的基础上,本公开的另一些实施例中,所述预设配置文件还可以包括预设数据分配策略,该预设数据分配策略指示基于预设轮询算法在多个写线程之间分配数据。示例性的,预设轮询算法可以是Round-robin算法,但不限于此。相应的,基于预设配置文件和指示信息将数据分配至多个写线程中的指定写线程,具体可以包括以下步骤:
步骤i):基于所述指示信息中所述数据待写入的表信息及所述对应关系,确定所述数据待写入的表是否为第一预设数据表;该第一预设数据表是所述对应关系中涉及的至少一个表。
示例性的,例如表2所示的对应关系中涉及表TABLE1、表TABLE2、表TABLE3、表TABLE4、表TABLE5、表TABLE6,则这些表可以是第一预设数据表。若指示信息中指示数据X5待写入的表信息是表TABLE7时,可以确定表TABLE7不是上述指定的第一预设数据表。
步骤ii):确定不是所述第一预设数据表时,基于所述预设数据分配策略将所述数据分配至多个写线程中的指定写线程。
示例性的,由于表TABLE7不是上述指定的第一预设数据表,那么针对例如表TABLE7即其他表的操作,预设配置文件中可以对应配置有相应的预设数据分配策略如基于Round-robin算法的动态分配策略等。因此,在确定表TABLE7不是上述指定的第一预设数据表时,基于例如Round-robin算法的动态分配策略将数据X5分配至多个写线程中的指定写线程。
步骤iii):确定是所述第一预设数据表时,基于所述对应关系和所述指示信息将所述数据分配至多个写线程中的指定写线程。
示例性的,确定表TABLE7是上述指定的第一预设数据表,即对应关系中还可以预先配置有表TABLE7对应的写线程标识7,此时可以返回上述基于对应关系和指示信息将数据X5分配至多个写线程中的写线程标识7指示的指定写线程的缓存队列,具体过程可以参考上述如X1、X2、X3和X4等数据的具体分配过程,此处不再赘述。
可选的,在上述任一实施例的基础上,在本公开的一些实施例中,所述预设配置文件还可以包括关联关系表的表信息。关联关系表表示至少两张具有业务依赖关系或关联关系的表,例如数据X6涉及关联关系表TABLE8和TABLE9,表示数据X6需要依照例如业务依赖关系依次写入目标数据库中的表TABLE8和TABLE9中,当然并不限于此。本实施例中预设配置文件可以设置关联关系表的表信息如表名称TABLE8和TABLE9等。相应的,步骤S104中基于预设配置文件和所述指示信息确定所述数据是否涉及目标数据库中的关联关系表,具体可以包括如下步骤:
获取所述预设配置文件中的关联关系表的表信息。
确定所述关联关系表的表信息与所述指示信息中的所述数据待写入的表信息是否相同;确定相同时,所述数据涉及所述目标数据库中的关联关系表;确定不同时,所述数据不涉及所述目标数据库中的关联关系表。
具体的,作为示例,可以获取所述预设配置文件中的关联关系表的表信息,如表TABLE8和表TABLE9。若指示信息指示的数据X6待写入的表信息包括关联的表TABLE8和表TABLE9,此时可以确定两个表信息相同,即指示信息指示的数据X6是待写入关联的表TABLE8和表TABLE9中。
可选的,在上述实施例的基础上,在本公开的一些实施例中,所述预设配置文件还可以包括一致性保护策略,该一致性保护策略可以包括但不限于对关联关系表操作时的数据分配规则和串行执行顺序等。例如涉及关联的表TABLE8和表TABLE9的操作时,可以启动一致性保护策略,预设配置文件可以预先设置针对表TABLE8和表TABLE9的操作时的数据分配规则和串行执行顺序。示例性的,在本公开的一些实施例中,所述数据分配规则可以包括但不限于基于预设轮询算法的分配规则,例如基于Round-robin算法的分配规则。串行执行顺序例如先对表TABLE8操作后对表TABLE9操作,但并不限于此,具体可以根据业务关系等配置。相应的,结合图2中所示,在本公开的一些实施例中,所述方法还可以包括以下步骤:
步骤S102:从源数据库传输来的增量数据文件中读取数据及指示信息。所述指示信息包含指示所述数据待写入的表信息。
步骤S104:基于预设配置文件和所述指示信息确定所述数据是否涉及目标数据库中的关联关系表。
可以理解的是,关于步骤S102和步骤S104可以参考前述实施例中的描述,此处不再赘述。
步骤S201:确定所述数据涉及所述关联关系表时,确定所有写线程是否写完数据。
示例性的,例如确定数据X6是涉及关联关系表TABLE8和表TABLE9,此时确定当前所有写线程是否写完数据,例如持续轮询多个写线程对应的缓存队列,当所有写线程的缓存队列都变为空时,确定所有写线程写完数据,有至少一个写线程的缓存队列不为空时,确定所有写线程未写完数据。也即,操作到这些特定关联关系表如表TABLE8和表TABLE9时,需要等待之前的事务操作完成后,如所有写线程写完数据后,才开始执行针对表TABLE8和表TABLE9的操作。
步骤S202:确定所有写线程写完数据时,基于所述一致性保护策略中的数据分配规则将所述数据分配至多个写线程中的指定写线程。
示例性的,在确定所有写线程写完数据时,基于例如Round-robin算法将数据X6分配至多个写线程中的指定写线程对应的缓存队列。
步骤S203:基于所述一致性保护策略中的串行执行顺序,使所述数据对应的指定写线程串行执行,以将所述数据写入所述目标数据库中的关联关系表。
示例性的,数据X6被分配后,对应的指定写线程从缓存队列中获取数据,先写入表TABLE8中,然后写入表TABLE9中。同时可以持续查询该指定写线程的缓存队列,当缓存队列为空即数据X6已经被写入目标数据库后,可以恢复至遇到特定数据X6之前的多通道并行分发数据工作模式。
本公开实施例中提出了一致性保护策略,也即强一致块的概念,允许将针对某些关联关系表的操作时启动一致性保护策略模式:即某些特定数据需要操作到这些特定表时,需要等待之前的事务操作完成后,串行化执行针对这些表的DML,完成针对这些表的DML后,可以再次恢复至上述实施例中的多通道并行入库的同步形式,以大幅度提升数据库同步过程中的目标数据库端数据入库加载性能。
当整个数据同步需要停止时,为了减少对***的影响,在上述任一实施例的基础上,本公开的一些实施例中还可以包括以下步骤:
所述读线程向每个所述写线程的缓存队列中***停止指令数据,并退出读线程。
每个所述写线程收到所述停止指令数据时退出写线程,在所有线程都停止运行时结束数据同步。
示例性的,读线程可以向每个写线程的缓存队列***一个指令为STOP的空数据,并退出自己的线程;当每个写线程收到指令为STOP的空数据时,也退出自己的线程;当所有线程都停止时,整个***停止。本实施例中在数据同步需要停止时,不是立即强行关闭所有线程,而是通过读线程在每个写线程的缓存队列中***停止指令数据后退出自己的线程,每个所述写线程收到所述停止指令数据时再退出写线程,这样的方式可以减少对数据库***的影响,避免一些未知故障或错误的发生,提高***可靠性。
结合参考图3和图4中所示,在一个具体的应用场景中,该异构数据库数据同步方法可以由目标端同步程序执行,可以包括以下步骤:
步骤1):在目标数据库端初始化一个读线程和N个写线程,建立N个写线程各自对应的缓存队列,并将N个写线程与目标数据库连接。
步骤2):读线程从源端数据同步软件如图3所示源端同步程序传输的来自源数据库的增量数据文件中不断读取数据,基于预设配置文件,将不同的数据记录分配到不同或不完全相同的写线程对应的缓存队列中。
以下表2是预设配置文件的简单示例,本实施例中并不限于此。
表2
预设配置文件的示例中,将针对表TABLE1的操作固定分发到写线程0对应的缓存队列;将针对表TABLE2的操作固定分发到写线程1对应的缓存队列;将针对TABLE3、TABLE4、TABLE5的操作固定分发到写线程2对应的缓存队列。其他表即*标识的表,采用Round-robin算法(标识参数-1)进行轮询分发。针对关联关系表即重要的(critical)表TABLE6、TABLE7的操作,使用强一致块模式即一致性保护策略模式操作。
步骤3):写线程负责从各自的缓存队列中获取增量数据记录,封装为SQL语句,在目标数据库执行以并行写入数据。
当读线程从增量数据文件中读取一个分发策略配置为-1的增量数据时,使用Round-robin算法在N个写线程之间分发。
当读线程从增量数据文件中读取一个配置为critical的增量数据时,持续轮询N个写线程的缓存队列,当所有写线程的缓存队列都变为空时,根据Round-robin算法,将当前critical的增量数据放入算法确定的写线程对应的缓存队列后,持续查询该写线程的缓存队列,当缓存队列为空即数据已经被写入目标数据库后,恢复至遇到critical的增量数据之前的并行分发工作模式。
当整个***需要停止时,读线程向每个写线程的缓存队列***一个指令为STOP的空数据,并退出自己的线程;当每个写线程收到指令为STOP的空数据时,也退出自己的线程;当所有线程都停止时,整个***停止。
本实施例利用上层应用短时间内不会对多张表同时进行DML操作的特点,将多个不相关数据库表的增量数据动态分配至不同的入库通道中并行写入数据库中,以达到加速目标数据库数据加载入库性能的目的。同时,本实施例中还提出了预设配置文件、强一致块等概念,允许最终用户根据实际应用场景自行配置,适用性,可扩展性较好。
需要说明的是,尽管在附图中以特定顺序描述了本公开中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。另外,也易于理解的是,这些步骤可以是例如在多个模块/进程/线程中同步或异步执行。
基于同一构思,本公开实施例还提供一种异构数据库数据同步装置,参考图5中所示,该异构数据库数据同步装置50可以包括:
数据读取模块501,用以从源数据库传输来的增量数据文件中读取数据及指示信息;所述指示信息包含指示所述数据待写入的表信息。
关系确定模块502,用以基于预设配置文件和所述指示信息确定所述数据是否涉及目标数据库中的关联关系表。
数据处理模块503,用以确定所述数据不涉及所述关联关系表时,基于所述预设配置文件和所述指示信息将所述数据分配至多个写线程中的指定写线程,以使读取的多个数据各自对应的指定写线程将数据并行写入所述目标数据库。
可选的,在本公开的一些实施例中,所述预设配置文件中可以预先设置有目标数据库中不同表的表信息与对应的写线程标识之间的对应关系。所述数据处理模块503基于所述预设配置文件和所述指示信息将所述数据分配至多个写线程中的指定写线程,具体可以包括:基于所述指示信息中所述数据待写入的表信息及所述对应关系,确定所述数据对应的写线程标识;基于所述数据对应的写线程标识,将所述数据分发至所述数据对应的写线程标识指示的指定写线程。
可选的,在本公开的一些实施例中,所述预设配置文件还可以包括预设数据分配策略,该预设数据分配策略可以指示基于预设轮询算法在多个写线程之间分配数据。所述数据处理模块503基于所述预设配置文件和所述指示信息将所述数据分配至多个写线程中的指定写线程,具体可以包括:
基于所述指示信息中所述数据待写入的表信息及所述对应关系,确定所述数据待写入的表是否为第一预设数据表;该第一预设数据表是所述对应关系中涉及的至少一个表;
确定不是所述第一预设数据表时,基于所述预设数据分配策略将所述数据分配至多个写线程中的指定写线程;
确定是所述第一预设数据表时,基于所述对应关系和所述指示信息将所述数据分配至多个写线程中的指定写线程。
可选的,在本公开的一些实施例中,所述预设配置文件还可以包括关联关系表的表信息。所述关系确定模块502基于预设配置文件和所述指示信息确定所述数据是否涉及目标数据库中的关联关系表,具体可以包括:
获取所述预设配置文件中的关联关系表的表信息;
确定所述关联关系表的表信息与所述指示信息中的所述数据待写入的表信息是否相同;
确定相同时,所述数据涉及所述目标数据库中的关联关系表;
确定不同时,所述数据不涉及所述目标数据库中的关联关系表。
可选的,在本公开的一些实施例中,所述预设配置文件还可以包括一致性保护策略,该一致性保护策略可以包括对关联关系表操作时的数据分配规则和串行执行顺序;所述数据同步装置还可以包括一致性保护模块,用以:确定所述数据涉及所述关联关系表时,确定所有写线程是否写完数据;确定所有写线程写完数据时,基于所述一致性保护策略中的数据分配规则将所述数据分配至多个写线程中的指定写线程;基于所述一致性保护策略中的串行执行顺序,使所述数据对应的指定写线程串行执行,以将所述数据写入所述目标数据库中的关联关系表。
可选的,在本公开的一些实施例中,所述数据分配规则可以包括基于预设轮询算法的分配规则。在本公开的一些实施例中,所述表信息可以包括但不限于表名称和/或表的唯一标识等。
可选的,在本公开的一些实施例中,还可以包括线程初始化模块,用以在从目标数据库接收的增量数据文件中读取数据及指示信息之前,在所述目标数据库侧初始化启动一读线程和多个写线程;为所述多个写线程分别配置对应的缓存队列,并将所述多个写线程与所述目标数据库连接;其中,分配至各指定写线程的数据进入对应的缓存队列中。
可选的,在本公开的一些实施例中,还可以包括文件存储模块,用以将传输至所述目标数据库的增量数据文件以事务为单位顺序存储。所述数据读取模块501还用以使所述读线程依次串行读取顺序存储的增量数据文件以读取数据。
可选的,在本公开的一些实施例中,还可以包括结束同步模块,用以使所述读线程向每个所述写线程的缓存队列中***停止指令数据,并退出读线程;每个所述写线程收到所述停止指令数据时退出写线程,在所有线程都停止运行时结束数据同步。
关于上述实施例中的装置,其中各个模块执行操作的具体方式以及带来的相应技术效果已经在有关该方法的实施例中进行了对应的详细描述,此处将不做详细阐述说明。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。作为模块或单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现木公开方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本公开实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述任一项实施例所述异构数据库数据同步方法的步骤。
示例性的,该可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
所述计算机可读存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读存储介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
本公开实施例还提供一种电子设备,包括处理器以及存储器,存储器用于存储所述处理器的可执行指令。其中,所述处理器配置为经由执行所述可执行指令来执行上述任一项实施例中所述异构数据库数据同步方法的步骤。
下面参照图6来描述根据本发明的这种实施方式的电子设备600。图6显示的电子设备600仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图6所示,电子设备600以通用计算设备的形式表现。电子设备600的组件可以包括但不限于:至少一个处理单元610、至少一个存储单元620、连接不同***组件(包括存储单元620和处理单元610)的总线630、显示单元640等。
其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元610执行,使得所述处理单元610执行本说明书上述异构数据库数据同步方法部分中描述的根据本发明各种示例性实施方式的步骤。例如,所述处理单元610可以执行如图1中所示方法的步骤。
所述存储单元620可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)6201和/或高速缓存存储单元6202,还可以进一步包括只读存储单元(ROM)6203。
所述存储单元620还可以包括具有一组(至少一个)程序模块6205的程序/实用工具6204,这样的程序模块6205包括但不限于:操作***、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线630可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、***总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
电子设备600也可以与一个或多个外部设备700(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备600交互的设备通信,和/或与使得该电子设备600能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口650进行。并且,电子设备600还可以通过网络适配器660与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。网络适配器660可以通过总线630与电子设备600的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备600使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID***、磁带驱动器以及数据备份存储***等。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、或者网络设备等)执行根据本公开实施方式的上述异构数据库数据同步方法。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本公开的具体实施方式,使本领域技术人员能够理解或实现本公开。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本公开的精神或范围的情况下,在其它实施例中实现。因此,本公开将不会被限制于本文所述的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (12)
1.一种异构数据库数据同步方法,其特征在于,包括:
从源数据库传输来的增量数据文件中读取数据及指示信息;所述指示信息包含指示所述数据待写入的表信息;
基于预设配置文件和所述指示信息确定所述数据是否涉及目标数据库中的关联关系表;
确定所述数据不涉及所述关联关系表时,基于所述预设配置文件和所述指示信息将所述数据分配至多个写线程中的指定写线程,以使读取的多个数据各自对应的指定写线程将数据并行写入所述目标数据库。
2.根据权利要求1所述的数据同步方法,其特征在于,所述预设配置文件中预先设置有目标数据库中不同表的表信息与对应的写线程标识之间的对应关系;
所述基于所述预设配置文件和所述指示信息将所述数据分配至多个写线程中的指定写线程,包括:
基于所述指示信息中所述数据待写入的表信息及所述对应关系,确定所述数据对应的写线程标识;
基于所述数据对应的写线程标识,将所述数据分发至所述数据对应的写线程标识指示的指定写线程。
3.根据权利要求2所述的数据同步方法,其特征在于,所述预设配置文件还包括预设数据分配策略,该预设数据分配策略指示基于预设轮询算法在多个写线程之间分配数据;
所述基于所述预设配置文件和所述指示信息将所述数据分配至多个写线程中的指定写线程,包括:
基于所述指示信息中所述数据待写入的表信息及所述对应关系,确定所述数据待写入的表是否为第一预设数据表;该第一预设数据表是所述对应关系中涉及的至少一个表;
确定不是所述第一预设数据表时,基于所述预设数据分配策略将所述数据分配至多个写线程中的指定写线程;
确定是所述第一预设数据表时,基于所述对应关系和所述指示信息将所述数据分配至多个写线程中的指定写线程。
4.根据权利要求1~3任一项所述的数据同步方法,其特征在于,所述预设配置文件还包括关联关系表的表信息;所述基于预设配置文件和所述指示信息确定所述数据是否涉及目标数据库中的关联关系表,包括:
获取所述预设配置文件中的关联关系表的表信息;
确定所述关联关系表的表信息与所述指示信息中的所述数据待写入的表信息是否相同;
确定相同时,所述数据涉及所述目标数据库中的关联关系表;
确定不同时,所述数据不涉及所述目标数据库中的关联关系表。
5.根据权利要求4所述的数据同步方法,其特征在于,所述预设配置文件还包括一致性保护策略,该一致性保护策略包括对关联关系表操作时的数据分配规则和串行执行顺序;所述方法还包括:
确定所述数据涉及所述关联关系表时,确定所有写线程是否写完数据;
确定所有写线程写完数据时,基于所述一致性保护策略中的数据分配规则将所述数据分配至多个写线程中的指定写线程;
基于所述一致性保护策略中的串行执行顺序,使所述数据对应的指定写线程串行执行,以将所述数据写入所述目标数据库中的关联关系表。
6.根据权利要求5所述的数据同步方法,其特征在于,所述数据分配规则包括基于预设轮询算法的分配规则;和/或,所述表信息包括表名称和/或表的唯一标识。
7.根据权利要求5所述的数据同步方法,其特征在于,所述从源数据库传输来的增量数据文件中读取数据及指示信息之前,还包括:
在所述目标数据库侧初始化启动一读线程和多个写线程;
为所述多个写线程分别配置对应的缓存队列,并将所述多个写线程与所述目标数据库连接;其中,分配至各指定写线程的数据进入对应的缓存队列中。
8.根据权利要求7所述的数据同步方法,其特征在于,还包括:
传输至所述目标数据库的增量数据文件以事务为单位顺序存储;
所述从源数据库传输来的增量数据文件中读取多个数据,包括:
所述读线程依次串行读取顺序存储的增量数据文件以读取数据。
9.根据权利要求7所述的数据同步方法,其特征在于,还包括:
所述读线程向每个所述写线程的缓存队列中***停止指令数据,并退出读线程;
每个所述写线程收到所述停止指令数据时退出写线程,在所有线程都停止运行时结束数据同步。
10.一种异构数据库数据同步装置,其特征在于,包括:
数据读取模块,用以从源数据库传输来的增量数据文件中读取数据及指示信息;所述指示信息包含指示所述数据待写入的表信息;
关系确定模块,用以基于预设配置文件和所述指示信息确定所述数据是否涉及目标数据库中的关联关系表;
数据处理模块,用以确定所述数据不涉及所述关联关系表时,基于所述预设配置文件和所述指示信息将所述数据分配至多个写线程中的指定写线程,以使读取的多个数据各自对应的指定写线程将数据并行写入所述目标数据库。
11.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1~9任一项所述异构数据库数据同步方法的步骤。
12.一种电子设备,其特征在于,包括:
处理器;以及
存储器,用于存储所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行权利要求1~9任一项所述异构数据库数据同步方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010820904.4A CN111984729A (zh) | 2020-08-14 | 2020-08-14 | 异构数据库数据同步方法、装置、介质和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010820904.4A CN111984729A (zh) | 2020-08-14 | 2020-08-14 | 异构数据库数据同步方法、装置、介质和电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111984729A true CN111984729A (zh) | 2020-11-24 |
Family
ID=73435316
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010820904.4A Pending CN111984729A (zh) | 2020-08-14 | 2020-08-14 | 异构数据库数据同步方法、装置、介质和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111984729A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113411271A (zh) * | 2021-06-16 | 2021-09-17 | 阿波罗智联(北京)科技有限公司 | 数据接入方法、装置、设备以及存储介质 |
CN113507497A (zh) * | 2021-06-01 | 2021-10-15 | 常州皓鸣信息科技有限公司 | 一种多类型数据多节点异步下发与延迟集成的方法 |
WO2023109482A1 (en) * | 2021-12-14 | 2023-06-22 | International Business Machines Corporation | Secure database-as-a-service system |
CN116431591A (zh) * | 2023-06-05 | 2023-07-14 | 云启智慧科技有限公司 | 多端文件增量同步方法、装置、设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104731956A (zh) * | 2015-04-02 | 2015-06-24 | 北京奇虎科技有限公司 | 同步数据的方法、***及相关数据库 |
CN105005618A (zh) * | 2015-07-21 | 2015-10-28 | 杭州合众数据技术有限公司 | 一种异构数据库之间的数据同步方法及*** |
CN110555041A (zh) * | 2018-03-30 | 2019-12-10 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、计算机设备和存储介质 |
US20200089776A1 (en) * | 2018-09-14 | 2020-03-19 | International Business Machines Corporation | Method for migrating data records from a source database to a target database |
CN111400097A (zh) * | 2020-03-16 | 2020-07-10 | 中国邮政储蓄银行股份有限公司 | 数据的备份方法、装置、***和计算机可读存储介质 |
-
2020
- 2020-08-14 CN CN202010820904.4A patent/CN111984729A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104731956A (zh) * | 2015-04-02 | 2015-06-24 | 北京奇虎科技有限公司 | 同步数据的方法、***及相关数据库 |
CN105005618A (zh) * | 2015-07-21 | 2015-10-28 | 杭州合众数据技术有限公司 | 一种异构数据库之间的数据同步方法及*** |
CN110555041A (zh) * | 2018-03-30 | 2019-12-10 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、计算机设备和存储介质 |
US20200089776A1 (en) * | 2018-09-14 | 2020-03-19 | International Business Machines Corporation | Method for migrating data records from a source database to a target database |
CN111400097A (zh) * | 2020-03-16 | 2020-07-10 | 中国邮政储蓄银行股份有限公司 | 数据的备份方法、装置、***和计算机可读存储介质 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113507497A (zh) * | 2021-06-01 | 2021-10-15 | 常州皓鸣信息科技有限公司 | 一种多类型数据多节点异步下发与延迟集成的方法 |
CN113411271A (zh) * | 2021-06-16 | 2021-09-17 | 阿波罗智联(北京)科技有限公司 | 数据接入方法、装置、设备以及存储介质 |
US11816031B2 (en) | 2021-06-16 | 2023-11-14 | Apollo Intelligent Connectivity (Beijing) Technology Co., Ltd. | Method and apparatus for ingesting data, device and storage medium |
WO2023109482A1 (en) * | 2021-12-14 | 2023-06-22 | International Business Machines Corporation | Secure database-as-a-service system |
US11860868B2 (en) | 2021-12-14 | 2024-01-02 | International Business Machines Corporation | Secure database-as-a-service system |
CN116431591A (zh) * | 2023-06-05 | 2023-07-14 | 云启智慧科技有限公司 | 多端文件增量同步方法、装置、设备及存储介质 |
CN116431591B (zh) * | 2023-06-05 | 2023-09-05 | 云启智慧科技有限公司 | 多端文件增量同步方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111984729A (zh) | 异构数据库数据同步方法、装置、介质和电子设备 | |
US6477535B1 (en) | Method and apparatus for concurrent DBMS table operations | |
CN106682215B (zh) | 一种数据处理方法和管理节点 | |
CN110147407B (zh) | 一种数据处理方法、装置及数据库管理服务器 | |
CN108829613B (zh) | 数据存储方法及存储设备 | |
JP2006202337A (ja) | データ処理の方法及び装置 | |
US8898677B2 (en) | Data arrangement calculating system, data arrangement calculating method, master unit and data arranging method | |
US9928004B2 (en) | Assigning device adaptors to use to copy source extents to target extents in a copy relationship | |
CN109716321B (zh) | N路散列连接 | |
US11126606B1 (en) | System and method for identifying matching portions of two sets of data in a multiprocessor system | |
US9513829B1 (en) | Transaction logging using round-robin block allocation and I/O size based partitions | |
CN110609807B (zh) | 用于删除快照数据的方法、设备和计算机可读存储介质 | |
CN111061690B (zh) | 一种基于rac的数据库日志文件读取方法和装置 | |
US8589652B2 (en) | Reorganization of a fragmented directory of a storage data structure comprised of the fragmented directory and members | |
US7856540B2 (en) | System and article of manufacture for removing alias addresses from an alias address pool | |
CN111414422B (zh) | 一种数据分布方法、装置、设备和存储介质 | |
US10311026B2 (en) | Compressed data layout for optimizing data transactions | |
US10387268B2 (en) | Fast copy using file system block mappings | |
CN108829798B (zh) | 基于分布式数据库的数据存储方法及*** | |
CN115760405A (zh) | 交易执行方法、装置、计算机设备及介质 | |
CN112764897B (zh) | 任务请求的处理方法、装置、***及计算机可读存储介质 | |
CN114706526A (zh) | 云原生存储数据卷的自动扩容方法、***及设备 | |
CN109740027B (zh) | 数据交换方法、装置、服务器和存储介质 | |
CN110928575B (zh) | 一种多设备同步控制***和控制方法 | |
US8402235B2 (en) | Backup apparatus, backup method and backup program |
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 |