CN110198327B - 一种数据传输方法及相关设备 - Google Patents

一种数据传输方法及相关设备 Download PDF

Info

Publication number
CN110198327B
CN110198327B CN201810179792.1A CN201810179792A CN110198327B CN 110198327 B CN110198327 B CN 110198327B CN 201810179792 A CN201810179792 A CN 201810179792A CN 110198327 B CN110198327 B CN 110198327B
Authority
CN
China
Prior art keywords
change
data
change record
intermediate file
record
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201810179792.1A
Other languages
English (en)
Other versions
CN110198327A (zh
Inventor
吴双桥
李岩
王珏
杨繁
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Cloud Computing Beijing Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201810179792.1A priority Critical patent/CN110198327B/zh
Publication of CN110198327A publication Critical patent/CN110198327A/zh
Application granted granted Critical
Publication of CN110198327B publication Critical patent/CN110198327B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2358Change logging, detection, and notification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/273Asynchronous replication or reconciliation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/563Data redirection of data network streams
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/565Conversion or adaptation of application format or content
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • H04L67/5682Policies or rules for updating, deleting or replacing the stored data

Abstract

涉及数据库技术领域,尤其涉及一种数据传输方法及相关设备,客户端可向云平台发送数据获取请求;云平台根据该数据获取请求确定筛选条件信息,并从中间文件中,读取满足该筛选条件信息的变更记录;其中,中间文件是云平台通过预先对设定数据库的日志文件进行读取和解析得到的;客户端接收云平台返回的满足该筛选条件信息的变更记录。也就是说,可通过对数据库的日志文件进行读取生成中间文件,实现日志文件中变更记录的异步读取和传输,进而在数据传输时可根据筛选条件信息传输中间文件中记录的满足筛选条件信息的变更记录,因此,不仅可节约网络资源、提高数据传输效率,而且还满足了客户端的定制化需求。

Description

一种数据传输方法及相关设备
技术领域
本发明涉及数据库技术领域,尤其涉及一种数据传输方法及相关设备。
背景技术
由于数据库的二进制日志文件不支持回滚读取数据,因此,数据库的原生数据传输方式,只能对一台数据库的二进制日志文件中的变更记录进行一次顺序读取并传输至另一台数据库。例如,第一数据库共包括A、B、C三个库表,第一数据库的二进制日志文件按照时间顺序依次记录了A、B、C三个库表的每次变更;在一次将第一数据库中的数据传输到第二数据库的过程中,只能从上一次数据传输过程读取的最后一条变更记录的下一条变更记录开始,顺序读取并传输第一数据库的二进制日志文件中的每条变更记录。
可见,数据库的原生数据传输方式无法实现根据需求有选择性地传输数据,数据传输效率较低、浪费网络资源。
发明内容
本发明实施例提供了一种数据传输方法及相关设备,用以解决数据库的原生数据传输方式效率较低、浪费网络资源的问题。
第一方面,本发明实施例提供了一种数据传输方法,所述方法包括:
接收客户端发送的数据获取请求,根据所述数据获取请求确定筛选条件信息;
从中间文件中,读取满足所述筛选条件信息的变更记录;其中,所述中间文件是通过预先对设定数据库的日志文件进行读取和解析得到的;
将读取到的变更记录返回给所述客户端。
也就是说,可预先对第一数据库的日志文件进行读取得到中间文件,不同于数据库日志文件的不支持回滚读取以及跳跃读取、只能从上一次读取的最后一条变更记录的下一条变更记录开始向下顺序读取每条变更记录,中间文件中的数据可从任一条变更记录开始、以任意方式进行读取,进而可实现根据任一筛选条件,选择性地读取并传输中间文件中满足该筛选条件的变更记录。
优选地,所述筛选条件信息包括以下至少一个:
时间条件信息,包括用于对所述设定数据库的各变更记录的产生时间进行筛选的设定时间段;
对象条件信息,包括用于对所述设定数据库的各变更记录所对应的库表进行筛选的库表标识;
类型条件信息,包括用于对所述设定数据库的各变更记录的变更类型进行筛选的类型标识;其中,变更类型包括数据对象变更或者库表结构变更。
即,筛选条件信息可包括时间条件信息、对象条件信息和类型条件信息的任意组合,因此,可满足客户端的定制化需求。
优选地,在从中间文件中,读取满足所述筛选条件信息的变更记录之前,所述方法还包括:确定所述中间文件;
确定所述中间文件,具体包括:按照时间先后顺序,对所述设定数据库的日志文件中的每个事务执行以下操作:
按照时间先后顺序,读取、解析并记录当前事务的每条变更记录,并在将当前事务的最后一条变更记录写入所述中间文件时,对应插入相应的事务索引标识。
进一步可选地,读取、解析并记录当前变更记录,具体包括:
读取当前变更记录;
判断当前变更记录的变更类型为库表结构变更或数据对象变更;
若确定当前变更记录的变更类型为库表结构变更,则对当前变更记录进行解析,确定当前变更记录对应的结构变更内容,并存储当前变更记录对应的结构变更内容,以及,将确定结构变更内容的当前变更记录顺序写入所述中间文件,并将当前变更记录在所述中间文件中的位置信息写入索引文件;
若确定当前变更记录的变更类型为数据对象变更,则对当前变更记录进行解析,确定当前变更记录对应的变更对象,并通过查询获取当前变更记录对应的变更对象的结构信息,以及,将确定结构信息和变更对象的当前变更记录顺序写入所述中间文件,并将当前变更记录在所述中间文件中的位置信息写入索引文件。
进一步可选地,从中间文件中,读取满足所述筛选条件信息的变更记录,具体包括:
根据所述索引文件,确定满足所述筛选条件信息的各变更记录在所述中间文件中的位置;其中,所述索引文件是在对所述设定数据库的日志文件进行读取和解析以生成所述中间文件时生成的、用于记录所述中间文件中的各变更记录的位置信息的文件;
依次读取满足所述筛选条件信息的各变更记录。
同样可选地,所述将确定结构变更内容的当前变更记录顺序写入所述中间文件,具体包括:采用设定数据格式,将确定结构变更内容的当前变更记录顺序写入所述中间文件;
所述将确定结构信息和变更对象的当前变更记录顺序写入所述中间文件,具体包括:采用设定数据格式,将确定结构信息和变更对象的当前变更记录顺序写入所述中间文件。
进一步可选地,所述设定数据格式包括:
变更类型为库表结构变更的变更记录的数据格式为:第一设定数据单元用于记录当前变更记录的开始标识、第二设定数据单元用于记录当前变更记录的结尾标识,以及第三设定数据单元用于记录当前变更记录对应的设定DDL(Data Definition Language,数据定义语言)语句本身;
变更类型为数据对象变更的变更记录的数据格式为:第一设定数据单元用于记录当前变更记录的开始标识、第二设定数据单元用于记录当前变更记录的结尾标识,以及第四设定数据单元用于记录镜像数据;其中,镜像数据包括:前镜像数据和/或后镜像数据。
也就是说,现有数据库的二进制数据格式本身与存储引擎无关,但是却无法在不同的数据库服务器之间通用;在本实施例提供的数据传输方法中,可根据设定数据格式写中间文件,从而客户端也可根据该设定数据格式,对接收到的中间文件中的变更记录进行解析,并根据客户端对应的数据库的语法,构造对应的程序语句将各变更复制到客户端对应的数据库中。即,对于两个异构的数据库,数据也可在两个数据库之间传输,打通了异构数据库之间的数据传输的通路。
优选地,所述数据获取请求中携带有数据传输通道的标识信息;
根据所述数据获取请求确定筛选条件信息,具体包括:
根据所述数据传输通道的标识信息,以及预先存储的数据传输通道标识与筛选条件的对应关系,确定所述筛选条件信息。
进一步可选地,在接收客户端发送的数据获取请求之前,所述方法还包括:
接收所述客户端发送的数据传输通道建立请求,所述数据传输通道建立请求中携带有所述筛选条件信息;
响应于所述数据传输通道建立请求,创建数据传输通道,并生成所述数据传输通道的标识;
将所述数据传输通道的标识与所述筛选条件信息对应存储;
将所述数据传输通道的标识返回给所述客户端。
同样可选地,在接收客户端发送的数据获取请求之前,所述方法还包括:
接收所述客户端发送的数据传输通道建立请求,所述数据传输通道建立请求中携带有所述设定数据库的标识信息以及所述筛选条件信息;
响应于所述数据传输通道建立请求,创建数据传输通道,并生成数据传输通道的标识;
将所述数据传输通道的标识、所述设定数据库的标识信息以及所述筛选条件信息对应存储;
将所述数据传输通道的标识返回给所述客户端。
进一步可选地,在接收客户端发送的数据获取请求之后,根据所述数据获取请求确定筛选条件信息之前,所述方法还包括:
根据预先存储的数据传输通道标识与数据库标识的对应关系,确定所述设定数据库。
即,可设置两个以上数据库,客户端可通过在数据订阅请求中携带云平台中的任一数据库的标识信息以及筛选条件信息,与该任一数据库建立数据传输通道,并为建立的该数据传输通道设置数据筛选条件。
第二方面,本发明实施例还提供了另一种数据传输方法,包括:
向云平台发送数据获取请求,以由所述云平台根据所述数据获取请求确定筛选条件信息,并从中间文件中,读取满足所述筛选条件信息的变更记录;
接收所述云平台返回的满足所述筛选条件信息的变更记录;
其中,所述中间文件是由所述云平台通过预先对第一数据库的日志文件进行读取和解析得到的。
第三方面,本发明实施例还提供了一种云平台,包括:
接收模块,用于接收客户端发送的数据获取请求,根据所述数据获取请求确定筛选条件信息;
处理模块,用于从中间文件中,读取满足所述筛选条件信息的变更记录;其中,所述中间文件是通过预先对设定数据库的日志文件进行读取和解析得到的;
发送模块,用于将读取到的变更记录返回给所述客户端。
优选地,所述筛选条件信息包括以下至少一个:
时间条件信息,包括用于对所述设定数据库的各变更记录的产生时间进行筛选的设定时间段;
对象条件信息,包括用于对所述设定数据库的各变更记录所对应的库表进行筛选的库表标识;
类型条件信息,包括用于对所述设定数据库的各变更记录的变更类型进行筛选的类型标识;其中,变更类型包括数据对象变更或者库表结构变更。
优选地,所述云平台还包括日志解析模块,用于按照时间先后顺序,对所述设定数据库的日志文件中的每个事务执行以下操作:按照时间先后顺序,读取、解析并记录当前事务的每条变更记录,并在将当前事务的最后一条变更记录写入所述中间文件时,对应插入相应的事务索引标识。
进一步可选地,所述日志解析模块,具体用于,
读取当前变更记录;
判断当前变更记录的变更类型为库表结构变更或数据对象变更;
若确定当前变更记录的变更类型为库表结构变更,则对当前变更记录进行解析,确定当前变更记录对应的结构变更内容,并存储当前变更记录对应的结构变更内容,以及,将确定结构变更内容的当前变更记录顺序写入所述中间文件,并将当前变更记录在所述中间文件中的位置信息写入索引文件;
若确定当前变更记录的变更类型为数据对象变更,则对当前变更记录进行解析,确定当前变更记录对应的变更对象,并通过查询获取当前变更记录对应的变更对象的结构信息,以及,将确定结构信息和变更对象的当前变更记录顺序写入所述中间文件,并将当前变更记录在所述中间文件中的位置信息写入索引文件。
进一步可选地,所述处理模块,具体用于,根据所述索引文件,确定满足所述筛选条件信息的各变更记录在所述中间文件中的位置;其中,所述索引文件是在对所述设定数据库的日志文件进行读取和解析以生成所述中间文件时生成的、用于记录所述中间文件中的各变更记录的位置信息的文件;以及,依次读取满足所述筛选条件信息的各变更记录。
同样可选地,所述处理模块,具体用于,采用设定数据格式,将确定结构变更内容的当前变更记录顺序写入所述中间文件;或者,采用设定数据格式,将确定结构信息和变更对象的当前变更记录顺序写入所述中间文件。
进一步可选地,所述设定数据格式包括:
变更类型为库表结构变更的变更记录的数据格式为:第一设定数据单元用于记录当前变更记录的开始标识、第二设定数据单元用于记录当前变更记录的结尾标识,以及第三设定数据单元用于记录当前变更记录对应的设定DDL语句本身;
变更类型为数据对象变更的变更记录的数据格式为:第一设定数据单元用于记录当前变更记录的开始标识、第二设定数据单元用于记录当前变更记录的结尾标识,以及第四设定数据单元用于记录镜像数据;其中,镜像数据包括:前镜像数据和/或后镜像数据。
优选地,所述数据获取请求中携带有数据传输通道的标识信息;
所述接收模块,还具体用于根据所述数据传输通道的标识信息,以及预先存储的数据传输通道标识与筛选条件的对应关系,确定所述筛选条件信息。
进一步可选地,所述接收模块,在接收客户端发送的数据获取请求之前,还用于:
接收所述客户端发送的数据传输通道建立请求,所述数据传输通道建立请求中携带有所述筛选条件信息;
响应于所述数据传输通道建立请求,创建数据传输通道,并生成所述数据传输通道的标识;
将所述数据传输通道的标识与所述筛选条件信息对应存储;
将所述数据传输通道的标识返回给所述客户端。
同样可选地,所述接收模块,在接收客户端发送的数据获取请求之前,还用于:
接收所述客户端发送的数据传输通道建立请求,所述数据传输通道建立请求中携带有所述设定数据库的标识信息以及所述筛选条件信息;
响应于所述数据传输通道建立请求,创建数据传输通道,并生成数据传输通道的标识;
将所述数据传输通道的标识、所述设定数据库的标识信息以及所述筛选条件信息对应存储;
将所述数据传输通道的标识返回给所述客户端。
进一步可选地,所述接收模块,在接收客户端发送的数据获取请求之后,根据所述数据获取请求确定筛选条件信息之前,还用于:
根据预先存储的数据传输通道标识与数据库标识的对应关系,确定所述设定数据库。
第四方面,本发明实施例还提供了一种客户端,包括:
发送模块,用于向云平台发送数据获取请求,以由所述云平台根据所述数据获取请求确定筛选条件信息,并从中间文件中,读取满足所述筛选条件信息的变更记录;
接收模块,用于接收所述云平台返回的满足所述筛选条件信息的变更记录;
其中,所述中间文件是由所述云平台通过预先对第一数据库的日志文件进行读取和解析得到的。
第五方面,本发明实施例还提供了一种数据传输系统,包括:
客户端,用于向云平台发送数据获取请求;
所述云平台,用于根据所述数据获取请求确定筛选条件信息,并从中间文件中,读取满足所述筛选条件信息的变更记录;并将满足所述筛选条件信息的变更记录返回给所述客户端;其中,所述中间文件是所述云平台通过预先对设定数据库的日志文件进行读取和解析得到的。
第六方面,本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行上述第一方面的数据传输方法。
第七方面,本发明实施例还提供了另一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行上述第二方面的数据传输方法。
第八方面,本发明实施例还提供了一种计算机装置,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序指令执行上述第一方面的数据传输方法。
第九方面,本发明实施例还提供了一种计算机装置,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序指令执行上述第二方面的数据传输方法。
本发明有益效果如下:
本发明实施例提供了一种数据传输方法及相关设备,客户端可向云平台发送数据获取请求;云平台根据所述数据获取请求确定筛选条件信息,并从中间文件中,读取满足所述筛选条件信息的变更记录;其中,所述中间文件是云平台通过预先对设定数据库的日志文件进行读取和解析得到的;客户端接收所述云平台返回的满足所述筛选条件信息的变更记录。也就是说,可通过对数据库的日志文件进行读取生成中间文件,实现日志文件中变更记录的异步读取和传输,进而在数据传输时可根据筛选条件信息传输中间文件中记录的满足筛选条件信息的变更记录,因此,不仅可节约网络资源、提高数据传输效率,而且还满足了客户端的定制化需求。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1所示为本发明实施例一中的数据传输方法的应用场景示意图;
图2所示为本发明实施例一中的数据传输方法的步骤流程图;
图3所示为本发明实施例一中的DDL/DML事务解析状态机;
图4所示为本发明实施例一中的云平台和终端的系统架构图;
图5所示为本发明实施例二中的云平台的结构示意图;
图6所示为本发明实施例三中的客户端的结构示意图;
图7所示为本发明实施例四中的数据传输系统的结构示意图;
图8所示为本发明实施例五中的计算机装置的结构示意图;
图9所示为本发明实施例六中的计算机装置的结构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
实施例一:
本发明实施例一提供了一种数据传输方法,如图1所示,其为所述数据传输方法的应用场景示意图。客户端11可向云平台12发送数据获取请求;云平台12根据数据获取请求确定筛选条件信息,并从中间文件中,读取满足筛选条件信息的变更记录;其中,中间文件是云平台12通过预先对第一数据库的日志文件进行读取和解析得到的;客户端11接收云平台12返回的满足筛选条件信息的变更记录。
例如,云平台中设置有第一数据库,云平台预先对第一数据库的日志文件进行读取和解析得到中间文件。被授权使用该云平台的数据订阅服务的客户端A,可向云平台发送数据获取请求;云平台根据该数据获取请求,确定客户端A制定的筛选条件,并从中间文件中,读取满足该筛选条件的变更记录,并将读取到的变更记录返回给客户端A,客户端A可根据接收到的变更记录对第二数据库进行更新。
也就是说,云平台可预先对第一数据库的日志文件进行读取得到中间文件,不同于数据库日志文件的不支持回滚读取以及跳跃读取、只能从上一次读取的最后一条变更记录的下一条变更记录开始向下顺序读取每条变更记录,中间文件中的数据可从任一条变更记录开始、以任意方式进行读取,因此,可实现根据任一筛选条件,选择性地读取并传输中间文件中满足该筛选条件的变更记录,不仅可节约网络资源、提高数据传输效率,而且还满足了客户端的定制化需求。
客户端11与云平台12之间可以通过通信网络进行连接,该网络可以为局域网、广域网等。客户端11可以为便携设备(例如:手机、平板、笔记本电脑等),也可以为个人电脑(PC,Personal Computer),云平台12可以为任何能够提供互动业务的服务器设备。
具体地,本发明实施例一提供的所述数据传输方法的步骤流程如图2所示,可包括以下步骤:
步骤201:客户端向云平台发送数据获取请求。
步骤202:云平台根据数据获取请求确定筛选条件信息。
在本实施例的一种可实施方式中,在步骤201中数据获取请求中可携带筛选条件信息。也就是说,在客户端向云平台发送数据获取请求时,可直接将筛选条件信息携带在数据获取请求中,以由云平台直接根据接收到的数据获取请求,确定客户端所要求的筛选条件。
在本实施例的另一种可实施方式中,在步骤201客户端向云平台发送数据获取请求之前,所述方法还可包括:
云平台接收客户端发送的数据订阅请求,该数据订阅请求中携带有筛选条件信息;
云平台响应于该数据订阅请求,创建数据传输通道,并生成该数据传输通道的标识;
云平台将该数据传输通道的标识与该筛选条件信息对应存储;
云平台将该数据传输通道的标识返回给客户端。
因此,在步骤201中数据获取请求中还可携带有数据传输通道的标识信息,则步骤202云平台根据数据获取请求确定筛选条件信息,还可具体包括:
云平台根据数据传输通道的标识信息,以及预先存储的数据传输通道标识与筛选条件的对应关系,确定筛选条件信息。
也就是说,客户端与云平台之间可预先建立数据传输通道,云平台将该数据传输通道的标识与该数据传输通道对应的筛选条件信息对应存储;在客户端向云平台发送数据获取请求时,可将数据传输通道的标识信息携带在数据获取请求中,云平台便可根据数据传输通道标识与筛选条件的对应关系,确定客户端所要求的筛选条件。
另外,需要说明的是,根据数据订阅的实际需求,客户端与云平台之间可建立一个或两个以上数据传输通道,本实施例在此不作任何限定。且针对任一已建立的数据传输通道,客户端还可向云平台发送通道设置请求,该通道设置请求中携带有该任一数据传输通道的标识信息以及新的筛选条件信息,以由云平台更新该数据传输通道所对应的筛选条件信息。
此外,在本实施例的又一种可实施方式中,在步骤201客户端向云平台发送数据获取请求之前,所述方法还可包括:
云平台接收客户端发送的数据订阅请求,该数据订阅请求中携带有第一数据库的标识信息以及筛选条件信息;
云平台响应于该数据订阅请求,创建数据传输通道,并生成数据传输通道的标识;
云平台将数据传输通道的标识、第一数据库的标识以及筛选条件信息对应存储;
云平台将该数据传输通道的标识返回给客户端。
相应地,在步骤202云平台根据数据获取请求确定筛选条件信息之前,所述方法还可包括:
云平台根据预先存储的数据传输通道标识与数据库标识的对应关系,确定第一数据库。
也就是说,云平台中还可设置两个以上数据库,客户端可通过在数据订阅请求中携带云平台中的任一数据库的标识信息以及筛选条件信息,与该任一数据库建立数据传输通道,并为建立的该数据传输通道设置数据筛选条件。
优选地,筛选条件信息可包括时间条件信息,时间条件信息可包括用于对第一数据库的各变更记录的产生时间进行筛选的第一设定时间段。
例如,时间条件信息可包括设定时间点,则时间条件信息可用于表征数据筛选条件:产生时间在设定时间点到当前时刻的时间段内;再如,时间条件信息可包括起始时间点和结束时间点,则时间条件信息可表征数据筛选条件:产生时间在起始时间点到结束时间点的时间段内。
由于数据筛选条件可包括时间条件,因此,本实施例提供的所述数据传输方法,不仅可支持数据的实时传输,而且还可支持数据的重复传输、选择时间段传输,以及精确到时间点的回滚。
同样可选地,筛选条件信息还可包括对象条件信息,对象条件信息可包括用于对第一数据库的各变更记录所对应的库表进行筛选的库表标识。
由于第一数据库可能包括两个以上的库表,因此,数据筛选条件还可包括对象条件。例如,对象条件信息可包括库表A的标识,则对象条件信息可表征数据筛选条件:属于库表A的变更记录。
同样可选地,筛选条件信息还可包括类型条件信息,类型条件信息可包括用于对第一数据库的各变更记录的变更类型进行筛选的类型标识;其中,变更类型包括数据对象变更或者库表结构变更。
需要说明的是,由于数据库的变更类型包括数据对象变更,如库表A中的第一行、第一列中的对象的数值变更;以及库表结构变更,如库表A的最后添加一行,因此,数据筛选条件还可包括类型条件。例如,类型条件信息包括数据对象变更标识,则类型条件信息可表征数据筛选条件:变更类型为数据对象变更;再如,类型条件信息包括数据对象变更标识和库表结构变更标识,则类型条件信息可表征数据筛选条件:变更类型为数据对象变更或者库表结构变更。
需要说明的是,筛选条件信息可包括时间条件信息、对象条件信息和类型条件信息的任意组合。例如,筛选条件信息可仅包括起始时间点C和结束时间点D,则该筛选条件信息表示的筛选条件为:从时间点C到时间点D内产生的所有变更记录。再如,筛选条件信息还可仅包括库表标识K1,则该筛选条件信息表示的筛选条件为:库表K1产生的所有变更记录。再如,筛选条件信息包括数据对象变更,则该筛选条件信息表示的筛选条件为:变更类型为数据对象变更的所有变更记录。同理,若筛选条件信息包括起始时间点C和结束时间点D,以及库表标识K1,则该筛选条件信息表示的筛选条件为:库表K1在时间点C到时间点D内产生的所有变更记录。若筛选条件信息包括起始时间点C和结束时间点D、库表标识K1和库表结构变更,则该筛选条件信息表示的筛选条件为:库表K1在时间点C到时间点D内产生的变更类型为库表结构变更的所有变更记录。
步骤203:云平台从中间文件中,读取满足该筛选条件信息的变更记录;其中,中间文件是通过预先对第一数据库的日志文件进行读取和解析得到的。
优选地,中间文件可记录第一数据库的所有库表在第二设定时间段内产生的、各种变更类型的变更记录。第二设定时间段可根据实际使用需求灵活设置,例如,在当前时刻之前、且距离当前时刻的时长不大于120小时的时间段;也就是说,为了在满足需求的前提下尽量地节约存储空间,中间文件可仅保存第一数据库的最近一段时间内的变更记录。另外需要说明的是,优选地,第一设定时间段位于第二设定时间段内,即,为了确保数据传输的有效性,客户端仅可请求重复传输、选择时间段传输或者精确到时间点回滚中间文件中记录的变更记录。
另外,需要说明的是,中间文件可包括一个或两个以上的子文件,任一子文件用于记录对应时间内产生的变更记录;例如,可将2018年2月14日产生的所有变更记录顺序写入子文件11中,在子文件11写满后再顺序写入子文件12中;将2018年2月15日产生的所有变更记录顺序写入子文件21中,以此类推,此处不再赘述。
优选地,步骤203云平台从中间文件中,读取满足该筛选条件信息的变更记录,可具体包括:
根据索引文件,确定满足该筛选条件信息的各变更记录在中间文件中的位置;其中,索引文件是在对第一数据库的日志文件进行读取和解析以生成中间文件时生成的、用于记录中间文件中的各变更记录的位置信息的文件;
依次读取满足该筛选条件信息的各变更记录。
同样可选地,优选地,步骤203云平台从中间文件中,读取满足该筛选条件信息的变更记录,还可具体包括:云平台采用查找的方式,从中间文件中,依次读取满足该筛选条件信息的变更记录。
也就是说,除了可采用查找的方式对中间文件进行读取之外,为了进一步提高数据传输效率以及数据传输的速度,可优选采用索引的方式对中间文件进行读取。
进一步可选地,中间文件中的信息可通过以下方式记录得到:
按照时间先后顺序,对第一数据库的日志文件中的每个事务执行以下操作:
按照时间先后顺序,读取、解析并记录当前事务的每条变更记录,并在将当前事务的最后一条变更记录写入中间文件时,对应插入相应的事务索引标识。
优选地,可基于图3所示的DDL/DML事务解析状态机对任一事务进行解析。DDL是SQL语言集中,负责数据结构定义与数据库对象定义的语言;DML(Data ManipulationLanguage,数据操作语言)是SQL语言集中,负责对数据库对象运行数据访问工作的指令集。GTID(Global Transaction Identifier,全局事务标识)是MySQL(关系型数据库管理系统)中标识事务的全局唯一的标识符。DDL/DML事务解析状态机共包括4个状态:初始状态、事务的GTID状态、DDL状态,以及DML状态。对当前事务进行解析,首先从初始状态开始,顺序地根据读取到的每条变更记录跳转至对应的下一状态,直至获取结束事务的标记则跳转回初始状态,当前事务解析完成,且准备开始对下一事务进行解析。
需要说明的是,在将每个事务的最后一条变更记录写入中间文件时插入相应的事务索引标识,是为了对中间文件中记录的各事务进行划分;同样可选地,为达到同样的目的,还可在将每个事务的第一条变更记录写入中间文件时插入对应的事务索引标识,本实施例在此不作任何限定。
进一步可选地,针对当前变更记录,云平台对当前变更记录进行读取、解析并写入中间文件,可具体包括以下步骤:
步骤A1:读取当前变更记录;
步骤A2:判断当前变更记录的变更类型为库表结构变更或数据对象变更;若确定当前变更记录的变更类型为库表结构变更,则跳转至步骤A3;若确定当前变更记录的变更类型为数据对象变更,则跳转至步骤A5;
步骤A3:对当前变更记录进行解析,确定当前变更记录对应的结构变更内容,并存储当前变更记录对应的结构变更内容;
步骤A4:将确定结构变更内容的当前变更记录顺序写入中间文件,并将当前变更记录在中间文件中的位置信息写入索引文件;跳转至步骤A8;
步骤A5:对当前变更记录进行解析,确定当前变更记录对应的变更对象;
步骤A6:通过查询获取当前变更记录对应的变更对象的结构信息;
步骤A7:将确定结构信息和变更对象的当前变更记录顺序写入中间文件,并将当前变更记录在中间文件中的位置信息写入索引文件;跳转至步骤A8;
步骤A8:当前变更记录解析结束。
需要说明的是,可设置设定组件,用于在步骤A3中记录当前变更记录对应的结构变更内容,例如,记录设定库表增加一行;以及用于在步骤A6中为发生变更的数据对象的结构信息提供查询接口,例如,提供发生变更的数据对象的所在行信息和/或所在列信息;也就是说,该设定组件可顺序记录并保存每一次数据结构的变更,从而对于任一数据对象的变更,可通过查询该设定组件,确定变更的数据对象的具体结构信息。
进一步可选地,云平台将确定结构变更内容的当前变更记录顺序写入中间文件,还可具体包括:采用设定数据格式,将确定结构变更内容的当前变更记录顺序写入中间文件。
同样可选地,云平台将确定结构信息和变更对象的当前变更记录顺序写入中间文件,可具体包括:采用设定数据格式,将确定结构信息和变更对象的当前变更记录顺序写入中间文件。
设定数据格式可根据实际使用需求灵活设置,在本实施例的一种可实施方式中,设定数据格式可包括:
变更类型为库表结构变更的变更记录的数据格式为:第一设定数据单元用于记录当前变更记录的开始标识、第二设定数据单元用于记录当前变更记录的结尾标识,以及第三设定数据单元用于记录当前变更记录对应的设定DDL语句本身。也就是说,可用DDL语句本身来记录变更类型为库表结构变更的变更记录。
设定数据格式还可包括:变更类型为数据对象变更的变更记录的数据格式为:第一设定数据单元用于记录当前变更记录的开始标识、第二设定数据单元用于记录当前变更记录的结尾标识,以及第四设定数据单元用于记录镜像数据;其中,镜像数据包括:前镜像数据和/或后镜像数据。
需要说明的是,前镜像数据可指库表中的一行数据修改前的完整值,后镜像数据可指库表中的一行数据修改后的完整值。进一步可选地,在变更类型为数据对象变更的变更记录中,对于插入数据对象的变更,第四设定数据单元可仅记录后镜像数据;对于更新数据对象的变更,第四设定数据单元可记录前镜像数据以及后镜像数据;对于删除数据对象的变更,第四设定数据单元可仅记录前镜像数据。
另外,仍需说明的是,第一设定数据单元、第二设定数据单元、第三设定数据单元,以及第四设定数据单元的空间大小、以及各自之间的相对位置关系均可根据实际使用需求灵活设置,本实施例在此不作任何限定。
优选地,云平台在预先对第一数据库的日志文件进行读取和解析生成中间文件的同时,还可同时生成备用中间文件;也就是说,云平台可同时写中间文件和备用中间文件,以使得在有突发情况发生导致中间文件不可用时,备用中间文件可及时替代中间文件参与数据传输的各读、写流程,确保系统的可靠性和高效性。
步骤204:云平台将读取到的变更记录返回给客户端。
优选地,云平台可基于设定的传输协议,将读取到的变更记录返回给客户端,例如,Protobuf协议,本实施例在此不作任何限定。
优选地,在步骤204云平台将读取到的变更记录返回给客户端之后,所述方法还可包括:
基于设定数据格式,客户端对接收到的变更记录进行解析;
并根据解析结果,变更第二数据库。
现有数据库的二进制数据格式本身与存储引擎无关,但是却无法在不同的数据库服务器之间通用;例如,MySQL数据库的二进制数据无法直接传输到SQL Server(关系型数据库管理系统)数据库,SQL Server数据库的二进制数据无法直接传输到MySQL数据库。
但是,在本实施例提供的所述数据传输方法中,对于第一数据库中的变更记录,云平台可根据设定数据格式写中间文件;因此,客户端也可根据该设定数据格式,对接收到的中间文件中的变更记录进行解析,并根据第二数据库的语法,构造对应的程序语句将各变更复制到第二数据库中,即对第二数据库进行更新,这样即便第一数据库与第二数据库异构,数据也可在第一数据库与第二数据库之间传输,即打通了异构数据库之间的数据传输的通路。
下面将以具体实例为例,对本实施例提供的所述数据传输方法进行详细说明。
如图4所示,其为云平台和终端的系统架构图,云平台可包括第一数据库、日志搬运模块、数据库结构变更检查模块、云平台服务器、数据库存储模块,以及操作接口模块;客户端可包括:控制台和客户端控制模块。
其中,控制台可供用户查看、修改配置信息等,以及用于与云平台进行信息交互。客户端控制模块可主要负责数据的组装及适配等。
操作接口模块为对客户端的控制台提供的操作接口。云台服务器具体可为采用双机热备架构的服务器,用于接收客户端上报的各请求以及分发数据。数据库存储模块用于存储客户端的配置信息以及索引文件等信息。日志搬运模块主要用于对第一数据库的日志文件进行读取和解析,以生成中间文件。数据库结构变更检查模块可具体为数据库结构变更的检查组件,用于记录并保存每一次数据库结构的变更。
则基于上述云平台和终端的系统架构,本实施例提供的所述数据传输方法可具体包括以下步骤:
步骤B1:控制台通过操作接口模块向云平台服务器发送数据获取请求,该数据获取请求中携带有数据通道的标识信息。
步骤B2:云平台服务器根据该数据传输通道的标识信息,以及预先存储在数据库存储模块中的数据传输通道标识与筛选条件的对应关系,确定筛选条件信息;
步骤B3:根据预先存储在数据库存储模块中的索引文件,确定满足该筛选条件信息的各变更记录在中间文件中的位置,并依次读取满足该筛选条件信息的各变更记录。
步骤B4:云平台服务器将读取到的变更记录返回给客户端的客户端控制模块,以由客户端控制模块对接收到的数据进行组装以及更新第二数据库。
另外,基于上述云平台和终端的系统架构,在本实施例提供的所述数据传输方法中,云平台对任一变更记录进行读取、解析并写入中间文件的步骤流程可具体包括:
步骤C1:日志搬运模块读取当前变更记录;
步骤C2:日志搬运模块判断当前变更记录的变更类型为库表结构变更或数据对象变更;若确定当前变更记录的变更类型为库表结构变更,则跳转至步骤C3;若确定当前变更记录的变更类型为数据对象变更,则跳转至步骤C5;
步骤C3:日志搬运模块对当前变更记录进行解析,确定当前变更记录对应的结构变更内容,并将当前变更记录对应的结构变更内容存储到数据库结构变更检查模块;
步骤C4:日志搬运模块将确定结构变更内容的当前变更记录顺序写入中间文件,并将当前变更记录在中间文件中的位置信息写入索引文件;跳转至步骤C8;
步骤C5:日志搬运模块对当前变更记录进行解析,确定当前变更记录对应的变更对象;
步骤C6:日志搬运模块通过查询数据库结构变更检查模块,获取当前变更记录对应的变更对象的结构信息;
步骤C7:日志搬运模块将确定结构信息和变更对象的当前变更记录顺序写入中间文件,并将当前变更记录在中间文件中的位置信息写入索引文件;跳转至步骤C8;
步骤C8:当前变更记录解析结束。
另外,基于上述云平台和终端的系统架构,在本实施例提供的所述数据传输方法中,云平台与客户端之间建立数据传输通道的步骤流程可具体包括:
步骤D1:云平台服务器通过操作接口模块接收控制台发送的数据订阅请求,该数据订阅请求中携带有筛选条件信息;
步骤D2:云平台服务器响应于该数据订阅请求,创建数据传输通道,并生成数据传输通道的标识;
步骤D3:云平台服务器将数据传输通道的标识与筛选条件信息对应存储在数据库存储模块中;
步骤D4:云平台服务器通过操作接口模块将数据传输通道的标识返回给控制台。
综上所述,本发明实施例提供的数据传输方法,客户端可向云平台发送数据获取请求,数据获取请求中携带有请求标识信息;云平台根据请求标识信息,确定筛选条件信息,并通过索引,从中间文件中,读取满足该筛选条件信息的变更记录;其中,中间文件是云平台通过预先对第一数据库的日志文件进行读取和解析得到的,并记录了第一数据库的所有库表在第一设定时间段内产生的、各种变更类型的变更记录的文件;客户端接收云平台返回的满足该筛选条件信息的变更记录。也就是说,可通过对数据库的日志文件进行读取生成中间文件,实现日志文件中变更记录的异步读取和传输,进而在数据传输时可根据筛选条件信息传输中间文件中记录的满足筛选条件信息的变更记录,因此,不仅可节约网络资源、提高数据传输效率,而且还满足了客户端的定制化需求。
基于同样的发明构思,本发明实施例一还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行上述以云平台为实施主体的数据传输方法。
基于同样的发明构思,本发明实施例一还提供了另一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行上述以客户端为实施主体的数据传输方法。
实施例二:
基于同样的发明构思,本发明实施例二提供了一种云平台,具体地,如图5所示,其为本发明实施例二中所述云平台的结构示意图,可包括:
接收模块501,用于接收客户端发送的数据获取请求,根据数据获取请求确定筛选条件信息;
处理模块502,用于从中间文件中,读取满足该筛选条件信息的变更记录;其中,中间文件是通过预先对设定数据库的日志文件进行读取和解析得到的;
发送模块503,用于将读取到的变更记录返回给客户端。
优选地,筛选条件信息可包括以下至少一个:
时间条件信息,包括用于对设定数据库的各变更记录的产生时间进行筛选的第一设定时间段;
对象条件信息,包括用于对设定数据库的各变更记录所对应的库表进行筛选的库表标识;
类型条件信息,包括用于对设定数据库的各变更记录的变更类型进行筛选的类型标识;其中,变更类型包括数据对象变更或者库表结构变更。
优选地,中间文件记录了设定数据库的所有库表在第二设定时间段内产生的、各种变更类型的变更记录的文件;其中,第一设定时间段位于第二设定时间段内;
云平台还可包括日志解析模块,用于按照时间先后顺序,对设定数据库的日志文件中的每个事务执行以下操作:按照时间先后顺序,读取、解析并记录当前事务的每条变更记录,并在将当前事务的最后一条变更记录写入中间文件时,对应插入相应的事务索引标识。
进一步可选地,日志解析模块,可具体用于通过以下方式实现读取、解析并记录当前变更记录:
读取当前变更记录;
判断当前变更记录的变更类型为库表结构变更或数据对象变更;
若确定当前变更记录的变更类型为库表结构变更,则对当前变更记录进行解析,确定当前变更记录对应的结构变更内容,并存储当前变更记录对应的结构变更内容,以及,将确定结构变更内容的当前变更记录顺序写入中间文件,并将当前变更记录在中间文件中的位置信息写入索引文件;
若确定当前变更记录的变更类型为数据对象变更,则对当前变更记录进行解析,确定当前变更记录对应的变更对象,并通过查询获取当前变更记录对应的变更对象的结构信息,以及,将确定结构信息和变更对象的当前变更记录顺序写入中间文件,并将当前变更记录在中间文件中的位置信息写入索引文件。
进一步可选地,处理模块502,可具体用于根据索引文件,确定满足筛选条件信息的各变更记录在中间文件中的位置;其中,索引文件是在对设定数据库的日志文件进行读取和解析以生成中间文件时生成的、用于记录中间文件中的各变更记录的位置信息的文件;以及,依次读取满足该筛选条件信息的各变更记录。
同样可选地,处理模块502,可具体用于采用设定数据格式,将确定结构变更内容的当前变更记录顺序写入中间文件;或者,采用设定数据格式,将确定结构信息和变更对象的当前变更记录顺序写入中间文件。
进一步可选地,设定数据格式可包括:
变更类型为库表结构变更的变更记录的数据格式为:第一设定数据单元用于记录当前变更记录的开始标识、第二设定数据单元用于记录当前变更记录的结尾标识,以及第三设定数据单元用于记录当前变更记录对应的设定DDL语句本身;
变更类型为数据对象变更的变更记录的数据格式为:第一设定数据单元用于记录当前变更记录的开始标识、第二设定数据单元用于记录当前变更记录的结尾标识,以及第四设定数据单元用于记录镜像数据;其中,镜像数据包括:前镜像数据和/或后镜像数据。
优选地,数据获取请求中携带有数据传输通道的标识信息;
接收模块501,还可具体用于根据数据传输通道的标识信息,以及预先存储的数据传输通道标识与筛选条件的对应关系,确定筛选条件信息。
进一步可选地,接收模块501,在接收客户端发送的数据获取请求之前,还可用于:
接收客户端发送的数据订阅请求,该数据订阅请求中携带有筛选条件信息;
响应于该数据订阅请求,创建数据传输通道,并生成数据传输通道的标识;
将数据传输通道的标识与该筛选条件信息对应存储;
将数据传输通道的标识返回给客户端。
同样可选地,接收模块501,在接收客户端发送的数据获取请求之前,还可用于:
接收客户端发送的数据订阅请求,数据订阅请求中携带有设定数据库的标识信息以及筛选条件信息;
响应于该数据订阅请求,创建数据传输通道,并生成数据传输通道的标识;
将数据传输通道的标识、设定数据库的标识信息以及该筛选条件信息对应存储;
将数据传输通道的标识返回给客户端。
进一步可选地,接收模块501,在接收客户端发送的数据获取请求之后,根据数据获取请求确定筛选条件信息之前,还可用于:
根据预先存储的数据传输通道标识与数据库标识的对应关系,确定设定数据库。
综上所述,本发明实施例提供的云平台,可包括:接收模块,用于接收客户端发送的数据获取请求,根据数据获取请求确定筛选条件信息;处理模块,用于从中间文件中,读取满足筛选条件信息的变更记录;其中,中间文件是通过预先对设定数据库的日志文件进行读取和解析得到的;发送模块,用于将读取到的变更记录返回给客户端。也就是说,云平台可通过对数据库的日志文件进行读取生成中间文件,实现日志文件中变更记录的异步读取和传输,进而在数据传输时可根据筛选条件信息传输中间文件中记录的满足筛选条件信息的变更记录,因此,不仅可节约网络资源、提高数据传输效率,而且还满足了客户端的定制化需求。
实施例三:
基于同样的发明构思,本发明实施例三提供了一种客户端,具体地,如图6所示,其为本发明实施例三中所述客户端的结构示意图,可包括:
发送模块601,用于向云平台发送数据获取请求,以由云平台根据该数据获取请求确定筛选条件信息,并从中间文件中,读取满足该筛选条件信息的变更记录;
接收模块602,用于接收云平台返回的满足该筛选条件信息的变更记录;
其中,中间文件是由云平台通过预先对第一数据库的日志文件进行读取和解析得到的。
优选地,筛选条件信息可包括以下至少一个:
时间条件信息,包括用于对第一数据库的各变更记录的产生时间进行筛选的第一设定时间段;
对象条件信息,包括用于对第一数据库的各变更记录所对应的库表进行筛选的库表标识;
类型条件信息,包括用于对第一数据库的各变更记录的变更类型进行筛选的类型标识;其中,变更类型包括数据对象变更或者库表结构变更。
优选地,接收模块602,在接收云平台返回的满足筛选条件信息的变更记录之后,还可用于:
基于设定数据格式,对接收到的变更记录进行解析;
根据解析结果,变更第二数据库;
其中,中间文件,具体为基于设定数据格式并按照时间顺序依次记录的、第一数据库的所有库表在第二设定时间段内产生的、各种变更类型的变更记录的文件。
进一步可选地,设定数据格式,可具体包括:
变更类型为库表结构变更的变更记录的数据格式为:第一设定数据单元用于记录该变更记录的开始标识、第二设定数据单元用于记录该变更记录的结尾标识,以及第三设定数据单元用于记录该变更记录对应的设定DDL语句本身;
变更类型为数据对象变更的变更记录的数据格式为:第一设定数据单元用于记录该变更记录的开始标识、第二设定数据单元用于记录该变更记录的结尾标识,以及第四设定数据单元用于记录镜像数据;其中,镜像数据包括:前镜像数据和/或后镜像数据。
优选地,发送模块601,可具体用于向云平台发送数据获取请求,该数据获取请求中携带有数据传输通道的标识信息,以由云平台根据数据传输通道的标识信息确定筛选条件信息。
进一步可选地,发送模块601,在向云平台发送数据获取请求之前,还可用于向云平台发送数据订阅请求,该数据订阅请求中携带有筛选条件信息,以由云平台响应于该数据订阅请求,创建数据传输通道,生成数据传输通道的标识,并将数据传输通道的标识与该筛选条件信息对应存储;
接收模块602,还可用于接收云平台返回的数据传输通道的标识。
同样可选地,发送模块601,在向云平台发送数据获取请求之前,还可用于向云平台发送数据订阅请求,数据订阅请求中携带有第一数据库的标识信息以及筛选条件信息,以由云平台响应于数据订阅请求,创建数据传输通道,并生成数据传输通道的标识,并将数据传输通道的标识、第一数据库的标识信息以及筛选条件信息对应存储;
所述接收模块602,还可用于接收所述云平台返回的所述数据传输通道的标识。
综上所述,本发明实施例提供的客户端,可包括:发送模块,用于向云平台发送数据获取请求,以由云平台根据数据获取请求确定筛选条件信息,并从中间文件中,读取满足该筛选条件信息的变更记录;接收模块,用于接收云平台返回的满足该筛选条件信息的变更记录;其中,中间文件是由云平台通过预先对第一数据库的日志文件进行读取和解析得到的。
实施例四:
基于同样的发明构思,本发明实施例四提供了一种数据传输系统,具体地,如图7所示,其为本发明实施例四中所述数据传输系统的结构示意图,可包括:
客户端701,用于向云平台702发送数据获取请求;
云平台702,用于根据该数据获取请求确定筛选条件信息,并从中间文件中,读取满足该筛选条件信息的变更记录;并将满足该筛选条件信息的变更记录返回给客户端701;其中,中间文件是云平台702通过预先对设定数据库的日志文件进行读取和解析得到的。
综上所述,本发明实施例提供的数据传输系统,云平台可通过对数据库的日志文件进行读取生成中间文件,实现日志文件中变更记录的异步读取和传输,进而在数据传输时可根据筛选条件信息传输中间文件中记录的满足筛选条件信息的变更记录,因此,不仅可节约网络资源、提高数据传输效率,而且还满足了客户端的定制化需求。
实施例五:
本发明实施例五提供了一种计算机装置,如图8所示,其为本发明实施例中所述的计算机装置的结构示意图。该计算机装置具体可以为专用服务器或通用服务器等。具体地,由图8可知,本发明实施例中所述的计算机装置可以包括中央处理器801(CenterProcessing Unit,CPU)、存储器802、输入设备803以及输出设备804等,输入设备803可以包括键盘、鼠标和/或触摸屏等,输出设备804可以包括显示设备,如液晶显示器(LiquidCrystal Display,LCD)、阴极射线管(Cathode Ray Tube,CRT)等。
存储器802可以包括只读存储器(ROM)和随机存取存储器(RAM),并向中央处理器801提供存储器802中存储的程序指令和数据。在本发明实施例中,存储器802可以用于存储本发明实施例一中的以云平台为实施主体的数据传输方法的程序。
中央处理器801通过调用存储器802存储的程序指令,中央处理器801可用于按照获得的程序指令执行:接收客户端发送的数据获取请求,根据该数据获取请求确定筛选条件信息;以及,从中间文件中,读取满足该筛选条件信息的变更记录;其中,中间文件是通过预先对设定数据库的日志文件进行读取和解析得到的;并将读取到的变更记录返回给客户端。
实施例六:
本发明实施例六提供了一种计算机装置,如图9所示,其为本发明实施例中所述的计算机装置的结构示意图。该计算机装置具体可以为桌面计算机、便携式计算机、移动终端等。具体地,由图9可知,本发明实施例中所述的计算机装置可以包括中央处理器901(Center Processing Unit,CPU)、存储器902、输入设备903以及输出设备904等,输入设备903可以包括键盘、鼠标和/或触摸屏等,输出设备904可以包括显示设备,如液晶显示器(Liquid Crystal Display,LCD)、阴极射线管(Cathode Ray Tube,CRT)等。
存储器902可以包括只读存储器(ROM)和随机存取存储器(RAM),并向中央处理器901提供存储器902中存储的程序指令和数据。在本发明实施例中,存储器902可以用于存储本发明实施例一中的以客户端为实施主体的数据传输方法的程序。
中央处理器901通过调用存储器902存储的程序指令,中央处理器901可用于按照获得的程序指令执行:向云平台发送数据获取请求,以由云平台根据该数据获取请求确定筛选条件信息,并从中间文件中,读取满足该筛选条件信息的变更记录;以及,接收云平台返回的满足该筛选条件信息的变更记录;其中,中间文件是由云平台通过预先对第一数据库的日志文件进行读取和解析得到的。
此外,附图和说明书中的任何元素数量均用于示例而非限制,以及任何命名都仅用于区分,而不具有任何限制含义。
本领域技术人员应明白,本发明的实施例可提供为方法、装置(设备)、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、装置(设备)和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其它可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其它可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其它可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其它可编程数据处理设备上,使得在计算机或其它可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其它可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (13)

1.一种数据传输方法,其特征在于,所述方法包括:
云平台接收客户端发送的数据获取请求,根据所述数据获取请求确定筛选条件信息;其中,所述筛选条件信息包括以下至少一个:时间条件信息,包括用于对设定数据库的各变更记录的产生时间进行筛选的第一设定时间段;对象条件信息,包括用于对所述设定数据库的各变更记录所对应的库表进行筛选的库表标识;类型条件信息,包括用于对所述设定数据库的各变更记录的变更类型进行筛选的类型标识,所述变更类型包括数据对象变更或者库表结构变更;
所述云平台从中间文件中,读取满足所述筛选条件信息的变更记录;其中,所述中间文件是所述云平台通过对所述设定数据库的日志文件进行读取和解析得到的,所述中间文件记录有所述设定数据库的所有库表在第二设定时间段内产生的、各种变更类型的变更记录,所述第一设定时间段位于所述第二设定时间段内;
所述云平台将读取到的变更记录返回给所述客户端;
所述云平台在从中间文件中,读取满足所述筛选条件信息的变更记录之前,所述方法还包括:确定所述中间文件;
确定所述中间文件,具体包括:按照时间先后顺序,对所述设定数据库的日志文件中的每个事务执行以下操作:按照时间先后顺序,读取、解析并记录当前事务的每条变更记录;
读取、解析并记录当前变更记录,具体包括:
读取当前变更记录;
判断当前变更记录的变更类型为库表结构变更或数据对象变更;
若确定当前变更记录的变更类型为库表结构变更,则对当前变更记录进行解析,确定当前变更记录对应的结构变更内容,并通过设定组件存储当前变更记录对应的结构变更内容,以及,将确定结构变更内容的当前变更记录顺序写入所述中间文件;
若确定当前变更记录的变更类型为数据对象变更,则对当前变更记录进行解析,确定当前变更记录对应的变更对象,并通过查询设定组件获取当前变更记录对应的变更对象的结构信息,以及,将确定结构信息和变更对象的当前变更记录顺序写入所述中间文件;其中,所述设定组件用于记录并保存每一次数据对象的结构信息的变更。
2.如权利要求1所述的数据传输方法,其特征在于,所述确定所述中间文件,具体还包括:
在将当前事务的最后一条变更记录写入所述中间文件时,对应插入相应的事务索引标识。
3.如权利要求2所述的数据传输方法,其特征在于,所述将确定结构变更内容的当前变更记录顺序写入所述中间文件之后,还包括:
将当前变更记录在所述中间文件中的位置信息写入索引文件;或者
所述将确定结构信息和变更对象的当前变更记录顺序写入所述中间文件之后,还包括:
将当前变更记录在所述中间文件中的位置信息写入索引文件。
4.如权利要求3所述的数据传输方法,其特征在于,从中间文件中,读取满足所述筛选条件信息的变更记录,具体包括:
根据所述索引文件,确定满足所述筛选条件信息的各变更记录在所述中间文件中的位置;其中,所述索引文件是在对所述设定数据库的日志文件进行读取和解析以生成所述中间文件时生成的、用于记录所述中间文件中的各变更记录的位置信息的文件;
依次读取满足所述筛选条件信息的各变更记录。
5.如权利要求3所述的数据传输方法,其特征在于,
所述将确定结构变更内容的当前变更记录顺序写入所述中间文件,具体包括:采用设定数据格式,将确定结构变更内容的当前变更记录顺序写入所述中间文件;
所述将确定结构信息和变更对象的当前变更记录顺序写入所述中间文件,具体包括:采用设定数据格式,将确定结构信息和变更对象的当前变更记录顺序写入所述中间文件。
6.如权利要求5所述的数据传输方法,其特征在于,所述设定数据格式包括:
变更类型为库表结构变更的变更记录的数据格式为:第一设定数据单元用于记录当前变更记录的开始标识、第二设定数据单元用于记录当前变更记录的结尾标识,以及第三设定数据单元用于记录当前变更记录对应的设定DDL语句本身;
变更类型为数据对象变更的变更记录的数据格式为:第一设定数据单元用于记录当前变更记录的开始标识、第二设定数据单元用于记录当前变更记录的结尾标识,以及第四设定数据单元用于记录镜像数据;其中,镜像数据包括:前镜像数据和/或后镜像数据。
7.如权利要求1所述的数据传输方法,其特征在于,所述数据获取请求中携带有数据传输通道的标识信息;
根据所述数据获取请求确定筛选条件信息,具体包括:
根据所述数据传输通道的标识信息,以及预先存储的数据传输通道标识与筛选条件的对应关系,确定所述筛选条件信息。
8.如权利要求7所述的数据传输方法,其特征在于,在接收客户端发送的数据获取请求之前,所述方法还包括:
接收所述客户端发送的数据传输通道建立请求,所述数据传输通道建立请求中携带有所述筛选条件信息;
响应于所述数据传输通道建立请求,创建数据传输通道,并生成所述数据传输通道的标识;
将所述数据传输通道的标识与所述筛选条件信息对应存储;
将所述数据传输通道的标识返回给所述客户端。
9.一种云平台,其特征在于,包括:
接收模块,用于接收客户端发送的数据获取请求,根据所述数据获取请求确定筛选条件信息;其中,所述筛选条件信息包括以下至少一个:时间条件信息,包括用于对设定数据库的各变更记录的产生时间进行筛选的第一设定时间段;对象条件信息,包括用于对所述设定数据库的各变更记录所对应的库表进行筛选的库表标识;类型条件信息,包括用于对所述设定数据库的各变更记录的变更类型进行筛选的类型标识,所述变更类型包括数据对象变更或者库表结构变更;
处理模块,用于从中间文件中,读取满足所述筛选条件信息的变更记录;其中,所述中间文件是通过预先对所述设定数据库的日志文件进行读取和解析得到的,所述中间文件记录有所述设定数据库的所有库表在第二设定时间段内产生的、各种变更类型的变更记录,所述第一设定时间段位于所述第二设定时间段内;
发送模块,用于将读取到的变更记录返回给所述客户端;
所述云平台还包括日志解析模块,用于按照时间先后顺序,对所述设定数据库的日志文件中的每个事务执行以下操作:按照时间先后顺序,读取、解析并记录当前事务的每条变更记录;
所述日志解析模块,具体用于通过以下方式实现读取、解析并记录当前变更记录:
读取当前变更记录;
判断当前变更记录的变更类型为库表结构变更或数据对象变更;
若确定当前变更记录的变更类型为库表结构变更,则对当前变更记录进行解析,确定当前变更记录对应的结构变更内容,并通过设定组件存储当前变更记录对应的结构变更内容,以及,将确定结构变更内容的当前变更记录顺序写入所述中间文件;
若确定当前变更记录的变更类型为数据对象变更,则对当前变更记录进行解析,确定当前变更记录对应的变更对象,并通过查询设定组件获取当前变更记录对应的变更对象的结构信息,以及,将确定结构信息和变更对象的当前变更记录顺序写入所述中间文件;其中,所述设定组件用于记录并保存每一次数据对象的结构信息的变更。
10.如权利要求9所述的云平台,其特征在于,所述日志解析模块,还用于在将当前事务的最后一条变更记录写入所述中间文件时,对应插入相应的事务索引标识。
11.如权利要求10所述的云平台,其特征在于,所述日志解析模块,还用于:
将确定结构变更内容的当前变更记录顺序写入所述中间文件之后,将当前变更记录在所述中间文件中的位置信息写入索引文件;或者
将确定结构信息和变更对象的当前变更记录顺序写入所述中间文件之后,将当前变更记录在所述中间文件中的位置信息写入索引文件。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行权利要求1~8任一项所述的数据传输方法。
13.一种计算机装置,其特征在于,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序指令执行权利要求1~8任一项所述的数据传输方法。
CN201810179792.1A 2018-03-05 2018-03-05 一种数据传输方法及相关设备 Active CN110198327B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810179792.1A CN110198327B (zh) 2018-03-05 2018-03-05 一种数据传输方法及相关设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810179792.1A CN110198327B (zh) 2018-03-05 2018-03-05 一种数据传输方法及相关设备

Publications (2)

Publication Number Publication Date
CN110198327A CN110198327A (zh) 2019-09-03
CN110198327B true CN110198327B (zh) 2021-09-28

Family

ID=67751280

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810179792.1A Active CN110198327B (zh) 2018-03-05 2018-03-05 一种数据传输方法及相关设备

Country Status (1)

Country Link
CN (1) CN110198327B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110825696B (zh) * 2019-11-06 2023-05-02 联想(北京)有限公司 处理方法及处理装置
CN111522870B (zh) * 2020-04-09 2023-12-08 咪咕文化科技有限公司 数据库访问方法、中间件和可读存储介质
CN111625552B (zh) * 2020-05-20 2024-01-02 北京百度网讯科技有限公司 数据收集方法、装置、设备和可读存储介质
CN112468594A (zh) * 2020-12-01 2021-03-09 北京秒针人工智能科技有限公司 一种定制数据传输的方法、系统、设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103221949A (zh) * 2010-07-27 2013-07-24 甲骨文国际公司 Mysql数据库的异构的基于日志的复制
CN104951474A (zh) * 2014-03-31 2015-09-30 阿里巴巴集团控股有限公司 一种用于获取MySQL binlog增量日志的方法和装置
CN106407356A (zh) * 2016-09-07 2017-02-15 网易(杭州)网络有限公司 一种数据备份方法及装置
CN106446050A (zh) * 2016-08-31 2017-02-22 北京云纵信息技术有限公司 一种针对数据库的变化数据进行订阅的方法及系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103221949A (zh) * 2010-07-27 2013-07-24 甲骨文国际公司 Mysql数据库的异构的基于日志的复制
CN104951474A (zh) * 2014-03-31 2015-09-30 阿里巴巴集团控股有限公司 一种用于获取MySQL binlog增量日志的方法和装置
CN106446050A (zh) * 2016-08-31 2017-02-22 北京云纵信息技术有限公司 一种针对数据库的变化数据进行订阅的方法及系统
CN106407356A (zh) * 2016-09-07 2017-02-15 网易(杭州)网络有限公司 一种数据备份方法及装置

Also Published As

Publication number Publication date
CN110198327A (zh) 2019-09-03

Similar Documents

Publication Publication Date Title
CN110198327B (zh) 一种数据传输方法及相关设备
CN107506451B (zh) 用于数据交互的异常信息监控方法及装置
CN110032604B (zh) 数据存储装置、转译装置及数据库访问方法
CN111666326B (zh) Etl调度方法及装置
CN109446218A (zh) Sql语句生成方法、装置及计算机可读存储介质
CN109241384B (zh) 一种科研信息的可视化方法及装置
CN111338637A (zh) 一种代码生成方法及装置
CN109977099A (zh) 数据库部署方法、用户设备、存储介质及装置
CN111143470A (zh) 跨平台数据库数据同步比对方法及装置
CN111367976A (zh) 基于java反射机制的excel文件数据的导出方法及装置
CN110968579A (zh) 执行计划的生成与执行方法、数据库引擎及存储介质
CN113177090A (zh) 数据处理方法及装置
CN110019444B (zh) 一种操作请求处理方法、装置、设备及系统
CN110941629B (zh) 元数据处理方法、装置、设备及计算机可读存储介质
CN114416868B (zh) 一种数据同步方法、装置、设备及存储介质
CN112416991A (zh) 一种数据处理方法、装置以及存储介质
CN114185791A (zh) 一种数据映射文件的测试方法、装置、设备及存储介质
CN115114325B (zh) 数据查询方法、装置、电子设备以及存储介质
CN116186082A (zh) 基于分布式的数据汇总方法、第一服务器和电子设备
US20230195792A1 (en) Database management methods and associated apparatus
CN111639478B (zh) 一种基于excel文档的数据自动稽核方法及系统
CN111339100A (zh) 数据核对方法及装置
CN116521652B (zh) 一种基于DataX实现分布式异构数据库迁移方法、系统和介质
CN114237699B (zh) 一种配置脚本的导出方法、装置及存储介质
CN113190236B (zh) Hql脚本校验方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20230922

Address after: 309 West, floor 3, No. 49, Zhichun Road, Haidian District, Beijing 100080

Patentee after: TENCENT CLOUD COMPUTING (BEIJING) Co.,Ltd.

Address before: 35th floor, Tencent building, Keji Zhongyi Road, high tech Zone, Nanshan District, Shenzhen City, Guangdong Province

Patentee before: TENCENT TECHNOLOGY (SHENZHEN) Co.,Ltd.