CN112559629A - 一种基于日志解析同步的大对象初始化方法与装置 - Google Patents
一种基于日志解析同步的大对象初始化方法与装置 Download PDFInfo
- Publication number
- CN112559629A CN112559629A CN202011457854.4A CN202011457854A CN112559629A CN 112559629 A CN112559629 A CN 112559629A CN 202011457854 A CN202011457854 A CN 202011457854A CN 112559629 A CN112559629 A CN 112559629A
- Authority
- CN
- China
- Prior art keywords
- data
- large object
- row
- source
- column
- 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
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
- 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/221—Column-oriented storage; 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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2219—Large Object storage; 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/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/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Computational Linguistics (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及计算机技术领域,尤其涉及一种基于日志解析同步的大对象初始化方法与装置,其中方法包括:源端数据同步系统全列查询包含有大对象数据的待初始化表,并标识大对象列和非大对象列;将非大对象列数据以多行批量方式初始化到目的端数据库,并采用ROWID保存源端数据库和目的端数据库数据行之间的映射关系;源端数据同步系统在确认表中的非大对象列数据在目的端数据库完成初始化后,开启该表的日志同步;根据保存的ROWID信息将表中的大对象列数据以分段并行的方式补充初始化到目的端数据库。该方案可有效提升含有大对象表的数据初始化速度,快速完成数据同步环境的搭建,降低源端数据库报“快照过旧”错误的概率。
Description
【技术领域】
本发明涉及计算机技术领域,尤其涉及一种基于日志解析同步的大对象初始化方法与装置。
【背景技术】
目前基于数据库日志分析的异构数据库复制技术应用广泛,这种技术在源端捕获出数据库的增量数据然后发送到目的端,在目的端通过通用的数据库访问接口将增量数据应用到目的端数据库,实现数据复制。这种技术因为使用到通用数据库访问接口,因此支持异构数据库系统复制,支持异构操作系统环境,并且目的端备机数据库系统可读写,是一种“双活”系统。
在搭建数据同步系统时,目的端数据库往往是个空库,需要把源端数据库中的数据先初始化到目的端数据库后才能开启同步;如果源端数据库中的某个表数据量庞大,那该表的初始化时间会相当的长。由于在数据初始化的过程中源端数据库上的业务往往不停机,在支持多版本的数据库上,单个表长时间地提取结果集会造成提取时数据库报“快照过旧”的错误,造成初始化失败。所以,尽可能地缩短单个表初始化的速度是保障数据同步系统能否完成目的端数据库数据初始化的关键因素。不含有大对象的表可以使用批量入库的方式来提升初始化的性能,但当待初始化的表存在大对象数据时,由于数据库大对象字段在提取和入库时都无法使用绑定参数的方式进行批量操作,造成含有大对象的表初始化效率极低。因此,如何提升含有大对象表的数据初始化速度就成为业界亟待解决的重要技术问题。
【发明内容】
本发明需要解决的技术问题是:
当待初始化的表存在大对象数据时,由于数据库大对象字段在提取和入库时都无法使用绑定参数的方式进行批量操作,造成含有大对象的表初始化效率极低。因此,如何提升含有大对象表的数据初始化速度就成为业界亟待解决的重要技术问题。
本发明通过如下技术方案解决上述技术问题:
第一方面,本发明提供了一种基于日志解析同步的大对象初始化方法,包括:
源端数据同步系统全列查询包含有大对象数据的待初始化表,并根据查询结果标识所述待初始化表中的大对象列和非大对象列;
将所述待初始化表中的非大对象列数据以多行批量方式初始化到目的端数据库,并采用ROWID保存源端数据库和目的端数据库数据行之间的映射关系;
源端数据同步系统在确认所述待初始化表中的非大对象列数据在目的端数据库完成初始化后,开启所述待初始化表的日志捕获以便同步该表的操作;
根据保存的ROWID信息,将所述待初始化表中的大对象列数据以分段并行的方式补充初始化到目的端数据库。
优选地,所述将所述待初始化表中的非大对象列数据以多行批量方式初始化到目的端数据库,并采用ROWID保存源端数据库和目的端数据库数据行之间的映射关系,具体为:
在源端对查询到的结果集数据进行提取,将当前结果集游标所在行中的非大对象列数据以及大对象列中的行内数据和NULL值发送到目的端同步系统;
判断当前结果集游标所在行的大对象列中是否存在行外数据,如果存在,则将该行数据在源端数据库对应的源ROWID值存入源端的辅助表A中;
当发送的数据行数量达到预设阈值时,构造入库执行消息并发送到目的端数据同步系统,同时将结果集游标移动至结果集的下一行;
目的端数据同步系统接收到入库请求后对数据行进行批量入库操作,并获取该行数据在目的端数据库对应的目的ROWID值,然后将该行数据对应的源ROWID值和目的ROWID值以映射形式存入目的端的辅助表B中。
优选地,所述辅助表A中包含S_RID列,所述辅助表B中包含S_RID列和D_RID列;其中,源端数据库对应的源ROWID值存入到S_RID列,目的端数据库对应的目的ROWID值存入到D_RID列。
优选地,所述将当前结果集游标所在行中的非大对象列数据以及大对象列中的行内数据和NULL值发送到目的端同步系统,具体为:
提取当前结果集游标所在行中的每个非大对象列数据;
对于当前结果集游标所在行中的每个大对象列数据,如果大对象列数据为行内数据或NULL值,则提取该大对象列数据;如果大对象列数据为行外数据,则以NULL值替代该大对象列数据并提取NULL值;
将提取到的非大对象列数据以及大对象列中的行内数据和NULL值发送到目的端同步系统。
优选地,对于当前结果集游标所在行中的每个大对象列数据,行内数据或行外数据的判断方法具体为:
获取对应的大对象列数据长度,并比较所述大对象列数据长度与大对象行内数据最大长度的大小关系;
如果所述大对象列数据长度小于等于所述大对象行内数据最大长度,则对应的大对象列数据为行内数据;否则为行外数据。
优选地,所述根据保存的ROWID信息,将所述待初始化表中的大对象列数据以分段并行的方式补充初始化到目的端数据库,具体为:
在源端创建X个大对象查询线程,将所述辅助表A中的源ROWID值以Y个为一组分派给一个大对象查询线程,直至分派完成;
每个大对象查询线程利用对应的Y个源ROWID值查询对应的大对象列数据,并判断查询到的每个大对象列数据是否为行内数据或NULL值;
如果大对象列数据不是行内数据或NULL值,则提取该大对象列数据,并结合所在行的源ROWID值构造一个更新操作发送到目的端数据同步系统;
目的端数据同步系统在接收到更新操作后获取对应的源ROWID值,并在所述辅助表B中根据映射关系查询对应的目的ROWID值,然后根据该目的ROWID值执行对应大对象列数据的更新。
优选地,所述每个大对象查询线程利用对应的Y个源ROWID值查询对应的大对象列数据具体为:
对于每个大对象查询线程,根据对应的Y个源ROWID值和所述待初始化表中标识的大对象列构造大对象查询语句;
利用构造的大对象查询语句,查询该Y个源ROWID值对应的大对象列数据。
优选地,在所述源端数据同步系统全列查询包含有大对象数据的待初始化表之前,所述方法还包括:
源端数据同步系统在源端创建一个辅助表A,用于存放所述待初始化表中数据行在源端数据库中对应的源ROWID值;然后通知目的端数据同步系统,由目的端数据同步系统在目的端创建一个辅助表B,用于存放所述待初始化表中数据行在源端数据库中的源ROWID值和数据入库以后在目的端数据库中的目的ROWID值间的映射关系。
优选地,在创建辅助表A和辅助表B之前,所述方法还包括:
在源端数据库和目的端数据库分别部署同步系统;其中,源端数据同步系统用于从所述源端数据库读取日志,目的端数据同步系统用于将所述源端数据库发过来的同步操作应用到所述目的端数据库。
第二方面,本发明提供了一种基于日志解析同步的大对象初始化装置,包括至少一个处理器和存储器,所述至少一个处理器和存储器之间通过数据总线连接,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令在被所述处理器执行后,用于完成第一方面所述的基于日志解析同步的大对象初始化方法。
与现有技术相比,本发明的有益效果是:
本发明提供的一种基于日志解析同步的大对象初始化方法中,在初始化数据时把非大对象数据和大对象数据分成两阶段初始化,利用非大对象数据可以批量处理的优势先把非大对象数据初始化到目的端数据库,并在初始化过程中使用ROWID伪列值来保存源端数据库和目的端数据库数据行之间的映射关系,然后开启数据同步,在同步过程中根据前面保存的ROWID信息以分段并行的方式补充初始化大对像数据。通过该方案,可以有效提升含有大对象表的数据初始化速度,在存在较多大对象的数据同步环境中不仅快速完成数据同步环境的搭建,提前开启数据同步,防止源端数据库归档日志堆积;而且在开启数据同步以后,采用分段方式可有效缩减每次查询大对象的耗时,极大降低了源端数据库报“快照过旧”错误的概率;而并行方式又可以多个线程同时初始化单个表的大对象数据,最大限度地提升大对象数据的入库效率。
【附图说明】
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍。显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种基于日志解析同步的大对象初始化方法的流程图;
图2为本发明实施例提供的第一阶段的具体初始化流程图;
图3为本发明实施例提供的第二阶段的具体初始化流程图;
图4为本发明实施例提供的一种基于日志解析同步的大对象初始化装置的架构图。
【具体实施方式】
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。下面就参考附图和实施例结合来详细说明本发明。
实施例1:
数据库系统的数据类型包含非大对象数据(例如INT,CHAR等)和大对象数据(例如CLOB或BLOB)类型,数据库支持多行批量地查询和入库非大对象数据,在搭建数据同步系统中初始化不包含大对象的表时性能较快;但数据库在查询和入库大对象数据时只支持单行单个大对象操作,这极大地影响了初始化效率,长时间的结果集提取入库操作增加了初始化过程中数据库报错的风险,从而造成初始化失败。
为此,本发明利用初始化数据时把非大对象数据和大对象数据分两阶段初始化方案,并在开启数据同步以后采用分段并行初始化大对象数据的方法来解决大对象数据初始化效率低的问题。
根据上述思路,本发明实施例提供了一种基于日志解析同步的大对象初始化方法,如图1所示,主要包括以下步骤:
步骤201,源端数据同步系统全列查询包含有大对象数据的待初始化表,并根据查询结果标识所述待初始化表中的大对象列和非大对象列。
所述源端数据同步系统全列查询待初始化表,并且在查询项中添加ROWID伪列用来获取数据行对应的ROWID值,执行查询语句并获取每个列的数据类型描述信息,在查询得到的结果集中标识出大对象列和非大对象列,以便后续将表的初始化拆分成非大对象列和大对象列两阶段来完成。
其中,在所述源端数据同步系统全列查询包含有大对象数据的待初始化表之前,所述方法还包括:源端数据同步系统在源端创建一个辅助表A,用于存放所述待初始化表中数据行在源端数据库中对应的源ROWID值;然后通知目的端数据同步系统,由目的端数据同步系统在目的端创建一个辅助表B,用于存放所述待初始化表中数据行在源端数据库中的源ROWID值和数据入库以后在目的端数据库中的目的ROWID值间的映射关系。
步骤202,将所述待初始化表中的非大对象列数据以多行批量方式初始化到目的端数据库,并采用ROWID保存源端数据库和目的端数据库数据行之间的映射关系。
该步骤即为第一阶段的数据初始化过程,主要针对非大对象数据,即非大对象列中的数据,以下简称为非大对象列数据,利用非大对象数据可以批量处理的优势快速入库。此时,步骤202的实施过程具体如下:
1)在源端对查询到的结果集数据进行提取,将当前结果集游标所在行中的非大对象列数据发送到目的端同步系统,并将该行数据在源端数据库对应的源ROWID值存入源端的辅助表A中;
2)当发送的数据行数量达到预设阈值时,构造入库执行消息并发送到目的端数据同步系统。具体地,每次完成一行数据的发送后,统计当前发送的数据行数量,判断是否达到预设阈值;如果达到则源端数据同步系统构造入库执行消息并发送到目的端数据同步系统,通知目的端数据同步系统将前面发送的数据进行入库并重置统计行;然后再移动结果集游标至下一行,以便继续提取结果集中的下一行数据,直至到达结果集未尾,完成所有行数据的提取。如果未达到预设阈值,则直接移动结果集游标至下一行。
3)目的端数据同步系统接收到入库请求后对数据行进行批量入库操作,并获取该行数据在目的端数据库对应的目的ROWID值,然后将该行数据对应的源ROWID值和目的ROWID值以映射形式存入目的端的辅助表B中。其中,所述辅助表A中包含S_RID列,所述辅助表B中包含S_RID列和D_RID列,源端数据库对应的源ROWID值存入到S_RID列,目的端数据库对应的目的ROWID值存入到D_RID列。
上述过程描述的第一阶段仅对非大对象列数据进行初始化。进一步地,在优选方案中,第一阶段还可同时对部分支持批量操作的大对象列数据(即大对象列中的数据)进行初始化,过滤出不支持批量操作的大对象列数据,以缩小辅助表A中待初始化大对象列数据的行数。此时,步骤202的实施过程具体如下:
1)在源端对查询到的结果集数据进行提取,将当前结果集游标所在行中的非大对象列数据以及大对象列中的行内数据和NULL值发送到目的端同步系统。具体为:首先提取当前结果集游标所在行中的每个非大对象列数据;同时依次获取当前结果集游标所在行中的每个大对象列,如果大对象列数据为行内数据或NULL值,则提取该大对象列数据,提取的该大对象列数据也就是行内数据或NULL值;如果大对象列数据为行外数据,则以NULL值替代该大对象列数据并提取NULL值;最后将该数据行中提取到的非大对象列数据以及大对象列中的行内数据和NULL值发送到目的端同步系统。
进一步地,对于当前结果集游标所在行中的每个大对象列数据,行内数据或行外数据的判断方法具体为:获取对应的大对象列数据长度,并比较所述大对象列数据长度与大对象行内数据最大长度的大小关系;如果所述大对象列数据长度小于等于所述大对象行内数据最大长度,则对应的大对象列数据为行内数据;否则为行外数据。其中,大对象行内数据最大长度指的是数据库内部针对大对象数据类型的优化,当存放的大对象列数据小于等于该长度时,该数据存放的空间位置在数据行记录的内部,这样可以加快大对象存取的性能,因为在这种情况下大对象行内数据支持批量的查询返回和批量的入库。不在记录内部的大对象数据称之为行外数据,在记录内部的称为行内数据。也就是说,对于每个大对象列,对应的大对象列数据有三种类型:行内数据、行外数据和NULL值(即数据为空);其中,行内数据和NULL值可与非大对象一起,在第一阶段就完成初始化;行外数据则需要先过滤处理,在后续第二阶段再补充进行初始化。
2)判断当前结果集游标所在行的大对象列中是否存在行外数据,如果存在,则将该行数据在源端数据库对应的源ROWID值存入源端的辅助表A中。具体地,当前结果集游标所在行中的所有大对象列数据都为NULL值或行内数据时,它的源ROWID值没必要保存到辅助表A中,因为这行数据已经整体完成了初始化;这种策略可以优化某些表存在大量行内数据或NULL的情况,可以有效缩减后期补充初始化大对象的行数。但只要所有大对象列中有一列存在行外数据,该行的源ROWID值就应该保存到辅助表A中,以便非大对象数据初始化完成以后对这列大对象的行外数据进行补充初始化。
3)当发送的数据行数量达到预设阈值时,构造入库执行消息并发送到目的端数据同步系统,同时将结果集游标移动至结果集的下一行。具体地,每次完成一行数据的发送后,统计当前发送的数据行数量,判断是否达到预设阈值;如果达到则源端数据同步系统构造入库执行消息并发送到目的端数据同步系统,通知目的端数据同步系统将前面发送的数据进行入库并重置统计行;然后再移动结果集游标至下一行,以便继续提取结果集中的下一行数据,直至到达结果集未尾,完成所有行数据的提取。如果未达到预设阈值,则直接移动结果集游标至下一行。
4)目的端数据同步系统接收到入库请求后对数据行进行批量入库操作,并获取该行数据在目的端数据库对应的目的ROWID值,然后将该行数据对应的源ROWID值和目的ROWID值以映射形式存入目的端的辅助表B中。其中,所述辅助表A中包含S_RID列,所述辅助表B中包含S_RID列和D_RID列,源端数据库对应的源ROWID值存入到S_RID列,目的端数据库对应的目的ROWID值存入到D_RID列。
步骤203,源端数据同步系统在确认所述待初始化表中的非大对象列数据在目的端数据库完成初始化后,开启所述待初始化表的日志捕获以便同步该表的操作。
步骤204,根据保存的ROWID信息,将所述待初始化表中的大对象列数据以分段并行的方式补充初始化到目的端数据库。
该步骤即为第二阶段的数据初始化过程,如果第一阶段仅对非大对象进行初始化,则第二阶段需要对所有大对象列数据进行补充初始化。此时,步骤204的实施过程具体如下:
1)在源端创建X个大对象查询线程,将所述辅助表A中的源ROWID值以Y个为一组分派给一个大对象查询线程,直至分派完成。以Y个源ROWID值分为一组,可以使X个大对象查询线程并行查询该S_RID列中源ROWID值对应的大对象数据,从而提升单个表初始化大对象数据的性能。
2)每个大对象查询线程利用对应的Y个源ROWID值查询对应的大对象列数据。具体地,对于每个大对象查询线程,根据对应的Y个源ROWID值和所述待初始化表中标识的大对象列构造大对象查询语句;然后利用构造的大对象查询语句,查询该Y个源ROWID值对应的大对象列数据。对于结果集每一行中的每个大对象列数据,结合所在行的源ROWID值构造一个更新(UPDATE)操作发送到目的端数据同步系统。
3)目的端数据同步系统在接收到更新操作后获取对应的源ROWID值,并在所述辅助表B中根据映射关系查询对应的目的ROWID值,然后根据该目的ROWID值执行对应大对象列数据的更新。
进一步地,在优选方案中,第一阶段还对部分大对象列数据初始化,则第二阶段主要针对剩余未初始化的大对象列,即大对象列中的行外数据。此时,步骤204的实施过程具体如下:
1)在源端创建X个大对象查询线程,将所述辅助表A中的源ROWID值以Y个为一组分派给一个大对象查询线程,直至分派完成。以Y个源ROWID值分为一组,可以使X个大对象查询线程并行查询该S_RID列中源ROWID值对应的大对象数据,从而提升单个表初始化大对象数据的性能。
2)每个大对象查询线程利用对应的Y个源ROWID值查询对应的大对象列数据,并判断查询到的每个大对象列数据是否为行内数据或NULL值。具体地,对于每个大对象查询线程,根据对应的Y个源ROWID值和所述待初始化表中标识的大对象列构造大对象查询语句;然后利用构造的大对象查询语句,查询该Y个源ROWID值对应的大对象列数据。
其中,如果大对象列数据是行内数据或NULL值,则跳过该大对象列数据的提取;如果大对象列数据不是行内数据或NULL值,则提取该大对象列数据,并结合所在行的源ROWID值构造一个更新(UPDATE)操作发送到目的端数据同步系统。
3)目的端数据同步系统在接收到更新操作后获取对应的源ROWID值,并在所述辅助表B中根据映射关系查询对应的目的ROWID值,然后根据该目的ROWID值执行对应大对象列数据的更新。
在提取完辅助表A上所有S_RID列存放的源ROWID值后,等待这些源ROWID值对应的大对象数据完成初始化,便可完成所述待初始化表的大对象初始化。
本发明提供的上述方法中,在初始化数据时把非大对象数据和大对象数据分成两阶段初始化,利用非大对象数据可以批量处理的优势先把非大对象数据初始化到目的端数据库,并在初始化过程中使用ROWID伪列值来保存源端数据库和目的端数据库数据行之间的映射关系,然后开启数据同步,在同步过程中根据前面保存的ROWID信息以分段并行的方式补充初始化大对像数据。通过上述方案,在存在较多大对象的数据同步环境中不仅可以快速完成数据同步环境的搭建,提前开启数据同步,防止源端数据库归档日志堆积;而且在开启数据同步以后,采用分段方式可有效缩减每次查询大对象的耗时,极大降低了源端数据库报“快照过旧”错误的概率;而并行方式又可以多个线程同时初始化单个表的大对象数据,最大限度地提升大对象数据的入库效率。
实施例2:
上述实施例1中介绍了一种基于日志解析同步的大对象初始化方法的主要步骤,在此基础上,本发明实施例进一步对实施例1中事务合并执行方法的完整步骤展开详细介绍。
结合图2和图3,本发明实施例提供的一种基于日志解析同步的大对象初始化方法。其中,图2主要对应第一阶段的初始化过程(即步骤101-110),图3主要对应第二阶段的初始化过程(即步骤111-116),具体如下:
步骤101,在源端数据库和目的端数据库分别部署同步系统。其中,源端数据同步系统用于从所述源端数据库读取日志,而目的端数据同步系统用于将所述源端数据库发过来的同步操作应用到所述目的端数据库。
步骤102,源端数据同步系统在初始化包含有大对象数据的待初始化表表T到目的端时,先在源端创建一个辅助表A,用于存放表T中数据行在源端数据库中对应的源ROWID值;然后通知目的端数据同步系统,由目的端数据同步系统在目的端创建一个辅助表B,用于存放表T中数据行在源端数据库中的源ROWID值和数据入库以后在目的端数据库中的目的ROWID值间的映射关系。
其中,所述辅助表A中包含S_RID列,所述辅助表B中包含S_RID列和D_RID列,源端数据库对应的源ROWID值存入到S_RID列,目的端数据库对应的目的ROWID值存入到D_RID列。具体语句如下:
在源端数据库创建辅助表A:
CREATE TABLE A(S_RID VARCHAR(18));
列S_RID存放源端数据库表T中数据行的RWOID值(即源RWOID值);
在目的端数据库创建辅助表B:
CREATE TABLE B(S_RID VARCHAR(18),D_RID VARCHAR(18));
列S_RID存放源端数据库表T中数据行的RWOID值(即源RWOID值);
列D_RID存放目的端数据库表T中数据行的RWOID值(即目的RWOID值)。
步骤103,源端数据同步系统全列查询待初始化表T,并且在查询项中添加ROWID伪列用来获取数据行对应的ROWID,执行查询语句并获取每个列的数据类型描述信息,在查询得到的结果集中标识出大对象列和非大对象列。
假如表T的结构为:T(C1 INT,C2 CLOB,C3 CLOB)
则C1为非大对象列,C2和C3为大对象列。构造的查询语句为:
SELECT ROWID,C1,C2,C3 FROM T
步骤104,在源端提取结果集中的数据:首先提取当前结果集游标所在行非大对象列的数据,然后获取该行大对象列的数据长度,当获取的大对象列数据长度小于等于大对象行内数据最大长度或大对象列为NULL值时,则提取对应的大对象列数据,如果不符合则以NULL值替代对应大对象列数据,然后将提取的该行数据发送到目的端同步系统。
其中,大对象行内数据最大长度指的是数据库内部针对大对象数据类型的优化,当存放的大对象数据小于等于该长度时,该数据存放的空间位置在数据行记录的内部,这样可以加快大对象存取的性能,因为在这种情况下大对象行内数据支持批量的查询返回和批量的入库。不在记录内部的大对象数据称之为行外数据,在记录内部的称为行内数据。
步骤105,判断当前结果集游标所在行的所有大对象列数据是否存在行外数据。如果存在,则跳到106;否则跳到107。
步骤106,当前行存在大对象行外数据,将当前行对应的源ROWID值存入源端的辅助表A中。
当前结果集游标所在行中的所有大对象列数据都为NULL值或行内数据时,它的源ROWID值没必要保存到辅助表A中,因为这行数据已经整体完成了初始化。这种策略可以优化某些表存在大量行内数据或NULL的情况,有效缩减后期补充初始化大对象的行数。但只要大对象列中有一列存在大对象行外数据,该行的源ROWID值就应该保存到辅助表A中,以便非大对象数据初始化完成以后对这列大对象的行外数据进行补充初始化。
步骤107,统计当前发送的数据行数,判断是否达到预设阈值N。当数据行数量达到预设阈值N时,构造入库执行消息并发送到目的端数据同步系统,通知目的端数据同步系统将前面发送的数据进行入库并重置统计行;然后再移动结果集游标到下一行,如果已经到达结果集末尾则跳到108,否则跳到104继续提取结果集下一行数据。
步骤108,通知目的端数据同步系统将前面发送的数据进行入库,并等待目的端数据同步系统完成。其中,只有当目的端数据同步系统完成某个表的非大对象列数据初始化工作以后,才能开启该表的同步,不然日志同步操作会和初始化操作相冲突。
步骤109,目的端数据同步系统接收到入库请求后对已发送过来的数据行进行批量入库操作,并通过入库返回ROWID的方式获取该行数据在目的端数据库对应的目的ROWID值,然后将该行数据对应的源ROWID值和目的ROWID值以映射形式存入目的端的辅助表B中。其中,源端的ROWID值存入到S_RID列,目的端的ROWID存入到D_RID列。
通过这种方式可以构造待初始化表T在源端数据库和目的端数据库中数据行的映射关系,为补充初始化大对象数据作准备。
步骤110,源端数据同步系统在确认待初始化表T中的非大对象列数据在目的端数据库完成初始化后,开启待初始化表T的日志捕获以便同步该表的操作。
步骤111,源端数据同步系统为待初始化表T创建X个大对象查询线程用来补充初始化表T的大对象数据。其中,X值的大小可根据当前硬件条件来设定,硬件条件越好,X值可以设置越大。
步骤112,查询源端的辅助表A中保存的需要补充初始化的ROWID信息,提取并以Y个S_RID列值为一组分派给一个大对象查询线程,直到提取完辅助表A中所有的ROWID信息。
其中,把辅助表A中的S_RID列值以Y个分为一组,可以使X个大对象查询线程并行查询该S_RID列中源ROWID值对应的大对象数据,从而提升单个表初始化大对象数据的性能。
步骤113,每个大对象查询线程使用Y个源ROWID值信息,查询表T的ROWID伪列和全部大对象列来获取大对象数据。其中,表T中的大对象列为C2和C3,那么构造的查询语句为:
SELECT ROWID,C2,C3 FROM T WHERE ROWID IN(RID1,RID2,...)
把Y个源ROWID值放入IN表达式便可以查询出对应行的大对象数据,如果某个源ROWID值对应的行在非大对象数据初始化以后被删除了,也不会影响到整个同步数据的一致性,因为日志同步操作同样会删除目的端数据库中对应的行;如果某个源ROWID值对应的行的大对象数据在非大对像数据初始化以后被多次更新,补充初始化大对像的操作也不会影响到大对像数据的一致性,因为最终更新的都是最新的大对象数据。另外,缩减Y值的规模还可以有效降低初始化大对象数据时源端报“快照过旧”错误的发生概率。
步骤114,依次对当前结果集游标所在行中所有大对象列进行数据提取,对于每一列大对象数据,先判断该列大对象是否为NULL值或数据长度是否小于等于数据库行内数据的最大值。如果是,则跳过该列大对象数据的提取,因为该列已经在前期非大对象数据初始化时完成了初始化;否则提取该列的大对象数据,结合所在行的源ROWID值构造成一个更新操作发送到目的端数据同步系统。
步骤115,目的端数据同步系统在接收到大对象更新操作以后,先取得该操作对应的源ROWID值,并在辅助表B中查询它映射在目的端的目的ROWID值,然后通过该目的ROWID值对表T进行大对象的更新。
其中,在目的端数据库查询源端的源ROWID值在目的端映射的目的ROWID值时,可以在辅助表B上执行下面查询:
SELECT D_RID FROM B WHERE S_RID=ROWID;
步骤116,源端数据同步系统在提取完辅助表A中S_RID列存放的所有的源ROWID值以后,等待这些源ROWID值对应的大对象数据完成初始化,便可完成待初始化表T的大对象初始化。
上述实施例的基本步骤,可以解释如下:
首先,把含有大对象表的初始化拆分成非大对象列和大对象列两阶段来完成,第一阶段可以充分利用非大对象列数据可以批量处理的优势快速入库,并分别在源端记录已经完成初始化数据行的ROWID,在目的端记录已经完成初始化数据行的源端数据库ROWID和目的端数据库ROWID的映射关系。采用这种两端记录的方式可以有效解决数据同步源端和目的端存在单向网闸或物理隔离的应用场景,因为在这种场景下源端在补充初始化大对象数据时无法从目的端提取待初始化大对像的ROWID。在非大对象数据初始化完成以后马上开启该表的数据同步,可以大大缩减含有大对象表搭建同步的时间;第二阶段采用分组多线程并行查询大对象的方式,能够有效解决之前单线程查询大对象效率低下的问题,大大提升大对象初始化的速度。
其次,在初始化非大对象数据时,通过判断大对象列的数据是否为NULL值或数据长度小于等于数据库行内数据的最大长度,可以有效过滤出大对象行外数据的情况,缩小源端辅助表A中待初始化大对象的行数。在极端情况下,如果某个包含大对象的表中大对象数据全部是NULL或行内数据,那么在第一阶段非大对象数据初始化完成以后,所有的大对象数据也将都完成了初始化,此时源端辅助表A中的记录行数为0,大大提升了初始化的性能。
实施例3:
在上述实施例1和实施例2的基础上,本发明实施例提供了一种基于日志解析同步的大对象初始化方法的具体实例,以便更好地理解整个事务合并执行过程。
在该具体的实施例中,假设源端数据库存在含有大对象数据的待初始化表表T,数据库支持大对象最大的行内数据长度为3900个字节:
CREATE TABLE T(C1 INT,C2 CLOB,C3 CLOB);
INSERT INTO T(C1,C2,C3)VALUES(1,NULL,'B');
INSERT INTO T(C1,C2,C3)VALUES(2,NULL,REPLICATE('B',4000));
INSERT INTO T(C1,C2,C3)VALUES(3,REPLICATE('A',4000),REPLICATE('B',4000));
步骤301,在第一阶段初始化非大对象数据,源端数据同步系统执行以下查询语句:
SELECT ROWID,C1,C2,C3 FROM T;
步骤302,提取出结果集的第一行的非大对象列C1的数据和ROWID构造一条消息,该消息在每一行提取完成以后会发送到目的端数据同步系统。然后判断两个大对象列的数据长度:C2为NULL值,直接填充到当前消息;C3的数据长度为1个字节,小于行内数据最大长度3900,直接填充到当前消息。最后把该消息发送到目的端数据同步系统。注意,由于该行的所有大对象列都不存在行外数据,所以该行的ROWID无需保存到辅助表A中。
步骤303,移动结果集游标到下一行,提取出结果集的第二行非大对象列C1的数据和ROWID构造一条消息;然后判断两个大对象列的数据长度:C2为NULL值,直接填充到当前消息;C3的数据长度为4000个字节,大于行内数据最大长度3900,C3列的大对象存在行外数据,以NULL值替代行外数据填充到当前消息。假设结果集第二行的ROWID值为S2,则把该ROWID保存到源端辅助表A中。最后把该消息发送到目的端数据同步系统。此时,辅助表A中记录的源ROWID值信息如表1所示:
表1:
S_RID |
S2 |
步骤304,继续移动结果集游标到下一行,按照上述逻辑提取和发送消息,假设第三行的ROWID为S3,最后在辅助表A中记录了两条源ROWID值的信息,如表2所示:
表2:
S_RID |
S2 |
S3 |
步骤305,继续移动结果集游标到下一行,此时已经到达结果集末尾,则发送入库消息到目的端数据同步系统,并等待目的端数据同步完成数据的入库。
从上述步骤中可以看到,虽然待初始化表T中有3行数据,但由于第一行所有的大对象列都不存在行外数据,所以该行在后期不需要再对它进行大对象的补充初始化,所以辅助表A中只保存了第二行和第三行数据的源ROWID值。
步骤306,目的端数据同步系统把接收到的三个消息采用参数绑定的形式批量入库,并且在入库时获取它们在目的库的ROWID信息,即目的ROWID值。
INSERT INTO T(C1,C2,C3)VALUES(:1,:2,:3)RETURNING ROWID INTO:4;
通过上述语句,可以在输出参数:4中获取到数据行在目的端数据库中的目的ROWID值,然后把它和源ROWID值一起保存到目的端数据库的辅助表B中,如表3所示:
表3:
S_RID | D_RID |
S1 | D1 |
S2 | D2 |
S3 | D3 |
步骤307,源端数据同步系统在目的端数据入库完成以后,开启表T的数据同步。
步骤308,在第二阶段,源端数据同步系统创建两个大对象查询线程,然后假设按1个源ROWID值分一组的形式,从辅助表A中提取出两个源ROWID值,分成两组,分别指派给两个大对象查询线程进行大对象的数据初始化。
假设两个大对像查询线程分别命名为R1和R2,其中R1负责源ROWID值为S2的数据行,R2负责源ROWID值为S3的数据行。
步骤309,R1线程构造如下大对象查询语句来查询出对应大对像数据:
SELECT ROWID,C2,C3 FORM T WHERE ROWID=S2;
步骤310,R1线程提取源ROWID值为S2的数据行,即表T中的第二行数据,先判断C2列的数据长度,发现C2列值为NULL,不需要初始化;再判断C3列的数据长度,发现C3列的数据长度为4000字节,需要初始化,读出该大对象数据,构造一个更新操作发送到目的端数据同步系统:
UPDATE T SET C3=大对象数据WHERE ROWID=S2;
步骤311,目的端数据同步系统在接收到大对象更新操作以后,提取操作中的源ROWID值S2,使用该值在目的端辅助表B中查询到映射的目的ROWID值D2后,在目的端数据库中执行更新大对象操作:
UPDATE T SET C3=大对象数据WHERE ROWID=D2;
步骤312,R2线程构造如下大对象查询语句来查询出对应大对像数据:
SELECT ROWID,C2,C3 FORM T WHERE ROWID=S3;
步骤313,R2线程提取源ROWID值为S3的数据行,即表T中的第三行数据,先判断C2列的数据长度,发现C2列的数据长度为4000字节,需要初始化,读出该大对象的数据;再判断C3列的数据长度,发现C3列的数据长度为4000字节,需要初始化,读出该大对象的数据,构造一个更新操作发送到目的端同步系统:
UPDATE T SET C2=大对象数据,C3=大对象数据WHERE ROWID=S3;
步骤314,目的端数据同步系统在接收到大对象更新操作以后,提取操作中的源ROWID值S3,使用该值在目的端辅助表B中查询到映射的目的ROWID值D3后,在目的端数据库中执行更新大对象操作:
UPDATE T SET C2=大对象数据,C3=大对象数据WHERE ROWID=D3;
步骤315,R1线程和R2线程在完成大对象数据查询以后,就完成了表T的大对象数据初始化。
从上面整个流程可以看出,采用非大对象和大对象分开初始化的策略可以在第一阶段的步骤306中批量入库非大对象数据,然后就可以在步骤307开启表T的数据同步,极大缩短了该表搭建同步的时间。最后在第二阶段的步骤308采用多线程并行的方式初始化大对象数据,进一步提升大对象数据的初始化性能。
实施例4:
在上述实施例1-实施例3提供的基于日志解析同步的大对象初始化方法的基础上,本发明还提供了一种可用于实现上述方法的基于日志解析同步的大对象初始化装置,如图4所示,是本发明实施例的装置架构示意图。本实施例的基于日志解析同步的大对象初始化装置包括一个或多个处理器21以及存储器22。其中,图4中以一个处理器21为例。
所述处理器21和所述存储器22可以通过总线或者其他方式连接,图4中以通过总线连接为例。
所述存储器22作为一种基于日志解析同步的大对象初始化方法非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如实施例1-实施例3中的基于日志解析同步的大对象初始化方法。所述处理器21通过运行存储在所述存储器22中的非易失性软件程序、指令以及模块,从而执行基于日志解析同步的大对象初始化装置的各种功能应用以及数据处理,即实现实施例1-实施例3的基于日志解析同步的大对象初始化方法。
所述存储器22可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,所述存储器22可选包括相对于所述处理器21远程设置的存储器,这些远程存储器可以通过网络连接至所述处理器21。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
所述程序指令/模块存储在所述存储器22中,当被所述一个或者多个处理器21执行时,执行上述实施例1-实施例3中的基于日志解析同步的大对象初始化方法,例如,执行以上描述的图1-图3所示的各个步骤。
本领域普通技术人员可以理解实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取存储器(RAM,Random AccessMemory)、磁盘或光盘等。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种基于日志解析同步的大对象初始化方法,其特征在于,包括:
源端数据同步系统全列查询包含有大对象数据的待初始化表,并根据查询结果标识所述待初始化表中的大对象列和非大对象列;
将所述待初始化表中的非大对象列数据以多行批量方式初始化到目的端数据库,并采用ROWID保存源端数据库和目的端数据库数据行之间的映射关系;
源端数据同步系统在确认所述待初始化表中的非大对象列数据在目的端数据库完成初始化后,开启所述待初始化表的日志捕获以便同步该表的操作;
根据保存的ROWID信息,将所述待初始化表中的大对象列数据以分段并行的方式补充初始化到目的端数据库。
2.根据权利要求1所述的基于日志解析同步的大对象初始化方法,其特征在于,所述将所述待初始化表中的非大对象列数据以多行批量方式初始化到目的端数据库,并采用ROWID保存源端数据库和目的端数据库数据行之间的映射关系,具体为:
在源端对查询到的结果集数据进行提取,将当前结果集游标所在行中的非大对象列数据以及大对象列中的行内数据和NULL值发送到目的端同步系统;
判断当前结果集游标所在行的大对象列中是否存在行外数据,如果存在,则将该行数据在源端数据库对应的源ROWID值存入源端的辅助表A中;
当发送的数据行数量达到预设阈值时,构造入库执行消息并发送到目的端数据同步系统,同时将结果集游标移动至结果集的下一行;
目的端数据同步系统接收到入库请求后对数据行进行批量入库操作,并获取该行数据在目的端数据库对应的目的ROWID值,然后将该行数据对应的源ROWID值和目的ROWID值以映射形式存入目的端的辅助表B中。
3.根据权利要求2所述的基于日志解析同步的大对象初始化方法,其特征在于,所述辅助表A中包含S_RID列,所述辅助表B中包含S_RID列和D_RID列;其中,源端数据库对应的源ROWID值存入到S_RID列,目的端数据库对应的目的ROWID值存入到D_RID列。
4.根据权利要求2所述的基于日志解析同步的大对象初始化方法,其特征在于,所述将当前结果集游标所在行中的非大对象列数据以及大对象列中的行内数据和NULL值发送到目的端同步系统,具体为:
提取当前结果集游标所在行中的每个非大对象列数据;
对于当前结果集游标所在行中的每个大对象列数据,如果大对象列数据为行内数据或NULL值,则提取该大对象列数据;如果大对象列数据为行外数据,则以NULL值替代该大对象列数据并提取NULL值;
将提取到的非大对象列数据以及大对象列中的行内数据和NULL值发送到目的端同步系统。
5.根据权利要求4所述的基于日志解析同步的大对象初始化方法,其特征在于,对于当前结果集游标所在行中的每个大对象列数据,行内数据或行外数据的判断方法具体为:
获取对应的大对象列数据长度,并比较所述大对象列数据长度与大对象行内数据最大长度的大小关系;
如果所述大对象列数据长度小于等于所述大对象行内数据最大长度,则对应的大对象列数据为行内数据;否则为行外数据。
6.根据权利要求2所述的基于日志解析同步的大对象初始化方法,其特征在于,所述根据保存的ROWID信息,将所述待初始化表中的大对象列数据以分段并行的方式补充初始化到目的端数据库,具体为:
在源端创建X个大对象查询线程,将所述辅助表A中的源ROWID值以Y个为一组分派给一个大对象查询线程,直至分派完成;
每个大对象查询线程利用对应的Y个源ROWID值查询对应的大对象列数据,并判断查询到的每个大对象列数据是否为行内数据或NULL值;
如果大对象列数据不是行内数据或NULL值,则提取该大对象列数据,并结合所在行的源ROWID值构造一个更新操作发送到目的端数据同步系统;
目的端数据同步系统在接收到更新操作后获取对应的源ROWID值,并在所述辅助表B中根据映射关系查询对应的目的ROWID值,然后根据该目的ROWID值执行对应大对象列数据的更新。
7.根据权利要求6所述的基于日志解析同步的大对象初始化方法,其特征在于,所述每个大对象查询线程利用对应的Y个源ROWID值查询对应的大对象列数据具体为:
对于每个大对象查询线程,根据对应的Y个源ROWID值和所述待初始化表中标识的大对象列构造大对象查询语句;
利用构造的大对象查询语句,查询该Y个源ROWID值对应的大对象列数据。
8.根据权利要求2所述的基于日志解析同步的大对象初始化方法,其特征在于,在所述源端数据同步系统全列查询包含有大对象数据的待初始化表之前,所述方法还包括:
源端数据同步系统在源端创建一个辅助表A,用于存放所述待初始化表中数据行在源端数据库中对应的源ROWID值;然后通知目的端数据同步系统,由目的端数据同步系统在目的端创建一个辅助表B,用于存放所述待初始化表中数据行在源端数据库中的源ROWID值和数据入库以后在目的端数据库中的目的ROWID值间的映射关系。
9.根据权利要求8所述的基于日志解析同步的大对象初始化方法,其特征在于,在创建辅助表A和辅助表B之前,所述方法还包括:
在源端数据库和目的端数据库分别部署同步系统;其中,源端数据同步系统用于从所述源端数据库读取日志,目的端数据同步系统用于将所述源端数据库发过来的同步操作应用到所述目的端数据库。
10.一种基于日志解析同步的大对象初始化装置,其特征在于,包括至少一个处理器和存储器,所述至少一个处理器和存储器之间通过数据总线连接,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令在被所述处理器执行后,用于完成权利要求1-9任一所述的基于日志解析同步的大对象初始化方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011457854.4A CN112559629B (zh) | 2020-12-13 | 2020-12-13 | 一种基于日志解析同步的大对象初始化方法与装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011457854.4A CN112559629B (zh) | 2020-12-13 | 2020-12-13 | 一种基于日志解析同步的大对象初始化方法与装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112559629A true CN112559629A (zh) | 2021-03-26 |
CN112559629B CN112559629B (zh) | 2022-08-26 |
Family
ID=75062173
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011457854.4A Active CN112559629B (zh) | 2020-12-13 | 2020-12-13 | 一种基于日志解析同步的大对象初始化方法与装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112559629B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113190281A (zh) * | 2021-04-08 | 2021-07-30 | 武汉达梦数据库股份有限公司 | 一种基于rowid区间的初始化装载方法与装置 |
CN113329076A (zh) * | 2021-05-27 | 2021-08-31 | 上海达梦数据库有限公司 | 数据传输方法、装置及系统、计算机设备、存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050086269A1 (en) * | 2003-10-20 | 2005-04-21 | Julie Chen | System and method for concurrently reorganizing logically related LOB table spaces |
US7467163B1 (en) * | 2006-02-10 | 2008-12-16 | Unisys Corporation | System and method to manipulate large objects on enterprise server data management system |
EP2444923A1 (en) * | 2010-10-20 | 2012-04-25 | Research In Motion Limited | Mobile device and method for creating data records in the data-store of a calendar application based on the analysis of wirelessly transmitted messages containing information about the location, the time, the attendees and the confirmation of a meeting |
CN110222115A (zh) * | 2019-04-30 | 2019-09-10 | 武汉达梦数据库有限公司 | 基于表初始化分组装载的数据库同步方法及设备 |
CN111159020A (zh) * | 2019-12-20 | 2020-05-15 | 武汉达梦数据库有限公司 | 一种应用于同步软件测试的方法和装置 |
-
2020
- 2020-12-13 CN CN202011457854.4A patent/CN112559629B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050086269A1 (en) * | 2003-10-20 | 2005-04-21 | Julie Chen | System and method for concurrently reorganizing logically related LOB table spaces |
US7467163B1 (en) * | 2006-02-10 | 2008-12-16 | Unisys Corporation | System and method to manipulate large objects on enterprise server data management system |
EP2444923A1 (en) * | 2010-10-20 | 2012-04-25 | Research In Motion Limited | Mobile device and method for creating data records in the data-store of a calendar application based on the analysis of wirelessly transmitted messages containing information about the location, the time, the attendees and the confirmation of a meeting |
CN110222115A (zh) * | 2019-04-30 | 2019-09-10 | 武汉达梦数据库有限公司 | 基于表初始化分组装载的数据库同步方法及设备 |
CN111159020A (zh) * | 2019-12-20 | 2020-05-15 | 武汉达梦数据库有限公司 | 一种应用于同步软件测试的方法和装置 |
Non-Patent Citations (4)
Title |
---|
HAITAO YANG等: "A SyncML Middleware-Based Solution for Pervasive Relational Data Synchronization", 《IFIP INTERNATIONAL CONFERENCE ON NETWORK AND PARALLEL COMPUTING》 * |
RYAN_WO: "LOB", 《HTTPS://WWW.BBSMAX.COM/A/XL56OQQRDR/》 * |
夏义全: "数据库应用系统优化方法的研究", 《计算机技术与发展》 * |
廖新飞: "SQL Server大对象数据的访问技术及实现", 《计算机系统应用》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113190281A (zh) * | 2021-04-08 | 2021-07-30 | 武汉达梦数据库股份有限公司 | 一种基于rowid区间的初始化装载方法与装置 |
CN113190281B (zh) * | 2021-04-08 | 2022-05-17 | 武汉达梦数据库股份有限公司 | 一种基于rowid区间的初始化装载方法与装置 |
CN113329076A (zh) * | 2021-05-27 | 2021-08-31 | 上海达梦数据库有限公司 | 数据传输方法、装置及系统、计算机设备、存储介质 |
CN113329076B (zh) * | 2021-05-27 | 2022-11-08 | 上海达梦数据库有限公司 | 数据传输方法、装置及系统、计算机设备、存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112559629B (zh) | 2022-08-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9881041B2 (en) | Multiple RID spaces in a delta-store-based database to support long running transactions | |
CN112559629B (zh) | 一种基于日志解析同步的大对象初始化方法与装置 | |
CN105550293B (zh) | 一种基于Spark‑SQL大数据处理平台的后台刷新方法 | |
CN110442560B (zh) | 一种日志重演方法、装置、服务器和存储介质 | |
CN110674108A (zh) | 数据处理方法及装置 | |
US20160147834A1 (en) | Set-Orientated Visibility State Retrieval Scheme | |
CN104809202A (zh) | 一种数据库同步的方法和装置 | |
US10452655B2 (en) | In-memory cursor duration temp tables | |
CN104809201A (zh) | 一种数据库同步的方法和装置 | |
CN111694800B (zh) | 一种提升数据同步性能的方法和数据同步系统 | |
CN109376196B (zh) | 一种redo日志批量同步方法及装置 | |
CN104809200A (zh) | 一种数据库同步的方法和装置 | |
US9665612B2 (en) | Run-time decision of bulk insert for massive data loading | |
US9043546B2 (en) | Sliding-window multi-class striping | |
US8051054B2 (en) | Method and system for data processing with database update for the same | |
US20230137119A1 (en) | Method for replaying log on data node, data node, and system | |
WO2023159976A1 (zh) | 数据分段写入方法、数据读取方法及装置 | |
US20150106380A1 (en) | Database managing method, database managing system, and database tree structure | |
CN112000649A (zh) | 一种基于map reduce的增量数据同步的方法和装置 | |
US20170116116A1 (en) | Non-blocking parallel memory mechanisms | |
CN111930692B (zh) | 一种基于日志解析同步的事务合并执行方法及装置 | |
CN112035222B (zh) | 一种基于日志解析同步的事务操作合并执行方法及装置 | |
CN111858504B (zh) | 基于日志解析同步的操作合并执行方法和数据同步系统 | |
CN109165225A (zh) | 一种基于字节流格式的kudu数据导入系统及方法 | |
CN111159020B (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 | ||
CB03 | Change of inventor or designer information |
Inventor after: Sun Feng Inventor after: Peng Qingsong Inventor after: Yu Yuanlan Inventor before: Sun Feng Inventor before: Fu Quan Inventor before: Peng Qingsong Inventor before: Yu Yuanlan |
|
CB03 | Change of inventor or designer information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |