CN111026735A - 一种数据传输方法、装置、设备及介质 - Google Patents
一种数据传输方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN111026735A CN111026735A CN201911261581.3A CN201911261581A CN111026735A CN 111026735 A CN111026735 A CN 111026735A CN 201911261581 A CN201911261581 A CN 201911261581A CN 111026735 A CN111026735 A CN 111026735A
- Authority
- CN
- China
- Prior art keywords
- data
- database
- plug
- plugin
- acquiring
- 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/21—Design, administration or maintenance of databases
- G06F16/214—Database migration support
-
- 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/21—Design, administration or maintenance of databases
- G06F16/219—Managing data history or versioning
-
- 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/25—Integrating or interfacing systems involving database management systems
- G06F16/258—Data format conversion from or to a database
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供的数据传输方法,包括:根据第一数据库的数据类型获取第一插件,第一插件用于读取第一数据库中的第一数据;根据第二数据库的数据类型获取第二插件,第二插件用于向第二数据库写入第二数据,第二数据库与第一数据库为不同类型的数据库;根据第一数据库的数据类型和第二数据库的数据类型获取第三插件,第三插件用于将第一数据转化为第二数据并发送给第二插件。本申请还提供一种装置、设备及介质,通过设置插件将异构数据库数据传输过程中的读取、转格式和写入步骤解耦,从而能够根据数据库类型获取插件,实现异构数据库之间的数据传输,减少代码开发量,拓展上下游类型的支持能力,提高了数据传输的实现效率。
Description
技术领域
本发明涉及计算机技术领域,更具体地说,涉及一种数据传输方法、装置、设备及介质。
背景技术
随着云计算能力及云厂商平台即服务(platform as a service,PaaS)能力的不断发展,数据传输服务(data transmission service,DTS)的数据传输功能不仅仅局限服务于某一类型的数据库上云需求,在异构数据库迁移等场景的需求也越来越广泛。例如,许多产品需要统计每日数据库的数据变更以便生成日报,或者在不同数据库之间同步数据,或者将数据库本地日志备份到分布式存储平台等等。
现有技术中,数据传输任务程序与具体业务耦合严重,在异构数据库同步方面缺少通用能力,导致业务需求新增时,拓展性和重用性都存在问题。由于数据传输与写入的代码耦合在一起,其中任何一部分发生改变,就需要重写传输程序,代码复用程度低。例如,现有从MySQL向MySQL传输数据的程序,如果新来了需要从MongoDB向MySQL传输数据的需求,或是从Oracle向MySQL传输数据的需求,就需要开发一个新的程序来实现。
从而导致不同类型的异构数据库之间数据传输效率较低。
发明内容
有鉴于此,为解决上述问题,本发明提供的技术方案如下:
一种数据传输方法,包括:
根据第一数据库的数据类型获取第一插件,该第一插件用于读取该第一数据库中的第一数据;
根据第二数据库的数据类型获取第二插件,该第二插件用于向该第二数据库写入第二数据,该第二数据库与该第一数据库为不同类型的数据库,该第二数据与该第一数据为不同类型的数据;
根据该第一数据库的数据类型和该第二数据库的数据类型获取第三插件,该第三插件用于将该第一插件读取的该第一数据转化为该第二数据并发送给该第二插件。
一种数据传输装置,包括:
第一获取单元,该第一获取单元用于根据第一数据库的数据类型获取第一插件,该第一插件用于读取该第一数据库中的第一数据;
第二获取单元,该第二获取单元用于根据第二数据库的数据类型获取第二插件,该第二插件用于向该第二数据库写入第二数据,该第二数据库与该第一数据库为不同类型的数据库,该第二数据与该第一数据为不同类型的数据;
第三获取单元,该第三获取单元用于根据该第一数据库的数据类型和该第二数据库的数据类型获取第三插件,该第三插件用于将该第一获取单元获取的该第一插件读取的该第一数据转化为该第二数据并发送给该第二获取单元获取的该第二插件。
可选地,该装置还包括:
第四获取单元,该第四获取单元用于获取配置文件,该配置文件中记录有该第一数据库和该第二数据库的数据类型;
该第一获取单元还用于:
根据该第四获取单元获取的该配置文件中记录的该第一数据库的数据类型获取该第一插件;
该第二获取单元还用于:
根据该第四获取单元获取的该配置文件中记录的该第二数据库的数据类型获取该第二插件;
该第三获取单元还用于:
根据该第四获取单元获取的该配置文件中记录的该第一数据库的数据类型和该第二数据库的数据类型获取该第三插件。
可选地,该装置还包括:
第一转化单元,该第一转化单元用于通过该第一插件将该第一数据转化为通用格式数据,该通用格式数据为该第二插件和该第三插件可读取的格式;
第二转化单元,该第二转化单元用于通过该第三插件将该第一转化单元转化的该通用格式数据转化为该第二数据;
写入单元,该写入单元用于通过该第二插件将该第二转化单元转化的该第二数据写入该第二数据库。
可选地,该装置还包括第五获取单元,该第五获取单元用于:获取数据传输服务DTS请求;
该第一获取单元还用于:
根据该第五获取单元获取的该DTS请求,启动对该第一插件的获取。
可选地,该第一转化单元还用于:
通过该第一插件启动第一线程,该第一线程用于从该第一数据库中导出该第一数据;
将该第一数据转化为该通用格式数据后放入第一队列中;
通过该第一插件启动第二线程;
通过该第二线程从该第一队列中调用该通用格式数据;
通过该第一插件将该通用格式数据发送给该第三插件。
可选地,该装置还包括第一执行单元,该第一执行单元用于:
对该第一插件获取的该第一数据标记第一版本号,该第一版本号为全局唯一的版本号;
将该第一版本号发送给进度控制器,该进度控制器用于记录该第一数据与该第一版本号的对应关系;
当该第一数据被该第三插件转化为该第二数据,且被该第二插件写入该第二数据库之后,在该进度控制器中将该第一版本号所对应的数据记录为已传输;
该第二插件向该第二数据库写入该第二数据时,从该进度控制器中获取该第二数据所对应的第二版本号,该第二版本号为全局唯一的版本号;
若该第二版本号在该进度控制器中被记录为已传输,则该第二插件不向该第二数据库写入该第二数据。
可选地,该第一执行单元还用于:
将该进度控制器中记录为已传输的数据保存在该进度控制器中;
将该进度控制器中尚未记录为已传输的数据保存在缓存中。
可选地,该第一数据库与该第二数据库均为数据库***,该装置还包括第二执行单元,该第二执行单元用于:
通过该第一插件获取该第一数据的数据库主键或唯一键;
通过该第二插件向该第二数据库写入第二数据时,若该第二数据库所对应的主键或唯一键已经写入该第二数据库,则该第二插件不再写入该第二数据。
可选地,该第一数据库与该第二数据库均为分布式文件***或消息队列***,该装置还包括第三执行单元,该第三执行单元用于:
通过该第一插件在该第一数据上附带该第一数据的第一偏移位置信息,该第一偏移位置信息用于记录该第一数据在磁盘上存放时相对于文件开头的偏移;
通过该第三插件将该第一数据转化为第二数据,其中,保留该第二数据与该第一偏移位置的对应关系;
通过该第二插件获取至少一个第二数据的第一偏移位置信息,当存在重复的第一偏移信息时,剔除重复的第一偏移信息所对应的第二数据。
可选地,该装置还包括第四执行单元,该第四执行单元用于:当检测到该第一插件的读取发生错误,或检测到该第二插件的写入发生错误时,重启该第一插件与该第二插件。
可选地,该第四执行单元还用于:
当该第一插件与该第二插件在重启后依然无法正常工作时,生成错误码;
根据该错误码获取预设的恢复策略,该错误码与该恢复策略的对应关系为预设的关系;
根据该恢复策略对该第一插件及该第二插件的传输进行恢复。
可选地,该装置还包括第五执行单元,该第五执行单元用于:当该第一数据库发生主从切换时,获取主从切换后的该第一数据库的第一类型信息,该第一类型信息用于记录该第一数据库的类型;
获取与该第一类型信息对应的第一插件。
一种计算机设备所述计算机设备包括:交互装置、输入/输出(I/O)接口、处理器和存储器,该存储器中存储有程序指令;该交互装置用于获取用户输入的操作指令;该处理器用于执行存储器中存储的程序指令,执行如上述任意一项所述的方法。
一种计算机可读存储介质,包括指令,当该指令在计算机设备上运行时,使得该计算机设备执行如上述任意一项所述的方法。
本申请实施例所提供的数据传输方法,包括:根据第一数据库的数据类型获取第一插件,第一插件用于读取第一数据库中的第一数据;根据第二数据库的数据类型获取第二插件,第二插件用于向第二数据库写入第二数据,第二数据库与第一数据库为不同类型的数据库,第二数据与第一数据为不同类型的数据;根据第一数据库的数据类型和第二数据库的数据类型获取第三插件,第三插件用于将第一插件读取的第一数据转化为第二数据并发送给第二插件。通过设置插件的方式,将异构数据库数据传输过程中的读取、转格式和写入步骤解耦,从而能够根据不同的数据库类型获取不同的插件,以实现异构数据库之间的数据传输,从而减少了代码的开发量,拓展上下游类型的支持能力,提高了数据传输的实现效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例所提供的数据传输方法的一个实施例的流程图;
图2为本申请实施例所提供的数据传输方法的另一个实施例的流程图;
图3为本申请实施例所提供的数据传输方法的另一个实施例的示意图;
图4为本申请实施例所提供的数据传输方法的另一个实施例的示意图;
图5为本申请实施例所提供的数据传输方法的另一个实施例的流程图;
图6为本申请实施例所提供的数据传输方法的另一个实施例的流程图;
图7为本申请实施例所提供的数据传输方法的另一个实施例的流程图;
图8为本申请实施例所提供的数据传输方法的另一个实施例的流程图;
图9为本申请实施例所提供的数据传输方法的另一个实施例的流程图;
图10为本申请实施例所提供的数据传输方法的另一个实施例的流程图;
图11为本申请实施例所提供的计算机设备的示意图;
图12为本申请实施例所提供的数据传输装置的示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
随着云计算能力及云厂商平台即服务(platform as a service,PaaS)能力的不断发展,数据传输服务(data transmission service,DTS)的数据传输功能不仅仅局限服务于某一类型的数据库上云需求,在异构数据库迁移等场景的需求也越来越广泛。例如,许多产品需要统计每日数据库的数据变更以便生成日报,或者在不同数据库之间同步数据,或者将数据库本地日志备份到分布式存储平台等等。
当前,数据传输任务程序与具体业务耦合严重,在异构数据库同步方面缺少通用能力,导致业务需求新增时,拓展性和重用性都存在问题。由于数据传输与写入的代码耦合在一起,其中任何一部分发生改变,就需要重写传输程序,代码复用程度低。例如,现有从MySQL向MySQL传输数据的程序,如果新来了需要从MongoDB向MySQL传输数据的需求,或是从Oracle向MySQL传输数据的需求,就需要开发一个新的程序来实现。
从而导致不同类型的异构数据库之间数据传输效率较低。
因此,为了解决上述问题,本申请实施例提供一种数据传输方法,针对DTS的传输需求,将数据传输任务分为三部分:读取部分、转格式部分和写入部分,提出一种具备通用能力的DTS服务产品,即解耦合上下源,可快速拓展上下游类型的支持能力。为便于理解,以下结合附图,对本申请实施例所提供的方法进行详细说明。
请参阅图1,如图1所示,本申请实施例所提供的数据传输方法的实施例一包括以下步骤。
101、根据第一数据库的数据类型获取第一插件。
本实施例中,第一插件用于读取第一数据库中的第一数据,其中,该第一插件可以是一段运行在服务器中的代码,服务器通过调用该段代码实现对第一插件的获取,该第一数据库为导出数据的数据库。
需要说明的是,本申请实施例所提供的方法可以由服务器来执行,也可以由终端来执行,对此本申请实施例并不进行限定,作为一种举例,本申请实施例中以服务器为执行主体为例来说明。
102、根据第二数据库的数据类型获取第二插件。
本实施例中,第二插件用于向第二数据库写入第二数据,第二数据库与第一数据库为不同类型的数据库,即第一数据库与第二数据库为异构数据库,第二数据与第一数据为不同类型的数据,第二插件可以是一段运行在服务器中的代码,服务器通过调用该段代码实现对第二插件的获取,该第二数据库为写入数据的数据库。
103、根据第一数据库的数据类型和第二数据库的数据类型获取第三插件。
本实施例中,第三插件用于将第一插件读取的第一数据转化为第二数据并发送给第二插件。从而使得第二插件可以将转格式之后的第二数据写入第二数据库中,从而实现了第一数据库和第二数据库之间作为异构数据库的数据传输,可选地,第三插件可以是一段运行在服务器中的代码,服务器通过调用该段代码实现对第三插件的获取。
本实施例中,通过解耦的方式,将数据传输任务分为三个插件,其中,第一插件为读取插件,第二插件为写入插件,第三插件为转格式插件。例如有A、B、C三个读取插件,D、E、F三个写入插件,不考虑转格式插件的变化,那么理论上就可以支持A到D、A到E、A到F、B到D、…以及C到F总共9种不同的数据传输任务,而且只要新实现一种读取插件或写入插件,所支持的传输任务类型就会成倍增长。通过本申请所提供的方法,当数据传输任务因为需求变化需要改变数据源(即第一数据库)或改变数据目的地(即第二数据库)的类型时,只需要开发对应的读取插件或写入插件(如对应插件已存在则可以直接使用)即可实现,从而减少了代码开发量,提升了数据传输的效率。
需要说明的是,具体工作中,服务器是基于终端的请求,发起异构数据库的数据传输的,终端在向服务器发送请求消息时,会附带配置文件,该配置文件中所记录的内容用于指示服务器进行数据传输,例如,该配置文件中包括第一数据库与第二数据库的标识,从而使得服务器知晓,本次数据传输任务是将第一数据库的数据传输到第二数据库中,进一步地,该配置文件中还包括第一数据库和第二数据库的数据类型,从而使得服务器能够根据配置文件中的配置类型获取对应的插件,为便于理解,以下结合附图,对本种情况进行详细说明。
请参阅图2,如图2所示,本申请实施例所提供的数据传输方法的实施例二包括以下步骤。
201、获取配置文件。
本实施例中,该配置文件可以是由终端生成并发送给服务器的,也可以是终端自己生成后由终端执行,对此本申请实施例并不进行限定,配置文件中记录信息至少包括第一数据库和第二数据库的数据类型,可选地,还可以包括数据库的地址信息和各个插件的端口信息等,对此本申请实施例并不进行限定。
202、根据配置文件中记录的第一数据库的数据类型获取第一插件。
本实施例中,服务器中预置有不同类型的数据库所对应的读取插件,因此,根据配置文件中所记录的数据源的数据类型(即第一数据库的数据类型),即可获取与该数据源对应的读取插件。
203、根据配置文件中记录的第二数据库的数据类型获取第二插件。
本实施例中,服务器中预置有不同类型的数据库所对应的写入插件,因此,根据配置文件中所记录的数据目的地的数据类型(即第二数据库的数据类型),即可获取与该数据目的地对应的写入插件。
204、根据配置文件中记录的第一数据库的数据类型和第二数据库的数据类型获取第三插件。
本实施例中,根据配置文件中所记录的数据源与数据目的地的数据类型(即第一数据库的数据类型和第二数据库的数据),获取预置的转格式插件,用于将数据源的数据格式转换为数据目的地的数据格式。
需要说明的是,在DTS***的***架构可以如图3所示,终端301向服务器302的交互单元3021发送任务请求,该任务可以是创建任务、终止任务或查询任务,该任务请求中包括配置文件,即完成上述步骤201,之后交互单元3021委托服务器的工作引擎3022获取相应插件,工作引擎3022根据插件执行上述步骤202至203,得到读取插件、转格式插件和写入插件,之后工作引擎3022将上述三个插件配置为工作进程3023,工作进程在执行过程中,从数据源303读取数据并写入数据目的地304中,从而完成异构数据库之间的数据传输。
进一步地,请参阅图4,图4示出了本申请实施例所提供的数据传输方法从任务建立到执行的过程。
如图4所示,工作引擎401按照上述方式配置获取到工作进程402(即上述工作进程3023),该工作进程402中包含工作引擎401根据配置文件获取的读取插件、转格式插件和写入插件,之后工作引擎401将工作进程402加入到等待队列403中,若等待队列不为空且当前有空闲的工作线程时,工作线程会从队列中取出一个工作进程402开始执行,执行过程中,从数据源404获取数据,依次经过读取插件4021、转格式插件4022及写入插件4023的处理后,写入数据目的地405。从而实现本申请实施例所提供的数据传输方法。
上述实施例一和实施例二对本申请实施例所提供的数据传输方法中的插件获取方式进行了详细说明。以下介绍实际工作过程中,各个插件的具体使用方式。
请参阅图5,如图5所示,本申请实施例所提供的数据传输方法的实施例三包括以下步骤。
501、获取数据传输服务DTS请求。
本实施例中,本步骤的具体实现方式可以是上述图3中记载的,终端301向服务器302的交互单元3021发送任务请求,该任务请求中包括数据传输服务DTS请求,从而使得服务器可以基于该数据传输服务DTS请求,触发后续步骤的执行。
502、根据DTS请求,启动对第一插件的获取。
本实施例中,DTS请求触发了服务器执行本申请实施例所提供的数据传输方法,从而服务器可以通过如上述步骤101或202所记载的方法获取第一插件。
503、通过第一插件将第一数据转化为通用格式数据。
本实施例中,通用格式数据为第二插件和第三插件可读取的格式。可选地,步骤503具体可以通过以下步骤实现。
通过第一插件启动第一线程,第一线程用于从第一数据库中导出第一数据。
本实施例中,通过第一线程实现对第一数据库的读取,从而导出数据源的数据。
将第一数据转化为通用格式数据后放入第一队列中。
本实施例中,对于从数据源中读取出的数据,转化为通用格式数据后放入第一队列中,以便于后续步骤的读取。
通过所述第一插件启动第二线程。
本实施例中,第一插件启动第二线程,该第二线程为独立与第一线程的线程,两个线程之间互相独立工作不受干扰。
通过第二线程从第一队列中调用通用格式数据。
本实施例中,通过第一插件创建的第二线程从第一队列中获取通用格式数据。从而第一插件通过两个线程,分别实现了数据源数据的读取和数据格式转化。
504、通过第一插件将通用格式数据发送给第三插件。
本实施例中,第一插件将通用格式数据发送给第三插件,以使得第三插件执行后续步骤。
505、通过第三插件将通用格式数据转化为第二数据。
本实施例中,通用格式数据为第三插件能够读取的数据类型,因此第三插件在读取到通用格式的数据后将其转化为能够写入第二数据库的第二数据,从而实现数据格式的转化。
506、通过第三插件将第二数据发送给第二插件。
本实施例中,第三插件将第二数据发送给第二插件,以使得第二插件执行后续步骤。该第二数据为第一数据经过转格式之后的数据。
507、通过第二插件将第二数据写入第二数据库。
本实施例中,第二插件获取到第二数据后,将第二数据写入第二数据库中,从而实现了异构数据库之间的数据传输。
本实施例中,结合DTS的具体使用场景,根据数据源和数据目的地的情况,对读取插件、转格式插件和写入插件进行调用,从而实现了本申请实施例所提供的数据传输方法对于异构数据库的数据传输。
上述实施例一至实施例三对本申请所提供的数据传输方法中,插件的获取方式和使用方式进行了介绍,相对于当前技术中将数据传输代码耦合在传输任务程序的方式,本申请通过设置独立插件的方式,将数据传输任务从任务程序中解耦,实现了更加灵活的配置方式,然而,这种解耦的方式在保证数据传输的可靠能力时,会面临一些问题。
具体地,对于在线分析、实时容灾等长期通过DTS进行数据同步的场景,要求DTS传输严格的保证消息不丢失。但是,由于***升级、进程崩溃、机器故障、网络故障等时有发生,这些运维操作或故障很可能导致DTS传输模块发生故障。
为了保证传输的可靠性,当前技术主要采取如下方案。
可以将数据传输过程中所传输的数据流抽象成上游顺序产生的一系列消息,该上游指的是读取数据源的读取侧,每一条消息对应一个独一无二的偏移位置,该偏移位置具体为消息文件在磁盘上存放时相对于文件开头的偏移。当一个DTS传输任务启动时,会指定上游的某个偏移位置,然后传输该位置之后的所有消息,并在传输的过程中定时更新上游偏移位置,以便下次启动时续传。那么要保证任务重启时数据不丢失,实际上就是保证任务运行中记录的偏移位置不能超前于实际传输到下游的消息对应的偏移位置。
然而,由于本申请实施例所提供的数据传输方法中,上下游通过插件形式实现解耦的***,上游读取插件不知道下游写入插件是否把消息写入到目的地数据库;下游的写入插件又不知道自己传递成功的消息对应的上游偏移位置,因此无法由插件自身控制偏移进度的保存。其次,对于并行传输模式,有可能偏移位置靠后的消息被先写入到下游,而偏移位置靠前的消息还未送达。
因此,为了解决上述问题,本申请实施例提供一种具体的解决方法,为便于理解,以下结合附图进行详细说明。
请参阅图6,如图6所示,基于上述步骤中已经获取到的插件,在保证传输可靠性的过程中,本申请实施例所提供的数据传输方法的实施例四包括以下步骤。
601、对第一插件获取的第一数据标记第一版本号。
本实施例中,第一版本号为全局唯一的版本号,当第一插件从第一数据库(即数据源)读取数据后,对读取到的第一数据标记第一版本号,从而该第一版本号可以独一无二地标记该第一数据,使得第一数据与其他数据相区分。具体实施过程中,第一数据的数据粒度可以由用户定义,对此并不进行限定。
602、将第一版本号发送给进度控制器。
本实施例中,进度控制器用于记录第一数据与第一版本号的对应关系,可选地考该进度控制器可以为多版本并发控制(multi-version concurrency control,MVCC)进度控制器。
603、当第一数据被第三插件转化为第二数据,且被第二插件写入第二数据库之后,在进度控制器中将第一版本号所对应的数据记录为已传输。
本实施例中,进度控制器用于对以写入第二数据库(数据目的地)的数据进行记录,通过将版本号记录为已传输的方式,即可知晓该版本号对应的数据已经被写入,例如,第一版本号被记录为已传输时,即可确定第一版本号对应的第一数据已经写入到第二数据库中。
604、第二插件向第二数据库写入第二数据时,从进度控制器中获取第二数据所对应的第二版本号。
605、若第二版本号在进度控制器中被记录为已传输,则第二插件不向第二数据库写入第二数据。
本实施例中,第二版本号为全局唯一的版本号,当发生断点续传时,第二插件在写入数据之前从进度控制器中获取当前已经传输过的数据所对应的版本号,即可精确地传输尚未传输的消息,例如,第二插件暂停之后重新启动,当前需要向第二数据库写入第二数据,首先在进度控制器中查询,第二数据所对应的第二版本号是否被标记为已提交,若为已提交,说明在传输暂停之前,该第二数据已经完成写入,因此不再重复传递,从而避免了数据因断点重传发生重复写入,提升了传输的可靠性。
本实施例中,通过设置进度控制器的方式,对读取和写入的各个数据进行记录,当写入插件确定将一条消息成功写入数据目的地后,只需要通知、进度控制器将该消息的版本号置为已提交。进度控制器会定期扫描找到所有已提交的消息中版本号最新的消息对应的进度——又称低水位进度——并将其保存到任务元信息存储中。由于低水位进度严格保证其之前所有的消息版本都已被提交,因此任务断点续传时从低水位进度重启不会导致跳过任何还未被发送的消息。
可选地,为了减少控制器的内存占用,还可以将消息的偏移信息分为静态及动态两部分,进度控制器对于静态信息只保存一份,将动态偏移信息进行多版本保存即可。即:将进度控制器中记录为已传输的数据保存在进度控制器中;将进度控制器中尚未记录为已传输的数据保存在缓存中。
需要说明的是,为了保证数据传输的可靠性,当上游的写入插件向下游传输一条消息时可能遇到三种返回状态:成功、失败、或超时。对于返回成功/失败的消息,可以明确知道此时不需要/需要进行消息重发。但是,对于返回超时的消息,既有可能是在DTS发到下游的过程中丢失,即下游实际没收到消息,需重发;也有可能是在下游已经接收到消息,给DTS返回ACK的时候ACK丢失,不需重发。该问题也被称为两将军问题。
为了解决此问题,本申请实施例进一步提供一种实现方式,以实现数据传输过程中的幂等性传输设计。对于数据库***,和分布式文件***或消息队列***,有不同的实现方式,为便于理解,以下结合附图不同***下的解决方案进行详细说明。
一、数据库***。
请参阅图7,如图7所示,基于上述步骤中已经获取到的插件,在保证传输可靠性的过程中,本申请实施例所提供的数据传输方法的实施例五包括以下步骤。
701、通过第一插件获取第一数据的数据库主键或唯一键。
本实施例中,在数据库***中,当第一插件读取了第一数据库中的第一数据后,获取该第一数据的主键或唯一键,其中,该数据库主键,指的是一个列或多列的组合,其值能唯一地标识表中的每一行,通过它可强制表的实体完整性。主键主要是用与其他表的外键关联,以及本记录的修改与删除。
702、通过第三插件将第一数据转化为第二数据。
本实施例中,转格式插件,第三插件在将第一数据转化为第二数据的过程中,保留主键或唯一键与数据的对应关系。
703、通过第二插件向第二数据库写入第二数据时,若第二数据库所对应的主键或唯一键已经写入第二数据库,则第二插件不再写入第二数据。
本实施例中,通过主键或唯一键即可判定,当前准备写入的第二数据是否已经写入过第二数据库***中,从而避免了数据的重复写入。
本实施例中,针对数据库***的实际工作情况,识别数据的主键或唯一键,从而确保每个数据只写入一次,避免了输入的重复写入,在数据库***中实现了数据传输的幂等性。
二、分布式文件***或消息队列***。
请参阅图8,如图8所示,基于上述步骤中已经获取到的插件,在保证传输可靠性的过程中,本申请实施例所提供的数据传输方法的实施例六包括以下步骤。
801、通过第一插件在第一数据上附带第一数据的第一偏移位置信息。
本实施例中,在第一插件读取到第一数据库中的第一数据后,通过第一插件在第一数据上附带第一数据的第一偏移位置信息,该第一偏移位置信息用于记录第一数据在磁盘上存放时相对于文件开头的偏移。从而能够通过该第一偏移信息定位到第一数据的偏移位置。
802、通过第三插件将第一数据转化为第二数据。
本实施例中,通过第三插件将第一数据转化为第二数据,其中,保留第二数据与第一偏移位置的对应关系。
803、通过第二插件获取至少一个第二数据的第一偏移位置信息,当存在重复的第一偏移信息时,剔除重复的第一偏移信息所对应的第二数据。
本实施例中,在传输过程中,由于传输的错误,导致重传的发生,有可能会出现第二插件(即写入插件)收到多个重复消息的情况,因此,通过消息中附带的偏移位置信息,即可对重复的消息进行识别,从而提出重复的消息。
本实施例中,通过在数据中附带偏移位置信息,从而对数据进行标识,这样一来,读取插件不需要对数据是否重复进行识别,直接将去重的工作转交给下游的写入插件。从而实现了下游***的幂等性。
上述实施例五和实施例六对本申请实施例所提供的数据传输方法中,为了提高传输可靠能力的方案进行了详细说明。在实际工作过程中,仍然有可能会发生传输故障的情况,为了保证数据传输的可用性,在数据传输发生故障时,需要采取手段对故障进行恢复,因此,本申请实施例进一步提供一种应用于解耦后插件***的提高可用性方案。
请参阅图9,如图9所示,本申请实施例所提供的数据传输方法的实施例七包括以下步骤。
901、当检测到第一插件的读取发生错误,或检测到第二插件的写入发生错误时,重启第一插件与第二插件。
本实施例中,读取发生错误可以是无法读取,或读取异常等情况,对此本申请实施例并不进行限定,写入发生错误可以是无法写入,或写入取异常等情况。进一步地,异常还可以包括数据传输其他环节的传输异常,此时,通过重启,尝试通过自身重连解决异常情况。
902、当第一插件与第二插件在重启后依然无法正常工作时,生成错误码。
本实施例中,当重连尝试失败或判断无法通过重连解决问题时,通过错误码的方式,将错误情况抛出。
903、根据错误码获取预设的恢复策略。
本实施例中,由服务器中的管控层来获取上述步骤902中生成的错误码,管控层会进一步分析错误,由于错误码与恢复策略的对应关系为预设的关系,因此管控层可以根据错误码获取到预设的恢复策略。
904、根据恢复策略对第一插件及第二插件的传输进行恢复。
本实施例中,根据获取到的恢复策略,对插件的传输进行恢复,即可实现数据传输***的自愈,从而实现故障的恢复。
需要说明的是,对于上述的恢复策略,是根据不同的错误情况,触发的不同的恢复策略,以实现数据传输***的自愈,因此本申请实施例并不对详细情况进行限定,作为一种举例,本申请实施例提供一种当上游数据库发生主从切换时,实行恢复策略的方案。
请参阅图10,如图10所示,具体包括以下步骤。
1001、当第一数据库发生主从切换时,获取主从切换后的第一数据库的第一类型信息,第一类型信息用于记录第一数据库的类型。
本实施例中,当数据库的主库发生宕机,此时无法再进行数据读取,因此数据源会主动执行主从切换,切换为备用数据库,此时,由于数据源发生改变,服务器需要重新获取新的读取插件,以实现对新数据源的读取。
1002、获取与第一类型信息对应的第一插件。
本实施例中,当获取到新数据源的类型信息后,根据类型信息获取到与数据源对应的第一插件,从而使得新的插件能够继续读取数据源的数据,以进行后续步骤的操作,实现了传输***的自愈。
后续步骤可参阅上述任意一种实施方式,此处不再赘述。
本申请实施例所提供的数据传输方法,包括:根据第一数据库的数据类型获取第一插件,第一插件用于读取第一数据库中的第一数据;根据第二数据库的数据类型获取第二插件,第二插件用于向第二数据库写入第二数据,第二数据库与第一数据库为不同类型的数据库,第二数据与第一数据为不同类型的数据;根据第一数据库的数据类型和第二数据库的数据类型获取第三插件,第三插件用于将第一插件读取的第一数据转化为第二数据并发送给第二插件。通过设置插件的方式,将异构数据库数据传输过程中的读取、转格式和写入步骤解耦,从而能够根据不同的数据库类型获取不同的插件,以实现异构数据库之间的数据传输,从而减少了代码的开发量,拓展上下游类型的支持能力,提高了数据传输的实现效率。
上述对本申请实施例提供的方案进行了介绍。可以理解的是,计算机设备为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的模块及算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
从硬件结构上来描述,上述方法可以由一个实体设备实现,也可以由多个实体设备共同实现,还可以是一个实体设备内的一个逻辑功能模块,本申请实施例对此不作具体限定。
例如,上述方法均可以通过图11中的计算机设备来实现。图11为本申请实施例提供的计算机设备的硬件结构示意图。该计算机设备包括至少一个处理器1101,通信线路1102,存储器1103以及至少一个通信接口1104。
处理器1101可以是一个通用中央处理器(central processing unit,CPU),微处理器,特定应用集成电路(application-specific integrated circuit,服务器IC),或一个或多个用于控制本申请方案程序执行的集成电路。
通信线路1102可包括一通路,在上述组件之间传送信息。
通信接口1104,使用任何收发器一类的装置,用于与其他设备或通信网络通信,如以太网,无线接入网(radio access network,RAN),无线局域网(wireless local areanetworks,WLAN)等。
存储器1103可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(electricallyer服务器able programmable read-only memory,EEPROM)、只读光盘(compact disc read-only memory,CD-ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器可以是独立存在,通过通信线路1102与处理器相连接。存储器也可以和处理器集成在一起。
其中,存储器1103用于存储执行本申请方案的计算机执行指令,并由处理器1101来控制执行。处理器1101用于执行存储器1103中存储的计算机执行指令,从而实现本申请上述实施例提供的方法。
可选的,本申请实施例中的计算机执行指令也可以称之为应用程序代码,本申请实施例对此不作具体限定。
在具体实现中,作为一种实施例,处理器1101可以包括一个或多个CPU,例如图11中的CPU0和CPU1。
在具体实现中,作为一种实施例,计算机设备可以包括多个处理器,例如图11中的处理器1101和处理器1107。这些处理器中的每一个可以是一个单核(single-CPU)处理器,也可以是一个多核(multi-CPU)处理器。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。
在具体实现中,作为一种实施例,计算机设备还可以包括输出设备1105和输入设备1106。输出设备1105和处理器1101通信,可以以多种方式来显示信息。例如,输出设备1105可以是液晶显示器(liquid crystal display,LCD),发光二级管(light emittingdiode,LED)显示设备,阴极射线管(cathode ray tube,CRT)显示设备,或投影仪(projector)等。输入设备1106和处理器1101通信,可以以多种方式接收用户的输入。例如,输入设备1106可以是鼠标、键盘、触摸屏设备或传感设备等。
上述的计算机设备可以是一个通用设备或者是一个专用设备。在具体实现中,计算机设备可以是台式机、便携式电脑、网络服务器、掌上电脑(personal digitalassistant,PDA)、移动手机、平板电脑、无线终端设备、嵌入式设备或有图11中类似结构的设备。本申请实施例不限定计算机设备的类型。
本申请实施例可以根据上述方法示例对存储设备进行功能单元的划分,例如,可以对应各个功能划分各个功能单元,也可以将两个或两个以上的功能集成在一个处理单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。需要说明的是,本申请实施例中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
比如,以采用集成的方式划分各个功能单元的情况下,图12示出了一种数据传输装置的示意图。
如图12所示,本申请实施例提供的数据传输装置,包括:
第一获取单元1201,该第一获取单元1201用于根据第一数据库的数据类型获取第一插件,该第一插件用于读取该第一数据库中的第一数据;
第二获取单元1202,该第二获取单元1202用于根据第二数据库的数据类型获取第二插件,该第二插件用于向该第二数据库写入第二数据,该第二数据库与该第一数据库为不同类型的数据库,该第二数据与该第一数据为不同类型的数据;
第三获取单元1203,该第三获取单元1203用于根据该第一数据库的数据类型和该第二数据库的数据类型获取第三插件,该第三插件用于将该第一获取单元1201获取的该第一插件读取的该第一数据转化为该第二数据并发送给该第二获取单元1202获取的该第二插件。
可选地,该装置还包括:
第四获取单元1204,该第四获取单元1204用于获取配置文件,该配置文件中记录有该第一数据库和该第二数据库的数据类型;
该第一获取单元1201还用于:
根据该第四获取单元1204获取的该配置文件中记录的该第一数据库的数据类型获取该第一插件;
该第二获取单元1202还用于:
根据该第四获取单元1204获取的该配置文件中记录的该第二数据库的数据类型获取该第二插件;
该第三获取单元1203还用于:
根据该第四获取单元1204获取的该配置文件中记录的该第一数据库的数据类型和该第二数据库的数据类型获取该第三插件。
可选地,该装置还包括:
第一转化单元1205,该第一转化单元1205用于通过该第一插件将该第一数据转化为通用格式数据,该通用格式数据为该第二插件和该第三插件可读取的格式;
第二转化单元1206,该第二转化单元1206用于通过该第三插件将该第一转化单元1205转化的该通用格式数据转化为该第二数据;
写入单元1207,该写入单元1207用于通过该第二插件将该第二转化单元1206转化的该第二数据写入该第二数据库。
可选地,该装置还包括第五获取单元1208,该第五获取单元1208用于:获取数据传输服务DTS请求;
该第一获取单元1201还用于:
根据该第五获取单元1208获取的该DTS请求,启动对该第一插件的获取。
可选地,该第一转化单元1205还用于:
通过该第一插件启动第一线程,该第一线程用于从该第一数据库中导出该第一数据;
将该第一数据转化为该通用格式数据后放入第一队列中;
通过该第一插件启动第二线程;
通过该第二线程从该第一队列中调用该通用格式数据;
通过该第一插件将该通用格式数据发送给该第三插件。
可选地,该装置还包括第一执行单元1209,该第一执行单元1209用于:
对该第一插件获取的该第一数据标记第一版本号,该第一版本号为全局唯一的版本号;
将该第一版本号发送给进度控制器,该进度控制器用于记录该第一数据与该第一版本号的对应关系;
当该第一数据被该第三插件转化为该第二数据,且被该第二插件写入该第二数据库之后,在该进度控制器中将该第一版本号所对应的数据记录为已传输;
该第二插件向该第二数据库写入该第二数据时,从该进度控制器中获取该第二数据所对应的第二版本号,该第二版本号为全局唯一的版本号;
若该第二版本号在该进度控制器中被记录为已传输,则该第二插件不向该第二数据库写入该第二数据。
可选地,该第一执行单元1209还用于:
将该进度控制器中记录为已传输的数据保存在该进度控制器中;
将该进度控制器中尚未记录为已传输的数据保存在缓存中。
可选地,该第一数据库与该第二数据库均为数据库***,该装置还包括第二执行单元1210,该第二执行单元1210用于:
通过该第一插件获取该第一数据的数据库主键或唯一键;
通过该第二插件向该第二数据库写入第二数据时,若该第二数据库所对应的主键或唯一键已经写入该第二数据库,则该第二插件不再写入该第二数据。
可选地,该第一数据库与该第二数据库均为分布式文件***或消息队列***,该装置还包括第三执行单元1211,该第三执行单元1211用于:
通过该第一插件在该第一数据上附带该第一数据的第一偏移位置信息,该第一偏移位置信息用于记录该第一数据在磁盘上存放时相对于文件开头的偏移;
通过该第三插件将该第一数据转化为第二数据,其中,保留该第二数据与该第一偏移位置的对应关系;
通过该第二插件获取至少一个第二数据的第一偏移位置信息,当存在重复的第一偏移信息时,剔除重复的第一偏移信息所对应的第二数据。
可选地,该装置还包括第四执行单元1212,该第四执行单元1212用于:当检测到该第一插件的读取发生错误,或检测到该第二插件的写入发生错误时,重启该第一插件与该第二插件。
可选地,该第四执行单元1212还用于:
当该第一插件与该第二插件在重启后依然无法正常工作时,生成错误码;
根据该错误码获取预设的恢复策略,该错误码与该恢复策略的对应关系为预设的关系;
根据该恢复策略对该第一插件及该第二插件的传输进行恢复。
可选地,该装置还包括第五执行单元1213,该第五执行单元1213用于:当该第一数据库发生主从切换时,获取主从切换后的该第一数据库的第一类型信息,该第一类型信息用于记录该第一数据库的类型;
获取与该第一类型信息对应的第一插件。
进一步的,本发明实施例还提供一种计算机存储介质,包括指令,当该指令在计算机设备上运行时,使得该计算机设备执行上述方法。
有关本申请实施例提供的计算机存储介质中存储的程序的详细描述可参照上述实施例,在此不做赘述。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的核心思想或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (15)
1.一种数据传输方法,其特征在于,包括:
根据第一数据库的数据类型获取第一插件,所述第一插件用于读取所述第一数据库中的第一数据;
根据第二数据库的数据类型获取第二插件,所述第二插件用于向所述第二数据库写入第二数据,所述第二数据库与所述第一数据库为不同类型的数据库,所述第二数据与所述第一数据为不同类型的数据;
根据所述第一数据库的数据类型和所述第二数据库的数据类型获取第三插件,所述第三插件用于将所述第一插件读取的所述第一数据转化为所述第二数据并发送给所述第二插件。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取配置文件,所述配置文件中记录有所述第一数据库和所述第二数据库的数据类型;
所述根据第一数据库的数据类型获取第一插件,包括:
根据所述配置文件中记录的所述第一数据库的数据类型获取所述第一插件;
所述根据第二数据库的数据类型获取第二插件,包括:
根据所述配置文件中记录的所述第二数据库的数据类型获取所述第二插件;
所述根据所述第一数据库的数据类型和所述第二数据库的数据类型获取第三插件,包括:
根据所述配置文件中记录的所述第一数据库的数据类型和所述第二数据库的数据类型获取所述第三插件。
3.根据权利要求1所述的方法,其特征在于,所述根据第一数据库的数据类型获取第一插件之后,还包括:
通过所述第一插件将所述第一数据转化为通用格式数据,所述通用格式数据为所述第二插件和所述第三插件可读取的格式;
通过所述第三插件将所述通用格式数据转化为所述第二数据;
通过所述第二插件将所述第二数据写入所述第二数据库。
4.根据权利要求3所述的方法,其特征在于,所述根据第一数据库的数据类型获取第一插件之前,还包括:
获取数据传输服务DTS请求;
所述根据第一数据库的数据类型获取第一插件,包括:
根据所述DTS请求,启动对所述第一插件的获取。
5.根据权利要求4所述的方法,其特征在于,所述通过所述第一插件将所述第一数据转化为通用格式数据,包括:
通过所述第一插件启动第一线程,所述第一线程用于从所述第一数据库中导出所述第一数据;
将所述第一数据转化为所述通用格式数据后放入第一队列中;
通过所述第一插件启动第二线程;
通过所述第二线程从所述第一队列中调用所述通用格式数据;
所述通过所述第一插件将所述第一数据转化为通用格式数据之后,还包括:
通过所述第一插件将所述通用格式数据发送给所述第三插件。
6.根据权利要求1至5任一所述的方法,其特征在于,所述根据第一数据库的数据类型获取第一插件之后,还包括:
对所述第一插件获取的所述第一数据标记第一版本号,所述第一版本号为全局唯一的版本号;
将所述第一版本号发送给进度控制器,所述进度控制器用于记录所述第一数据与所述第一版本号的对应关系;
当所述第一数据被所述第三插件转化为所述第二数据,且被所述第二插件写入所述第二数据库之后,在所述进度控制器中将所述第一版本号所对应的数据记录为已传输;
所述第二插件向所述第二数据库写入所述第二数据时,从所述进度控制器中获取所述第二数据所对应的第二版本号,所述第二版本号为全局唯一的版本号;
若所述第二版本号在所述进度控制器中被记录为已传输,则所述第二插件不向所述第二数据库写入所述第二数据。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
将所述进度控制器中记录为已传输的数据保存在所述进度控制器中;
将所述进度控制器中尚未记录为已传输的数据保存在缓存中。
8.根据权利要求1至5任一所述的方法,其特征在于,所述第一数据库与所述第二数据库均为数据库***,则所述方法还包括:
通过所述第一插件获取所述第一数据的数据库主键或唯一键;
通过所述第二插件向所述第二数据库写入第二数据时,若所述第二数据库所对应的主键或唯一键已经写入所述第二数据库,则所述第二插件不再写入所述第二数据。
9.根据权利要求1至5任一所述的方法,其特征在于,所述第一数据库与所述第二数据库均为分布式文件***或消息队列***,则所述方法还包括:
通过所述第一插件在所述第一数据上附带所述第一数据的第一偏移位置信息,所述第一偏移位置信息用于记录所述第一数据在磁盘上存放时相对于文件开头的偏移;
通过所述第三插件将所述第一数据转化为第二数据,其中,保留所述第二数据与所述第一偏移位置的对应关系;
通过所述第二插件获取至少一个第二数据的第一偏移位置信息,当存在重复的第一偏移信息时,剔除重复的第一偏移信息所对应的第二数据。
10.根据权利要求1至5任一所述的方法,其特征在于,当检测到所述第一插件的读取发生错误,或检测到所述第二插件的写入发生错误时,重启所述第一插件与所述第二插件。
11.根据权利要求10所述的方法,其特征在于,所述方法还包括:
当所述第一插件与所述第二插件在重启后依然无法正常工作时,生成错误码;
根据所述错误码获取预设的恢复策略,所述错误码与所述恢复策略的对应关系为预设的关系;
根据所述恢复策略对所述第一插件及所述第二插件的传输进行恢复。
12.根据权利要求1至5任一所述的方法,其特征在于,所述恢复策略包括:当所述第一数据库发生主从切换时,获取主从切换后的所述第一数据库的第一类型信息,所述第一类型信息用于记录所述第一数据库的类型;
获取与所述第一类型信息对应的第一插件。
13.一种数据传输装置,其特征在于,包括:
第一获取单元,所述第一获取单元用于根据第一数据库的数据类型获取第一插件,所述第一插件用于读取所述第一数据库中的第一数据;
第二获取单元,所述第二获取单元用于根据第二数据库的数据类型获取第二插件,所述第二插件用于向所述第二数据库写入第二数据,所述第二数据库与所述第一数据库为不同类型的数据库,所述第二数据与所述第一数据为不同类型的数据;
第三获取单元,所述第三获取单元用于根据所述第一数据库的数据类型和所述第二数据库的数据类型获取第三插件,所述第三插件用于将所述第一获取单元获取的所述第一插件读取的所述第一数据转化为所述第二数据并发送给所述第二获取单元获取的所述第二插件。
14.一种计算机设备,其特征在于,所述计算机设备包括:交互装置、输入/输出(I/O)接口、处理器和存储器,所述存储器中存储有程序指令;
所述交互装置用于获取用户输入的操作指令;
所述处理器用于执行存储器中存储的程序指令,执行如权利要求1-12中任意一项所述的方法。
15.一种计算机可读存储介质,包括指令,其特征在于,当所述指令在计算机设备上运行时,使得所述计算机设备执行如权利要求1-12中任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911261581.3A CN111026735B (zh) | 2019-12-10 | 2019-12-10 | 一种数据传输方法、装置、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911261581.3A CN111026735B (zh) | 2019-12-10 | 2019-12-10 | 一种数据传输方法、装置、设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111026735A true CN111026735A (zh) | 2020-04-17 |
CN111026735B CN111026735B (zh) | 2023-03-21 |
Family
ID=70208723
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911261581.3A Active CN111026735B (zh) | 2019-12-10 | 2019-12-10 | 一种数据传输方法、装置、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111026735B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113411271A (zh) * | 2021-06-16 | 2021-09-17 | 阿波罗智联(北京)科技有限公司 | 数据接入方法、装置、设备以及存储介质 |
CN113434606A (zh) * | 2021-06-30 | 2021-09-24 | 青岛海尔科技有限公司 | 一种数据导入方法、装置、设备及介质 |
US20220100775A1 (en) * | 2019-06-25 | 2022-03-31 | Sisense Inc. | Method for automated query language expansion and indexing |
CN114706918A (zh) * | 2022-06-01 | 2022-07-05 | 杭州安恒信息技术股份有限公司 | 一种多类型数据库兼容方法、装置、设备、存储介质 |
Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050132349A1 (en) * | 2003-12-15 | 2005-06-16 | Jason Roberts | System and method for a software distribution service |
CN1992036A (zh) * | 2005-10-03 | 2007-07-04 | 索尼株式会社 | 数据传送方法、数据传送源装置以及数据传送目标装置 |
US20090284764A1 (en) * | 2008-05-19 | 2009-11-19 | Canon Kabushiki Kaisha | Plug-in for customized device model with interface for device profiler and for color management system |
CN102279711A (zh) * | 2011-08-09 | 2011-12-14 | 青岛海信网络科技股份有限公司 | 基于插件的实时数据存储方法及装置 |
US8136109B1 (en) * | 2002-04-19 | 2012-03-13 | Tibco Software Inc. | Delivery of data and formatting information to allow client-side manipulation |
CN103176795A (zh) * | 2013-02-04 | 2013-06-26 | 中国电子科技集团公司第二十八研究所 | 一种基于插件技术在信息分发软件数据过滤中的应用方法 |
CN104572416A (zh) * | 2014-12-29 | 2015-04-29 | 北京锐安科技有限公司 | 一种运维数据的处理方法及装置 |
CN105045596A (zh) * | 2015-07-31 | 2015-11-11 | 百度在线网络技术(北京)有限公司 | 一种插件调用方法及装置 |
CN105204829A (zh) * | 2014-06-24 | 2015-12-30 | 深圳市茁壮网络股份有限公司 | 基于中间件插件框架的插件套接字资源控制方法及客户端 |
CN105224297A (zh) * | 2014-06-24 | 2016-01-06 | 深圳市茁壮网络股份有限公司 | 基于中间件插件框架的插件内存资源控制方法及客户端 |
CN106649788A (zh) * | 2016-12-28 | 2017-05-10 | 深圳启润德管理咨询有限公司 | 一种数据库数据传输方法与装置 |
CN106817354A (zh) * | 2015-12-01 | 2017-06-09 | 阿里巴巴集团控股有限公司 | 一种视频流传输方法、设备和*** |
CN107864059A (zh) * | 2017-11-09 | 2018-03-30 | 安徽教育网络出版有限公司 | 一种动态内容分发方法 |
CN109639636A (zh) * | 2018-11-06 | 2019-04-16 | 阿里巴巴集团控股有限公司 | 业务数据转发、业务数据处理方法、装置及电子设备 |
-
2019
- 2019-12-10 CN CN201911261581.3A patent/CN111026735B/zh active Active
Patent Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8136109B1 (en) * | 2002-04-19 | 2012-03-13 | Tibco Software Inc. | Delivery of data and formatting information to allow client-side manipulation |
US20050132349A1 (en) * | 2003-12-15 | 2005-06-16 | Jason Roberts | System and method for a software distribution service |
CN101410800A (zh) * | 2003-12-15 | 2009-04-15 | 微软公司 | 用于软件发布服务的***和方法 |
CN1992036A (zh) * | 2005-10-03 | 2007-07-04 | 索尼株式会社 | 数据传送方法、数据传送源装置以及数据传送目标装置 |
US20090284764A1 (en) * | 2008-05-19 | 2009-11-19 | Canon Kabushiki Kaisha | Plug-in for customized device model with interface for device profiler and for color management system |
CN102279711A (zh) * | 2011-08-09 | 2011-12-14 | 青岛海信网络科技股份有限公司 | 基于插件的实时数据存储方法及装置 |
CN103176795A (zh) * | 2013-02-04 | 2013-06-26 | 中国电子科技集团公司第二十八研究所 | 一种基于插件技术在信息分发软件数据过滤中的应用方法 |
CN105204829A (zh) * | 2014-06-24 | 2015-12-30 | 深圳市茁壮网络股份有限公司 | 基于中间件插件框架的插件套接字资源控制方法及客户端 |
CN105224297A (zh) * | 2014-06-24 | 2016-01-06 | 深圳市茁壮网络股份有限公司 | 基于中间件插件框架的插件内存资源控制方法及客户端 |
CN104572416A (zh) * | 2014-12-29 | 2015-04-29 | 北京锐安科技有限公司 | 一种运维数据的处理方法及装置 |
CN105045596A (zh) * | 2015-07-31 | 2015-11-11 | 百度在线网络技术(北京)有限公司 | 一种插件调用方法及装置 |
CN106817354A (zh) * | 2015-12-01 | 2017-06-09 | 阿里巴巴集团控股有限公司 | 一种视频流传输方法、设备和*** |
CN106649788A (zh) * | 2016-12-28 | 2017-05-10 | 深圳启润德管理咨询有限公司 | 一种数据库数据传输方法与装置 |
CN107864059A (zh) * | 2017-11-09 | 2018-03-30 | 安徽教育网络出版有限公司 | 一种动态内容分发方法 |
CN109639636A (zh) * | 2018-11-06 | 2019-04-16 | 阿里巴巴集团控股有限公司 | 业务数据转发、业务数据处理方法、装置及电子设备 |
Non-Patent Citations (2)
Title |
---|
CHIH-CHENG HUANG 等: ""Simultaneous Wireless Power/Data Transfer for Electric Vehicle Charging"" * |
张传真 等: ""一种移动车联网大数据处理中间件"" * |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220100775A1 (en) * | 2019-06-25 | 2022-03-31 | Sisense Inc. | Method for automated query language expansion and indexing |
US11768850B2 (en) * | 2019-06-25 | 2023-09-26 | Sisense Sf, Inc. | Method for automated query language expansion and indexing |
US11775551B2 (en) | 2019-06-25 | 2023-10-03 | Sisense Sf, Inc. | Method for automated query language expansion and indexing |
US11954113B2 (en) | 2019-06-25 | 2024-04-09 | Sisense Sf, Inc. | Method for automated query language expansion and indexing |
CN113411271A (zh) * | 2021-06-16 | 2021-09-17 | 阿波罗智联(北京)科技有限公司 | 数据接入方法、装置、设备以及存储介质 |
JP2022058737A (ja) * | 2021-06-16 | 2022-04-12 | 阿波▲羅▼智▲聯▼(北京)科技有限公司 | データアクセス方法、装置、電子機器、記憶媒体およびコンピュータプログラム |
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 |
CN113434606A (zh) * | 2021-06-30 | 2021-09-24 | 青岛海尔科技有限公司 | 一种数据导入方法、装置、设备及介质 |
CN114706918A (zh) * | 2022-06-01 | 2022-07-05 | 杭州安恒信息技术股份有限公司 | 一种多类型数据库兼容方法、装置、设备、存储介质 |
CN114706918B (zh) * | 2022-06-01 | 2022-09-16 | 杭州安恒信息技术股份有限公司 | 一种多类型数据库兼容方法、装置、设备、存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111026735B (zh) | 2023-03-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111026735B (zh) | 一种数据传输方法、装置、设备及介质 | |
US9753954B2 (en) | Data node fencing in a distributed file system | |
US8132043B2 (en) | Multistage system recovery framework | |
US9329949B2 (en) | Comprehensive error management capabilities for disaster recovery operations | |
US20100333094A1 (en) | Job-processing nodes synchronizing job databases | |
US20180150501A1 (en) | Database system, server device, computer program product, and information processing method | |
JP6019995B2 (ja) | 分散システム、サーバ計算機、及び障害発生防止方法 | |
US9396052B2 (en) | Periodic validation and health reports of disaster recovery plan | |
US20080172679A1 (en) | Managing Client-Server Requests/Responses for Failover Memory Managment in High-Availability Systems | |
US20150213100A1 (en) | Data synchronization method and system | |
US8024537B2 (en) | Storage system, remote copy and management method therefor | |
GB2484086A (en) | Reliability and performance modes in a distributed storage system | |
CN113987064A (zh) | 数据处理方法、***及设备 | |
CN109558260B (zh) | Kubernetes故障排除***、方法、设备及介质 | |
CN112131237A (zh) | 数据同步方法、装置、设备及计算机可读介质 | |
US10048978B2 (en) | Apparatus and method for identifying a virtual machine having changeable settings | |
CN110895488B (zh) | 任务调度方法及装置 | |
EP4213038A1 (en) | Data processing method and apparatus based on distributed storage, device, and medium | |
CN104850416A (zh) | 一种升级***、方法、装置及云计算节点 | |
US20210089379A1 (en) | Computer system | |
US20230110826A1 (en) | Log execution method and apparatus, computer device and storage medium | |
JP2010033467A (ja) | 情報管理システム | |
US9330153B2 (en) | System, method, and computer readable medium that coordinates between devices using exchange of log files | |
CN106815094B (zh) | 一种用于实现主备同步模式下事务提交的方法与设备 | |
Alagappan et al. | {Fault-Tolerance}, Fast and Slow: Exploiting Failure Asynchrony in Distributed Systems |
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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40021749 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |