CN102306200A - 增量数据操作语句的并发应用装置和方法 - Google Patents
增量数据操作语句的并发应用装置和方法 Download PDFInfo
- Publication number
- CN102306200A CN102306200A CN201110284588A CN201110284588A CN102306200A CN 102306200 A CN102306200 A CN 102306200A CN 201110284588 A CN201110284588 A CN 201110284588A CN 201110284588 A CN201110284588 A CN 201110284588A CN 102306200 A CN102306200 A CN 102306200A
- Authority
- CN
- China
- Prior art keywords
- concurrent
- affairs
- incremental data
- action statement
- data source
- 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
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种增量数据操作语句的并发应用装置,包括:任务确定单元,从第一数据源中获取增量数据操作语句,将增量数据操作语句汇总成事务,根据事务中的增量数据操作语句的数量计算所需的并发任务数,为每个并发任务分配相应的增量数据操作语句;创建单元,获取本地事务的标识并创建跨连接第二数据源的本地事务,创建所需的并发任务;应用单元,将本地事务的标识和并发任务对应的增量数据操作语句集合传送至并发任务并启动并发任务,以执行相应的增量数据操作语句的并发应用,在全部并发任务成功执行结束时,提交第二数据源的本地事务。本发明还提供了一种增量数据操作语句的并发应用方法。在保证数据同步一致性的同时提高数据集成的性能。
Description
技术领域
本发明涉及数据集成技术领域,具体而言,涉及增量数据操作语句的并发应用装置和方法。
背景技术
在相关的实时增量数据同步技术中,为了保证跨数据源的数据同步的绝对一致性必须把挖掘出来的数据(SQL操作)按事务进行分类,然后再按事务原来的顺序应用到目的数据源中。因为目前所有的数据库的普通事务都不支持跨连接,为了保证数据的绝对一致性通常只能使用一个连接去串行应用一个事务的所有SQL操作。这样,在大并发或者大压力的情况下就算有些事务本身可以去做多线程并发应用以提高性能,但因为普通数据库连接和事务的限制也不能去实现事务内SQL操作的并发应用,这使得对增量数据的应用模块成为了整个系统的瓶颈——既使目的数据源所在的服务器的配置很好也难以充分利用其资源以提高数据同步的性能。因此,需要一种并发应用技术,实现一种对符合条件的数据库操作进行并发应用以提高性能,消除实时增量数据同步时应用模块的瓶颈。
发明内容
本发明所要解决的技术问题在于,提供一种并发应用技术,以提高数据同步的性能。
根据本发明的一个方面,提供了一种增量数据操作语句的并发应用装置,用于将应用于第一数据源的增量数据操作语句同步应用于第二数据源,包括:任务确定单元,从所述第一数据源中获取增量数据操作语句,将所述增量数据操作语句汇总成事务,根据所述事务中的增量数据操作语句的数量计算所需的并发任务数,为每个并发任务分配相应的增量数据操作语句;创建单元,获取本地事务的标识并创建跨连接所述第二数据源的所述本地事务,创建所需的并发任务;应用单元,将所述本地事务的标识和所述并发任务对应的增量数据操作语句集合传送至所述并发任务并启动所述并发任务,以执行相应的所述增量数据操作语句的并发应用,在全部所述并发任务成功执行结束时,提交所述第二数据源的所述本地事务。
在上述技术方案中,优选地,所述应用单元还可以包括:资源释放模块,在提交所述第二数据源的所述本地事务后,释放全部所述并发任务的资源,等待处理下一个汇总成的所述事务。
在上述技术方案中,优选地,所述任务确定单元还可以包括:第一判断模块,在汇总所述事务时,判断所述事务中的增量数据操作语句是否属于同一操作属性(所述事务所包含的数据操作全部是插入操作或者全部是删除操作),若所述增量数据操作语句属于同一操作属性,则为所述事务设置可进行并发应用的标志;第二判断模块,若判断出所述事务具有所述标志,则检查所述事务包含的增量数据操作语句的数量,若所述增量数据操作语句的数量超过阈值,则根据所述阈值拆分所述事务,以确定所需的并发任务数。
在上述技术方案中,优选地,所述创建单元从所述第二数据源维护的标识表获取最新标识的值,将所述最新标识的值加一后作为创建的所述本地事务的标识的值,并将创建的所述本地事务的标识更新至所述标识表,在所述第二数据源中保存本地事务的所述标识表。通过这种机制来保证本地事务的标识的全局唯一性。
在上述技术方案中,优选地,所述操作属性可以包括插入操作和删除操作;所述创建单元基于XA接口规范创建所述本地事务;所述第一数据源为OLTP数据源,所述第二数据源为OLAP数据源。
根据本发明的技术方案,还提供了一种增量数据操作语句的并发应用方法,用于将应用于第一数据源的增量数据操作语句同步应用于第二数据源,包括:步骤402,从所述第一数据源中获取增量数据操作语句,将所述增量数据操作语句汇总成事务,根据所述事务中的增量数据操作语句的数量计算所需的并发任务数,为每个并发任务分配相应的增量数据操作语句;步骤404,获取本地事务的标识并创建跨连接所述第二数据源的所述本地事务,创建所需的并发任务;步骤406,将所述本地事务的标识和所述并发任务对应的增量数据操作语句集合传送至所述并发任务并启动所述并发任务,以执行相应的所述增量数据操作语句的并发应用,在全部所述并发任务成功执行结束时,提交所述第二数据源的所述本地事务。
在上述技术方案中,优选地,所述步骤406还可以包括:在提交所述第二数据源的所述本地事务后,释放全部所述并发任务的资源,等待处理下一个汇总成的所述事务。
在上述技术方案中,优选地,所述步骤402可以包括:步骤4022,在汇总所述事务时,判断所述事务中的增量数据操作语句是否属于同一操作属性,若所述增量数据操作语句属于同一操作属性,则为所述事务设置可进行并发应用的标志;步骤4024,若判断出所述事务具有所述标志,则检查所述事务包含的增量数据操作语句的数量,若所述增量数据操作语句的数量超过阈值,则根据所述阈值拆分所述事务,以确定所需的并发任务数。
在上述技术方案中,优选地,在所述步骤404中,获取本地事务的标识的具体方法包括:在所述第二数据源中保存本地事务的标识表,从所述第二数据源中的所述标识表获取最新标识的值,将所述最新标识的值加一后作为创建的所述本地事务的标识的值,并将创建的所述本地事务的标识更新至所述标识表。
在上述技术方案中,优选地,所述操作属性可以包括插入操作和删除操作;所述本地事务基于XA接口规范创建而成;所述第一数据源为OLTP数据源,所述第二数据源为OLAP数据源。
通过上述技术方案,可以通过使用XA事务来实现跨连接的事务,为多任务并发应用从第一数据源挖掘出来的事务打下基础。在应用SQL操作的同时协调每一个任务里的XA事务的分支,保证所有任务应用的所有的SQL操作都在同一个XA的事务里,并通过任务管理子模块来协调同步所有的任务,这样在提高了DI性能的同时还保证了数据同步的绝对一致性。
附图说明
图1示出了根据本发明的实施例的增量数据操作语句的并发应用系统的框图;
图2示出了根据本发明的实施例的并发应用系统中的多模块之间的协作时序图;
图3示出了根据本发明的实施例的增量数据操作语句的并发应用装置的框图;
图4示出了根据本发明的实施例的增量数据操作语句的并发应用方法的流程图;
图5示出了根据本发明的实施例的并发应用增量数据操作语句的流程图;
图6示出了根据本发明的实施例的计算并发任务数的流程图;
图7示出了根据本发明的实施例的获取XA事务标识的流程图;
图8示出了根据本发明的实施例的应用任务的流程图;以及
图9示出了根据本发明的实施例的性能对比测试的示意图。
具体实施方式
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明并不限于下面公开的具体实施例的限制。
下面是在下文中出现的英文缩写代表的含义:
DI:Data Integration,是数据集成的简称。
OLTP数据源:企业级系统里用来处理交易型业务的数据库管理系统。
OLAP数据源:企业级系统里用来处理查询/分析型业务的数据库管理系统。为了性能的考虑,大型的企业在架构自己的分布式业务运营系统时,一般都会将这两类业务分开处理;相应地数据源也会分开使用,跨数据源的数据同步则会使用工具或者手工定时来完成。
事务:是指一系列的操作的集合。事务具有原子性,一致性,隔离性和持久性(ACID)四个特性。
SQL操作:这里主要指的是业务上使用最多的DML操作,如插入(INSERT)、删除(DELETE)和更新(UPDATE)。
SQL Redo Info Extractor Module:OLTP数据源的基本数据操作语句提取模块,简称SEM。
SQL Redo Info Processing Module:对挖掘出来的基本语句处理模块,简称SPM。
SQL Statement Applying Module:处理好的SQL语句应用模块,简称SAM。
XID:是数据库里一个事务的标识,详见X/OPEN组织发布的XA规范。
以下是关于XA规范方面的说明:
这个规范定义了在分布式事务管理系统中对事务管理器和数据源的各种要求,也包括了它们各自的访问接口。其中事务管理器到数据源之间的接口就是XA接口,而只要按规范实现了这套接口的数据源就可以参与到分布式的事务管理系统中去。下面对将要用到的名词做一个介绍:
XID:事务的标识,使用者需要自己去构造一个全局的标识出来。在分布式环境中,对数据源的所有事务/分支的操作将都需要这个标识。
开始事务的一个分支(xa_start):开始或者恢复一个事务的分支操作。有两个参数:一个是事务的标识(XID),另一个是以确定这次调用的性质的标识。该方法调用成功后,接下来的所有操作都将属于参数XID所标识的事务。
结束事务的一个分支(xa_end):结束或者暂停一个事务的分支操作。有两个参数:一个是事务的标识,另一个参数是用来表明这个分支的操作是成功还是失败的标识。该操作调用成功后接下来针对该数据源的所有操作都将不属于XID所标识的事务。
提交一个XA事务(commit):向数据源提交一个XA事务。有两个参数:一个是事务的标识XID,另一个参数是表明本次提交是否一阶段提交的标识。
回滚一个XA事务(rollback):向数据源回滚一个XA事务。一个参数:事务标识XID。
首先结合图1在整体上说明根据本发明的实施例的增量数据操作语句的并发应用系统。
在事务里的SQL操作都是插入(INSERT)操作或者删除(DELETE)操作时,各个SQL操作间是不会有互相依赖的(因为更新操作或者混合SQL操作的情况特别复杂,会产生相互的依赖不适合并发应用),因此通过并发来应用这些操作是可以提高DI的性能的。在并发应用时为了提高性能,需要同时建立多个任务并且每个任务都使用一个独立的数据库连接以尽可能的利用数据源所在服务器的资源,同时为了保证原来在一个事务中的SQL操作的一致性,即,使并发应用(跨数据库连接)也要在一个事务中完成,这就需要使用跨连接的事务。而在普通的数据库连接下产生的事务是不能跨连接,但在XA规范中定义了一种分布式事务,通过使用它所定义的XA数据源(XADatasource)和XA资源(XAResource)对象就可以实现跨连接的事务,从而使得在保证数据应用一致性的前提下的事务应用并发成为可能。
下面参考图1来详细说明增量数据操作语句的并发应用系统100,其主要包括以下模块。
(1)增量数据提取模块102(SEM)
为了实现事务应用的并发,首先需要标识这些可以并发的任务。在SEM从数据库提取出原始的SQL操作后,需要对这些SQL操作进行基本分析并按事务组织,然后再传送给数据处理模块(SPM)。需要检查是否一个事务的所有操作都是插入操作或者都是删除操作,如果是,则给这个事务打上一个可以并发的标识。
(2)数据处理模块104(SPM)
该模块对增量数据提取模块102提取的数据进行转换,然后将转换后的数据发送至数据应用模块106。
(3)数据应用模块106(SAM)
1)任务管理子模块1062:为了更好的来控制任务,需要设置两个参数:
任务并发阈值,用来定义事务并发的起始规模,若事务所包含的SQL操作数超过该设置的参数值,则触发并发流程;否则使用单任务来应用事务。用户可以通过系统参数配置112设置相应的参数值(例如,设置阈值为10000个操作数)。
任务最大的并发数:来映射OLAP数据源所在的服务器的处理性能。
如果发现将要应用的事务已经达到参数定义的规模,则需要完成以下工作:
将这些SQL操作按照参数定义的并发任务数进行分割;
获取一个事务标识(从事务控制子模块中获取);
创建参数定义数量的任务,并将分割好的SQL操作传给任务去执行;
等待所有任务执行完成(必须是成功)后提交事务,如果出现任何地方失败,则回滚该事务;
释放任务相关资源。
2)事务控制子模块1064
该模块主要负责维护事务标识,保证每次请求都能获取一个全局唯一的事务标识。为了保证其绝对唯一性,需要在OLAP数据源(第二数据源110)中定义一个表来维护事务标识。这个表里只有一列——是一个无符号的长整型数字,而在系统里使用的XID则把这个数字按十六进制格式化后的字符串,例如:第一个XID将是“0X0000000000000000”。
还负责事务边界控制,保证所有任务的执行的操作属于同一个XA事务,以及事务的提交和回滚。
3)应用任务子模块1066
该模块主要是使用事务控制子模块的接口,把从任务管理子模块1062接收到的SQL操作,在给定XID标识的事务里进行应用并最终返回结果。
因此,在增量数据提取模块102对挖掘出的SQL操作进行分析并复原事务(提取出应用于第一数据源的增量数据操作语句,根据增量数据操作语句的所属事务,将这些增量数据操作语句按事务的分类进行汇总)时,要做能否进行并发的检查;对于适合并发的事务设置可并发标志。
使用XA事务的特性来并发应用收到的事务。在数据应用模块106发现将要应用到目标数据源(第二数据源)的事务可以并发应用时,根据系统配置的并发数去创建多个任务,同时应用分配给任务的SQL操作;为了保证多个任务并发应用事务的SQL操作的结果一致性(事务的四大特性之一),将利用XA规范中定义的分布式事务的特性(详见XA/OPEN组织出版的XA规范)实现跨连接的事务,从而让在一个事务内并发应用事务的操作成为可能。因为这个事务的所有操作都将应用到同一个数据源内,所以也不会用到XA规范中的两阶段提交,也避免了两阶段提交会锁定事务相关资源的弊端。
图2是多模块协作的时序图,下面参考图2来说明各模块之间的处理过程。
首先进行各模块初始化:步骤1,增量数据提取模块102的初始化;步骤2,任务管理模块1062的初始化,并且获取XA控制对象;步骤3,返回获取的XA数据以及XA资源。
步骤4,初始化结束之后,对于一轮增量数据同步来说将首先由增量数据提取模块102对OLTP数据源进行增量操作的挖掘(提取增量SQL操作集合);步骤5,返回挖掘的增量SQL操作集合;步骤6,对SQL操作做基本分析并按事务进行汇总;步骤7,在指定范围的增量操作挖出来后会对这些操作进行初始化处理,并按事务打包的过程中同时检查该事务在应用是可不可以并发(检查是不是该事务所包含的操作全部是插入操作或者删除操作),如果可以,则要在该事务上设置可以并发应用的标志。步骤8,增量数据提取模块102通知数据转换模块104处理汇总好的事务;步骤9,数据转换模块104对接收到的事务进行处理;步骤10,通知任务管理模块1062应用处理好的事务;步骤11,任务管理模块1062在应用事务时会检查是否具有并发应用的标志,如果有该标志,则需要检查该事务所包含的SQL操作数是否超过了系统定义的并发阈值;步骤12,如果也符合并发要求,则按阈值对事务进行分割,从而确定并发应用该事务的需要的应用任务数。
步骤13,向事务控制模块1064获取事务的XID;步骤14,事务控制模块1064根据OLAP数据源里维护的信息为事务分配XID;步骤15,将XID返回给任务管理模块1062;步骤16,任务管理模块1062将创建一个XA的本地事务;步骤17,启动这些任务;步骤18,将需要进行的操作加入该XIDA标识的事务,即在启动任务时,SAM会把XA事务的标识(XID)和该任务将要执行的SQL操作传给每一个任务;步骤19,按顺序应用这些SQL操作,步骤20,等待这些任务执行完成;步骤21,所有任务执行完成后通知任务管理模块1062;步骤22,任务管理模块1062向事务控制模块1064提交XA本地事务,完成本轮增量同步的数据应用;步骤23,所有任务完成后SAM将释放任务资源并为下一个事务的应用做好准备。
图3示出了根据本发明的实施例的增量数据操作语句的并发应用装置的框图。
如图3所示,根据本发明的实施例的增量数据操作语句的并发应用装置300,用于将应用于第一数据源的增量数据操作语句同步应用于第二数据源,包括:任务确定单元302,从所述第一数据源中获取增量数据操作语句,将所述增量数据操作语句汇总成事务,根据所述事务中的增量数据操作语句的数量计算所需的并发任务数,为每个并发任务分配相应的增量数据操作语句;创建单元304,获取本地事务的标识并创建跨连接所述第二数据源的所述本地事务,创建所需的并发任务;应用单元306,将所述本地事务的标识和所述并发任务对应的增量数据操作语句集合传送至所述并发任务并启动所述并发任务,以执行相应的所述增量数据操作语句的并发应用,在全部所述并发任务成功执行结束时,提交所述第二数据源的所述本地事务。
在上述技术方案中,优选地,所述应用单元306还可以包括:资源释放模块3062,在提交所述第二数据源的所述本地事务后,释放全部所述并发任务的资源,等待处理下一个汇总成的所述事务。
在上述技术方案中,优选地,所述任务确定单元302还可以包括:第一判断模块3022,在汇总所述事务时,判断所述事务中的增量数据操作语句是否属于同一操作属性(所述事务所包含的数据操作语句全部是插入操作或者全部是删除操作),若所述增量数据操作语句属于同一操作属性,则为所述事务设置可进行并发应用的标志;第二判断模块3024,若判断出所述事务具有所述标志,则检查所述事务包含的增量数据操作语句的数量,若所述增量数据操作语句的数量超过阈值,则根据所述阈值拆分所述事务,以确定所需的并发任务数。
在上述技术方案中,优选地,所述创建单元304从所述第二数据源维护的标识表获取最新标识的值,将所述最新标识的值加一后作为创建的所述本地事务的标识的值,并将创建的所述本地事务的标识更新至所述标识表,在所述第二数据源中保存本地事务的所述标识表。通过这种机制来保证本地事务标识的全局唯一性。
在上述技术方案中,优选地,所述操作属性可以包括插入操作和删除操作;所述创建单元基于XA接口规范创建所述本地事务;所述第一数据源为OLTP数据源,所述第二数据源为OLAP数据源。
在此,应该理解,图3所示的增量数据操作语句的并发应用装置300可以是图1所示的增量数据操作语句的并发应用系统的一部分,例如,任务确定单元302可以例如增量数据提取模块102,并且任务确定单元302还集成了数据应用模块中任务管理子模块的分割事务的作用,即为并发任务分配相应SQL操作的作用,同理,创建单元304集成了数据应用模块的任务管理字模块中的创建本地事务以及创建并发任务的作用,而应用单元306集成了数据应用模块的执行并发任务的作用等。
图4示出了根据本发明的实施例的增量数据操作语句的并发应用方法的流程图。
如图4所示,根据本发明的实施例的增量数据操作语句的并发应用方法,用于将应用于第一数据源的增量数据操作语句同步应用于第二数据源,包括:步骤402,从第一数据源中获取增量数据操作语句,将增量数据操作语句汇总成事务,根据事务中的增量数据操作语句的数量计算所需的并发任务数,为每个并发任务分配相应的增量数据操作语句;步骤404,获取本地事务的标识并创建跨连接第二数据源的本地事务,创建所需的并发任务;步骤406,将本地事务的标识和并发任务对应的增量数据操作语句集合传送至并发任务并启动并发任务,以执行相应的增量数据操作语句的并发应用,在全部所述并发任务成功执行结束时,提交所述第二数据源的所述本地事务。
在上述技术方案中,优选地,步骤406还可以包括:在提交第二数据源的本地事务后,释放全部并发任务的资源,等待处理下一个汇总成的事务。
在上述技术方案中,优选地,步骤402可以包括:步骤4022,在汇总事务时,判断事务中的增量数据操作语句是否属于同一操作属性,若增量数据操作语句属于同一操作属性,则为事务设置可进行并发应用的标志;步骤4024,若判断出事务具有标志,则检查事务包含的增量数据操作语句的数量,若所述增量数据操作语句的数量超过阈值,则根据阈值拆分事务,以确定所需的并发任务数。
在上述技术方案中,优选地,在步骤404中,获取本地事务的标识的具体方法包括:在第二数据源中保存本地事务的标识表,从第二数据源中的标识表获取最新标识的值,将最新标识的值加一后作为创建的本地事务的标识的值,并将创建的本地事务的标识更新至标识表。通过这种机制来保证本地事务标识的全局唯一性。
在上述技术方案中,优选地,操作属性可以包括插入操作和删除操作;本地事务基于XA接口规范创建而成;第一数据源为OLTP数据源,第二数据源为OLAP数据源。
通过上述技术方案,可以通过使用XA规范来实现跨连接的事务,为多任务并发应用从第一数据源挖掘出来的事务打下基础。在应用SQL操作的同时协调每一个任务里的XA事务的分支,保证所有任务应用的所有的SQL操作都在同一个XA的事务里,并通过任务管理子模块来协调同步所有的任务,这样在提高了DI性能的同时还保证了数据同步的绝对一致性。
下面结合图5具体说明将从第一数据源中提取出的增量数据操作语句应用于第二数据源(在图5中为OLAP数据源)的过程。
如图5所示,步骤502,OLAP数据源及其他数据源初始化。
步骤504,在初始化后阻塞等待接收将要应用的OLTP数据源的事务。在此过程中也会监听系统事件,如果系统要求退出也会马上释放资源并退出(如图中的步骤522)。
步骤506,一旦收到一个OLTP数据源的事务,将计算应用它所需要的并发任务数。
步骤508,获取一个OLAP数据源本地事务的XID。
步骤510,然后创建一个以该XID为标识的并且基于XA规范的OLAP数据源本地事务。
步骤512,根据计算出的并发任务数创建所需要的任务。
步骤514,根据任务数据分割事务。
步骤516,执行分配的事务。一切就绪后启动这些任务,并传给任务所要加入的XA事务和所要应用的SQL操作集合,接下来将阻塞等待这些任务执行完成。
步骤518,在所有任务都执行成功后将提交OLAP的XA本地事务(如果这些任务没有应用成功,则会回滚所述本地事务)。
步骤520,这个XA的本地事务提交或回滚完成后,还要释放这些个任务的相关资源,然后接着去阻塞等待下一个要应用的OLTP事务,即,回到步骤504。
关于如何计算并发任务数据的流程,具体参见图6。
步骤602,检查OLTP数据源的事务是否可以并发应用(检查该打包的事务是否有允许并发应用的标志),如果不允许并发应用,则进入步骤610,将并发数设置为1,计算结束。
步骤604,如果该事务支持并发应用,则获取系统参数定义的并发阈值。
步骤606,比较事务所包含的SQL操作数与并发阈值的大小,如果小于系统所定义的并发阈值,则进入步骤610,将并发数设置为1,计算结束。
步骤608,如果该事务所包含的SQL操作数大于系统参数定义的并发阈值,则设置并发任务数为将SQL操作数除以并发阈值得到的值,如果不能整除则将并发任务数再加1,计算结束。
为了保证XID的全局唯一性,需要一个地方来独立的记录XID的使用情况,这里将使用OLAP数据源来记录XID,并通过事务的控制实现多个应用模块之间的同步,获取标识的具体过程如下:
步骤702,首先,需要打开一个OLAP数据源的本地事务(普通事务)。
步骤704,在OLAP数据源中获取记录的当前XID的值。
步骤706,将当前XID的值加1作为最新的XID反写进OLAP数据源中。
步骤708,提交OLAP数据源的本地事务。
步骤710,将最新的XID返回作为即将开始的XA本地事务的标识。
接下来要创建一个XA事务,一切就绪后就可以创建任务并把事务标识和将要应用的SQL操作集合传送给这些任务,主流程就等待所有的任务完成(同步机制各种编程语言都提供,在此不再赘述)。一个任务应用SQL操作的流程如图8所示:
步骤802,首先对输入信息做有效性检查;
步骤804,检查符合条件后,将本任务加入到XA本地事务中;
步骤806,接着开始按分配到的SQL操作的顺序应用这些SQL操作;
步骤808,所有的操作应用完成后需要通知本任务应用完成;
步骤810,最后返回应用的结果,本轮应用任务结束。
在任务应用流程中,只要顺序应用SQL操作即可,关键是要控制好事务与分支操作的边界。所有任务应用完成后,需要根据所有任务的结果决定是提交这个XA事务还是回滚这个XA事务。所有操作完成后就回去继续阻塞等待去应用下一个事务。
如图9和下表1所示,在采用了根据本发明的技术方案之后,可以大大提高数据的处理速度,减少数据处理时间。特别是在较大事务规模下,很明显地提高了数据处理效率。
表1
以上结合附图详细说明了根据本发明的技术方案,通过使用XA事务来实现跨连接的事务,为多任务并发应用从第一数据源挖掘出来的事务打下基础。在应用SQL操作的同时协调每一个任务里的XA事务的分支以及协调同步所有的任务,保证所有任务应用的所有的SQL操作都在同一个XA的事务里,这样在提高DI性能的同时还保证了数据同步的绝对一致性。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种增量数据操作语句的并发应用装置,用于将应用于第一数据源的增量数据操作语句同步应用于第二数据源,其特征在于,包括:
任务确定单元,从所述第一数据源中获取增量数据操作语句,将所述增量数据操作语句汇总成事务,根据所述事务中的增量数据操作语句的数量计算所需的并发任务数,为每个并发任务分配相应的增量数据操作语句;
创建单元,获取本地事务的标识并创建跨连接所述第二数据源的所述本地事务,创建所需的并发任务;
应用单元,将所述本地事务的标识和所述并发任务对应的增量数据操作语句集合传送至所述并发任务并启动所述并发任务,以执行相应的所述增量数据操作语句的并发应用,在全部所述并发任务成功执行结束时,提交所述第二数据源的所述本地事务。
2.根据权利要求1所述的增量数据操作语句的并发应用装置,其特征在于,所述应用单元还包括:
资源释放模块,在提交所述第二数据源的所述本地事务后,释放全部所述并发任务的资源,等待处理下一个汇总成的所述事务。
3.根据权利要求1所述的增量数据操作语句的并发应用装置,其特征在于,所述任务确定单元还包括:
第一判断模块,在汇总所述事务时,判断所述事务中的增量数据操作语句是否属于同一操作属性,若所述增量数据操作语句属于同一操作属性,则为所述事务设置可进行并发应用的标志;
第二判断模块,若判断出所述事务具有所述标志,则检查所述事务包含的增量数据操作语句的数量,若所述增量数据操作语句的数量超过阈值,则根据所述阈值拆分所述事务,以确定所需的并发任务数。
4.根据权利要求1所述的增量数据操作语句的并发应用装置,其特征在于,所述创建单元从所述第二数据源维护的标识表获取最新标识的值,将所述最新标识的值加一后作为创建的所述本地事务的标识的值,并将创建的所述本地事务的标识更新至所述标识表,在所述第二数据源中保存本地事务的所述标识表。
5.根据权利要求1至4中任一项所述的增量数据操作语句的并发应用装置,其特征在于,所述操作属性包括插入操作和删除操作;
所述创建单元基于XA接口规范创建所述本地事务;
所述第一数据源为OLTP数据源,所述第二数据源为OLAP数据源。
6.一种增量数据操作语句的并发应用方法,用于将应用于第一数据源的增量数据操作语句同步应用于第二数据源,其特征在于,包括:
步骤402,从所述第一数据源中获取增量数据操作语句,将所述增量数据操作语句汇总成事务,根据所述事务中的增量数据操作语句的数量计算所需的并发任务数,为每个并发任务分配相应的增量数据操作语句;
步骤404,获取本地事务的标识并创建跨连接所述第二数据源的所述本地事务,创建所需的并发任务;
步骤406,将所述本地事务的标识和所述并发任务对应的增量数据操作语句集合传送至所述并发任务并启动所述并发任务,以执行相应的所述增量数据操作语句的并发应用,在全部所述并发任务成功执行结束时,提交所述第二数据源的所述本地事务。
7.根据权利要求6所述的增量数据操作语句的并发应用方法,其特征在于,所述步骤406还包括:在提交所述第二数据源的所述本地事务后,释放全部所述并发任务的资源,等待处理下一个汇总成的所述事务。
8.根据权利要求6所述的增量数据操作语句的并发应用方法,其特征在于,所述步骤402包括:
步骤4022,在汇总所述事务时,判断所述事务中的增量数据操作语句是否属于同一操作属性,若所述增量数据操作语句属于同一操作属性,则为所述事务设置可进行并发应用的标志;
步骤4024,若判断出所述事务具有所述标志,则检查所述事务包含的增量数据操作语句的数量,若所述增量数据操作语句的数量超过阈值,则根据所述阈值拆分所述事务,以确定所需的并发任务数。
9.根据权利要求6所述的增量数据操作语句的并发应用方法,其特征在于,在所述步骤404中,获取本地事务的标识的具体方法包括:在所述第二数据源中保存本地事务的标识表,从所述第二数据源中的所述标识表获取最新标识的值,将所述最新标识的值加一后作为创建的所述本地事务的标识的值,并将创建的所述本地事务的标识更新至所述标识表。
10.根据权利要求6至9中任一项所述的增量数据操作语句的并发应用方法,其特征在于,所述操作属性包括插入操作和删除操作;
所述本地事务基于XA接口规范创建而成;
所述第一数据源为OLTP数据源,所述第二数据源为OLAP数据源。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201110284588 CN102306200B (zh) | 2011-09-22 | 2011-09-22 | 增量数据操作语句的并发应用装置和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201110284588 CN102306200B (zh) | 2011-09-22 | 2011-09-22 | 增量数据操作语句的并发应用装置和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102306200A true CN102306200A (zh) | 2012-01-04 |
CN102306200B CN102306200B (zh) | 2013-03-27 |
Family
ID=45380062
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201110284588 Active CN102306200B (zh) | 2011-09-22 | 2011-09-22 | 增量数据操作语句的并发应用装置和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102306200B (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103064964A (zh) * | 2012-12-29 | 2013-04-24 | 天津南大通用数据技术有限公司 | 一种支持分布式事务的数据库的连接方法 |
CN103631647A (zh) * | 2013-12-06 | 2014-03-12 | 北京京东尚科信息技术有限公司 | 一种实现分布式事务的方法和装置 |
CN103677771A (zh) * | 2012-09-06 | 2014-03-26 | 阿里巴巴集团控股有限公司 | 一种并发事务的处理方法和装置 |
CN103677968A (zh) * | 2012-09-07 | 2014-03-26 | 腾讯科技(深圳)有限公司 | 事务处理方法、事务协调器装置、事务参与者装置及系统 |
CN104199976A (zh) * | 2014-09-24 | 2014-12-10 | 浪潮通用软件有限公司 | 一种融合原生事务和逻辑事务的方法 |
CN107423390A (zh) * | 2017-07-21 | 2017-12-01 | 上海德拓信息技术股份有限公司 | 一种基于oltp‑olap混合关系型数据库系统内部的数据实时同步算法 |
CN108089982A (zh) * | 2017-12-08 | 2018-05-29 | 北京小度信息科技有限公司 | 测试方法、装置、电子设备及计算机可读存储介质 |
CN110532069A (zh) * | 2019-08-22 | 2019-12-03 | 北京宝兰德软件股份有限公司 | 一种分布式事务提交方法及装置 |
CN112559603A (zh) * | 2021-02-23 | 2021-03-26 | 腾讯科技(深圳)有限公司 | 特征提取方法、装置、设备及计算机可读存储介质 |
CN112765126A (zh) * | 2020-12-31 | 2021-05-07 | 金蝶软件(中国)有限公司 | 数据库事务的管理方法、装置、计算机设备和存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06161775A (ja) * | 1992-11-19 | 1994-06-10 | Nippon Telegr & Teleph Corp <Ntt> | ソースモジュール並行コンパイル装置 |
US5870761A (en) * | 1996-12-19 | 1999-02-09 | Oracle Corporation | Parallel queue propagation |
US6801938B1 (en) * | 1999-06-18 | 2004-10-05 | Torrent Systems, Inc. | Segmentation and processing of continuous data streams using transactional semantics |
CN1575464A (zh) * | 1999-06-18 | 2005-02-02 | 奔流系统公司 | 利用事务语义法分段和处理连续数据流 |
US20050193041A1 (en) * | 2004-02-27 | 2005-09-01 | Serge Bourbonnais | Parallel apply processing in data replication with preservation of transaction integrity and source ordering of dependent updates |
CN101784988A (zh) * | 2007-08-30 | 2010-07-21 | 国际商业机器公司 | 用以提高事务处理吞吐量的事务聚集 |
-
2011
- 2011-09-22 CN CN 201110284588 patent/CN102306200B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06161775A (ja) * | 1992-11-19 | 1994-06-10 | Nippon Telegr & Teleph Corp <Ntt> | ソースモジュール並行コンパイル装置 |
US5870761A (en) * | 1996-12-19 | 1999-02-09 | Oracle Corporation | Parallel queue propagation |
US6801938B1 (en) * | 1999-06-18 | 2004-10-05 | Torrent Systems, Inc. | Segmentation and processing of continuous data streams using transactional semantics |
CN1575464A (zh) * | 1999-06-18 | 2005-02-02 | 奔流系统公司 | 利用事务语义法分段和处理连续数据流 |
US20050193041A1 (en) * | 2004-02-27 | 2005-09-01 | Serge Bourbonnais | Parallel apply processing in data replication with preservation of transaction integrity and source ordering of dependent updates |
CN101784988A (zh) * | 2007-08-30 | 2010-07-21 | 国际商业机器公司 | 用以提高事务处理吞吐量的事务聚集 |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103677771A (zh) * | 2012-09-06 | 2014-03-26 | 阿里巴巴集团控股有限公司 | 一种并发事务的处理方法和装置 |
CN103677771B (zh) * | 2012-09-06 | 2017-01-18 | 阿里巴巴集团控股有限公司 | 一种并发事务的处理方法和装置 |
CN103677968A (zh) * | 2012-09-07 | 2014-03-26 | 腾讯科技(深圳)有限公司 | 事务处理方法、事务协调器装置、事务参与者装置及系统 |
CN103677968B (zh) * | 2012-09-07 | 2017-11-10 | 腾讯科技(深圳)有限公司 | 事务处理方法、事务协调器装置、事务参与者装置及系统 |
CN103064964A (zh) * | 2012-12-29 | 2013-04-24 | 天津南大通用数据技术有限公司 | 一种支持分布式事务的数据库的连接方法 |
CN103064964B (zh) * | 2012-12-29 | 2016-04-20 | 天津南大通用数据技术股份有限公司 | 一种支持分布式事务的数据库的连接方法 |
CN103631647A (zh) * | 2013-12-06 | 2014-03-12 | 北京京东尚科信息技术有限公司 | 一种实现分布式事务的方法和装置 |
CN104199976A (zh) * | 2014-09-24 | 2014-12-10 | 浪潮通用软件有限公司 | 一种融合原生事务和逻辑事务的方法 |
CN107423390A (zh) * | 2017-07-21 | 2017-12-01 | 上海德拓信息技术股份有限公司 | 一种基于oltp‑olap混合关系型数据库系统内部的数据实时同步算法 |
CN107423390B (zh) * | 2017-07-21 | 2020-10-27 | 上海德拓信息技术股份有限公司 | 一种基于oltp-olap混合关系型数据库系统内部的数据实时同步方法 |
CN108089982A (zh) * | 2017-12-08 | 2018-05-29 | 北京小度信息科技有限公司 | 测试方法、装置、电子设备及计算机可读存储介质 |
CN108089982B (zh) * | 2017-12-08 | 2020-12-01 | 北京小度信息科技有限公司 | 测试方法、装置、电子设备及计算机可读存储介质 |
CN110532069A (zh) * | 2019-08-22 | 2019-12-03 | 北京宝兰德软件股份有限公司 | 一种分布式事务提交方法及装置 |
CN110532069B (zh) * | 2019-08-22 | 2021-06-29 | 北京宝兰德软件股份有限公司 | 一种分布式事务提交方法及装置 |
CN112765126A (zh) * | 2020-12-31 | 2021-05-07 | 金蝶软件(中国)有限公司 | 数据库事务的管理方法、装置、计算机设备和存储介质 |
CN112559603A (zh) * | 2021-02-23 | 2021-03-26 | 腾讯科技(深圳)有限公司 | 特征提取方法、装置、设备及计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN102306200B (zh) | 2013-03-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102306200B (zh) | 增量数据操作语句的并发应用装置和方法 | |
AU648263B2 (en) | Portable and dynamic distributed applications architecture | |
EP3120261B1 (en) | Dependency-aware transaction batching for data replication | |
US7805341B2 (en) | Extraction, transformation and loading designer module of a computerized financial system | |
US7953891B2 (en) | Systems and methods for scheduling data flow execution based on an arbitrary graph describing the desired data flow | |
US6490590B1 (en) | Method of generating a logical data model, physical data model, extraction routines and load routines | |
CN102073540B (zh) | 分布式事务提交方法和装置 | |
US7930432B2 (en) | Systems and methods for distributing a workplan for data flow execution based on an arbitrary graph describing the desired data flow | |
CN103617176B (zh) | 一种实现多源异构数据资源自动同步的方法 | |
EP2891994A1 (en) | Method for achieving automatic synchronization of multisource heterogeneous data resources | |
US20110161281A1 (en) | Distributed Transaction Management in a Distributed Shared Disk Cluster Environment | |
WO2000046700A1 (en) | Method and apparatus for accessing data | |
WO2012174767A1 (zh) | 一种基于orm架构的高效数据库访问的实现方法及装置 | |
CN102508834A (zh) | 基于消息的大型事务应用装置和方法 | |
CN101807210A (zh) | 一种数据库间数据同步的方法、系统及设备 | |
CN104899295A (zh) | 一种异构数据源数据关联分析方法 | |
CN102289513A (zh) | 获取虚拟机内部文件的方法及系统 | |
CN102981823A (zh) | 一种领域驱动开发插件系统 | |
CN104503751B (zh) | 基于soa的数据源切换方法和基于soa的数据源切换系统 | |
CN112214453B (zh) | 大规模工业数据压缩存储方法、系统及介质 | |
CN112000649B (zh) | 一种基于map reduce的增量数据同步的方法和装置 | |
CN102722368B (zh) | 一种基于文档树和消息泵的插件式软件设计方法 | |
CN105205178A (zh) | 一种多进程访问内存数据库系统 | |
CN1704936A (zh) | 一种数据库间的数据转换或同步方法 | |
CN101046757A (zh) | 一种备份方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C56 | Change in the name or address of the patentee |
Owner name: YONYOU NETWORK TECHNOLOGY CO., LTD. Free format text: FORMER NAME: UFIDA SOFTWARE CO., LTD. |
|
CP03 | Change of name, title or address |
Address after: 100094 Haidian District North Road, Beijing, No. 68 Patentee after: Yonyou Network Technology Co., Ltd. Address before: 100094 Beijing city Haidian District North Road No. 68, UFIDA Software Park Patentee before: UFIDA Software Co., Ltd. |