CN115982285B - 数据处理方法、设备及计算机可读存储介质 - Google Patents
数据处理方法、设备及计算机可读存储介质 Download PDFInfo
- Publication number
- CN115982285B CN115982285B CN202310259378.2A CN202310259378A CN115982285B CN 115982285 B CN115982285 B CN 115982285B CN 202310259378 A CN202310259378 A CN 202310259378A CN 115982285 B CN115982285 B CN 115982285B
- Authority
- CN
- China
- Prior art keywords
- event
- database
- data
- log event
- identification information
- 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
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Debugging And Monitoring (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例提供一种数据处理方法、设备及计算机可读存储介质。该方法包括,获取第一数据库实例发送的日志事件;所述日志事件包括第一事件及至少一个第二事件;基于所述第一事件,确定所述日志事件对应的标识信息、第一数据库及第一数据表,并建立所述标识信息、所述第一数据库与所述第一数据表的对应关系;从所述第二事件的第一预设字段中解析获得所述标识信息的情况下,基于所述标识信息及所述对应关系,在判定所述日志事件满足同步条件时,从所述第二事件的第二预设字段中解析获得目标数据;将所述目标数据存储至第二数据库实例。本申请实施例提供的技术方案提高了数据同步效率。
Description
技术领域
本申请实施例涉及数据处理领域,尤其涉及一种数据处理方法、设备及计算机可读存储介质。
背景技术
在数据同步存储场景中,上下游两个数据库实例之间通常会存在数据同步需求。数据库实例可以指管理数据库中数据表的数据变动的程序,一个数据库实例通常可以管理多个数据库,且每个数据库通常可以包括多个数据表。
当上游的数据库实例中任一数据库中任一数据表发生数据变动时,都会生成对应的用于描述数据变动的日志事件。上游的数据库实例会将生成的日志事件发送至解析工具,由解析工具解析获得具体的变动数据后发送至下游的数据库实例,由下游的数据库实例选择需要同步的数据进行同步存储,效率较低,且容易造成资源浪费。
发明内容
本申请实施例提供一种数据处理方法、设备及计算机可读存储介质,用以解决现有技术中数据同步效率较低、且容易造成资源浪费的问题。
第一方面,本申请实施例提供了一种数据处理方法,包括:
获取第一数据库实例发送的日志事件;所述日志事件包括第一事件及至少一个第二事件;
基于所述第一事件,确定所述日志事件对应的标识信息、第一数据库及第一数据表,并建立所述标识信息、所述第一数据库与所述第一数据表的对应关系;
从所述第二事件的第一预设字段中解析获得所述标识信息的情况下,基于所述标识信息及所述对应关系,在判定所述日志事件满足同步条件时,从所述第二事件的第二预设字段中解析获得目标数据;
将所述目标数据存储至第二数据库实例。
第二方面,本申请实施例提供了一种电子设备,包括存储组件及处理组件;所述存储组件存储一条或多条计算机程序指令,所述一条或多条计算机程序指令供所述处理组件调用执行,所述处理组件执行所述一条或多条计算机程序指令以实现如第一方面所述的数据处理方法。
第三方面,本申请实施例提供了一种计算机可读存储介质,存储有计算机程序,所述计算机程序被计算机执行时实现如第一方面所述的数据处理方法。
第四方面,本申请实施例提供了一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如第一方面所述的数据处理方法。
本申请实施例中,解析工具可以获取第一数据库实例发送的日志事件,基于日志事件包括的第一事件,可以确定日志事件所对应的标识信息、第一数据库及第一数据表,并建立三者的对应关系,之后可以在从日志事件包括的第二事件的第一预设字段中解析获得该标识信息的情况下,基于标识信息及对应关系,在判定日志事件满足同步条件时,从第二事件的第二预设字段中解析获得目标数据,将目标数据存储至第二数据库实例。通过对日志事件包括的第二事件中部分预设字段进行解析获得标识信息,并由此进行日志事件是否满足同步条件的判定,可以实现只从满足同步条件的日志事件中解析获得目标数据,而无需对第一数据库实例发送的全部日志事件都解析获得全部的变动数据,提高了日志事件的解析效率,减少了解析资源的浪费,并且,解析工具只需将解析的部分日志事件的目标数据存储至第二数据库实例,无需将全部日志事件的全部变动数据都传输至第二数据库实例,减少了网络传输资源及数据存储资源的浪费,实现了高效、轻量的数据同步。
本申请的这些方面或其他方面在以下实施例的描述中会更加简明易懂。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本申请提供的一种系统架构一个实施例的结构示意图;
图2示出了本申请提供的一种数据处理方法一个实施例的流程图;
图3示出了本申请提供的一种数据处理方法另一个实施例的流程图;
图4示出了本申请提供的一种日志事件解析一个实施例的结构示意图;
图5示出了本申请提供的一种数据处理装置一个实施例的结构示意图;
图6示出了本申请提供的一种电子设备一个实施例的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
在本申请的说明书和权利要求书及上述附图中的描述的一些流程中,包含了按照特定顺序出现的多个操作,但是应该清楚了解,这些操作可以不按照其在本文中出现的顺序来执行或并行执行,操作的序号如101、102等,仅仅是用于区分开各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。
本申请的技术方案适用于数据处理场景,尤其是数据同步场景。在数据同步存储场景中,上下游两个数据库实例之间通常会存在数据同步需求。数据库实例可以指管理数据库中数据表的数据变动的程序,一个数据库实例通常可以管理多个数据库,且每个数据库通常可以包括多个数据表。
当上游的数据库实例中任一数据库中任一数据表发生数据变动时,都会生成对应的用于描述数据变动的日志事件。上游的数据库实例会将生成的日志事件发送至解析工具,由解析工具解析获得具体的变动数据后发送至下游的数据库实例,由下游的数据库实例选择需要同步的数据进行同步存储,或者由解析工具获得具体的变动数据后发送至消息队列,由下游的数据库实例从消息队列中选择需要同步的变动数据进行同步。但是效率都较低,且容易造成资源浪费。
在上述数据同步过程中,发明人分析发现,下游的数据库实例并非需要对上游的数据库实例的全部数据变动都进行同步,而是根据自身需要选择性进行部分同步。但是解析工具会将上游的数据库实例发送的每个日志事件都解析获得变动数据,由此造成资源浪费,且影响同步效率。
为了解决上述技术问题,发明人想到,能否只对下游的数据库实例所需要同步的部分日志事件解析获得变动数据呢。经过一系列思考及试验之后,提出了本申请的技术方案,提出了一种数据处理方法,包括获取第一数据库实例发送的日志事件;所述日志事件包括第一事件及至少一个第二事件;基于所述第一事件,确定所述日志事件对应的标识信息、第一数据库及第一数据表,并建立所述标识信息、所述第一数据库与所述第一数据表的对应关系;从所述第二事件的第一预设字段中解析获得所述标识信息的情况下,基于所述标识信息及所述对应关系,在判定所述日志事件满足同步条件时,从所述第二事件的第二预设字段中解析获得目标数据;将所述目标数据存储至第二数据库实例。
本申请的方案中,通过在解析之前进行日志事件对应的第一数据库的库名和第一数据表的表名是否满足同步条件的判定,来判断日志事件所描述的变动数据是否满足第二数据库实例的同步需求,只对满足第二数据库实例同步需求的部分日志事件进行解析,而无需对第一数据库实例发送的全部日志事件都进行解析,提高了日志事件的解析效率,减少了解析资源的浪费,并且,解析工具只需将解析的部分日志事件的变动数据同步至第二数据库实例,减少了网络传输资源及数据存储资源的浪费,实现了高效、轻量的数据同步。
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
如图1所示,为本申请实施例的技术方案可以适用于其中的一种系统架构的结构示意图。该系统架构中可以包括上游数据库实例101、下游数据库实例102以及解析工具103。
需要说明的是,图1所呈现的数据库实例、解析设备只是示例性说明,并不对其实现形式做限定。
上游数据库实例101与解析工具103之间,以及解析工具103与下游数据库实例102之间可以通过网络建立通信连接,网络用以在数据库实例和解析工具之间提供通信链路的介质,该网络可以包括各种连接类型,例如有线通信链路、无线通信链路等。
解析工具通过网络可以与数据库实例交互以接收或发送数据等。
其中,数据库实例可以为管理数据库的应用程序,可以部署在服务器设备中。解析工具可以为浏览器、APP(Application,应用程序)、或网页应用如H5(HyperText MarkupLanguage5,超文本标记语言第5版)应用、或轻应用(也被称为小程序,一种轻量级应用程序)或云应用等,解析工具可以部署在电子设备中,依赖设备运行或者设备中的某些app而运行等,电子设备例如可以具有显示屏并支持信息浏览等,如可以是个人移动终端如手机、平板电脑、个人计算机等。
需要说明的是,在一个实现方式中,本申请实施例提供的技术方案可以应用于图1所示的系统架构中,下文一些实施例中描述的数据处理方法可以由解析工具执行,但不局限于此。
以下将对本申请技术方案进行详细阐述。
如图2所示,为本申请提供的一种数据处理方法一个实施例的流程图,该方法可以包括以下几个步骤:
S21:获取第一数据库实例发送的日志事件。
本申请实施例中,可以适用于上下游两个数据库实例之间的数据同步场景,即主-从数据库实例之间的数据同步场景。上游的数据库实例作为主库实例,其管理的数据库中存储的数据发生变动,如增加、删除、修改时,可以将变动数据库同步至下游的数据库实例,下游的数据库实例作为从库实例,可以在管理的对应数据库中进行同步。其中,数据库实例可以包括多种类型,如关系型数据库MySQL、MariaDB等,非关系型数据库MongoDb,消息队列Kafka,RabbitMQ等,不进行限制。
实际应用中,上游的数据库实例和下游的数据库实例都可以管理多个数据库,每个数据库中可以包括多个数据表。为了便于描述,可以将上游的数据库实例称为第一数据库实例,将第一数据库实例管理的数据库称为第一数据库,将第一数据库中的数据表称为第一数据表,以及将下游的数据库实例称为第二数据库实例,将第二数据库实例管理的数据库称为第二数据库,将第二数据库中的数据表称为第二数据表。
第一数据库实例管理的任一第一数据库中任一第一数据表的数据都可能发生变动,生成对应的日志事件。例如,第一数据库实例中包括两个第一数据库,分别为第一数据库A和第一数据库B,第一数据库A中可以包括两张第一数据表,分别为第一数据表a和第一数据表b,第一数据库B中可以包括三张第一数据表,分别为第一数据表b、第一数据表c和第一数据表d。第一数据库A的第一数据表a发生数据变动时,可以生成一个日志事件,第一数据库B的第一数据表c发生数据变动时,又可以生成一个日志事件。
其中,日志事件可以指按照特定的封装结构对变动数据进行封装后获得的数据包,用于描述对应的数据库中数据表发生的数据变动。其中,数据变动可以包括数据增加、数据删除、数据修改中的至少一种。以MySQL数据库实例为例,生成的日志事件可以是Binlog(一种MySQL的二进制日志)事件,通常是以行为密度来描述数据变动操作,如当某一数据库的某一数据表的某一行数据发生修改时,可以将该行修改前及修改后的数据进行封装,获得日志事件。
第一数据库实例可以将生成的日志事件发送至解析工具,解析工具可以从中解析获得具体的变动数据。以第一数据库实例是MySQL数据库实例,生成的日志事件是Binlog事件为例,解析工具可以是用于解析Binlog事件的解析工具。
可选的,在日志事件发送之前,解析工具还可以发送认证协议至第一数据库实例,以进行认证。以MySQL数据库实例和Binlog事件为例,解析工具可以向MySQL数据库实例发送Binlog事件转存协议,以认证自身可以解析Binlog事件,可以接收并解析MySQL数据库实例发送的日志事件。
待第一数据库实例对解析工具认证通过后,可以将生成的日志事件发送至解析工具。此时,解析工具即可以接收并确定第一数据库实例发送的日志事件。
具体的,第一数据库实例可以按照日志事件的生成时间,将一个或多个日志事件以日志事件流的形式发送至该解析工具,从而解析工具可以接收第一数据库实例发送的日志事件流,并从中确定具体的日志事件。
S22:确定日志事件对应的第一数据库及第一数据表。
解析工具接收并确定日志事件后,即可以确定该日志事件对应的第一数据库及第一数据表。其中,日志事件中可以包括用于描述该日志事件对应的第一数据库和第一数据表的信息,可以由此确定该日志事件对应的第一数据库和第一数据表,具体的实现过程在后续实施例中进行说明。
S23:在第一数据库的库名及第一数据表的表名满足同步条件的情况下,对日志事件进行解析,获得目标数据。
解析工具在确定日志事件对应的第一数据库及第一数据表后,可以根据该第一数据库的库名以及第一数据表的表名来判定该日志事件所描述的变动数据是否为第二数据库实例需要同步的变动数据,可以称为目标数据。
具体的,可以预先设置同步条件,在该第一数据库的库名以及第一数据表的表名满足同步条件的情况下,判定该日志事件所描述的变动数据是第二数据库实例需要同步的目标数据,同步条件的设置将在后续实施例中进行说明。
在判定满足同步条件时,解析工具可以对日志事件进行解析获得目标数据,如对第一数据库A中第一数据表a的第3行中数据由x1修改为x2时生成的日志事件进行解析,可以获得该第一数据库A的第一数据表a中第3行修改前的数据x1,以及修改后的数据x2。
可选的,还可以根据第二数据库实例所需的数据格式,对日志事件进行解析,获得与第二数据库实例的数据格式对应的目标数据。例如,第二数据库实例是远程字典数据库(Remote Dictionary Server ,简称Redis)时,所需的数据格式是Key-Value格式,解析工具可以将日志事件解析成Key-Value格式的目标数据,便于第二数据库实例进行数据同步,提高同步效率。其中,解析工具对日志事件解析的实现过程可以参考传统方案中的实现过程,不进行赘述。
S24:将目标数据存储至第二数据库实例。
解析工具从日志事件中解析获得目标数据后,可以将该目标数据存储至第二数据库实例,由第二数据库实例进行数据同步。具体的,第二数据库实例可以优先确定管理的多个第二数据库中,与第一数据库的库名一致的第二数据库,以及该第二数据库包括的多个第二数据表中,与第一数据表的表名一致的第二数据表,并根据该目标数据对确定出的第二数据库中第二数据表中的数据进行同步。其中,第二数据库实例进行数据同步的实现过程可以参考传统方案中的实现过程,不进行赘述。
本实施例中,解析工具可以获取第一数据库实例发送的日志事件,确定该日志事件对应的第一数据库和第一数据表,并在判定第一数据库的库名和第一数据表的表名满足同步条件的情况下,对日志事件进行解析获得目标数据,将目标数据存储至第二数据库实例。通过在解析获得目标数据之前进行日志事件是否满足同步条件的判定,来判断日志事件所描述的变动数据是否满足第二数据库实例的同步需求,只从满足第二数据库实例同步需求的日志事件中解析获得目标数据,而无需对第一数据库实例发送的全部日志事件都解析获得全部的变动数据,提高了日志事件的解析效率,减少了解析资源的浪费,并且,解析工具只需将解析的部分日志事件的目标数据存储至第二数据库实例,减少了网络传输资源及数据存储资源的浪费,实现了高效、轻量的数据同步。
如图3所示,为本申请实施例提供的一种数据处理方法另一个实施例的流程图,该方法可以包括以下几个步骤:
S31:获取第一数据库实例发送的日志事件,该日志事件可以包括第一事件及至少一个第二事件。
本实施例中,日志事件中可以包括描述该日志事件对应的第一数据库及第一数据表的第一事件,以及描述数据变动的第二事件。以MySQL数据库实例生成的Binlog事件为例,日志事件中包括的第一事件可以为TABLE_MAP_EVENT,用于描述该日志事件对应的第一数据库和第一数据表,基于该第一事件,可以确定日志事件对应的第一数据库的库名及第一数据表的表名。日志事件中包括的第二事件可以为ROWS_EVENT,如可以包括用于描述数据新增的WRITE_ROWS_EVENT,可以从中解析获得新增数据,还可以包括用于描述数据删除的DELETE_ROWS_EVENT,可以从中解析获得删除数据,还可以包括用于描述数据修改的UPDATE_ROWS_EVENT,可以从中解析获得修改前及修改后的数据。
除此之外,第一事件和第二事件中还可以包括日志事件对应的标识信息。可选的,该标识信息可以实现为日志事件对应的第一数据表的标识信息,可以实现为table ID等,不同日志事件对应的table ID不同。
S32:基于第一事件,确定日志事件对应的标识信息、第一数据库及第一数据表,并建立标识信息、第一数据库与第一数据表的对应关系。
解析工具在获得日志事件后,通常可以是先对第一事件进行解析,获得日志事件对应的标识信息、第一数据库的库名及第一数据表的表名,并建立该标识信息、第一数据库与第一数据表的对应关系。例如,从第一事件中解析获得的第一数据表的标识信息是1,即标识信息=1,解析获得的第一数据库的库名是B,第一数据表的表名是c,可以确定标识信息=1对应的是数据库B中的数据表c。
为了提高数据处理效率,可以将该对应关系写入内存。
S33:从第二事件的第一预设字段中解析获得标识信息的情况下,基于标识信息及对应关系,在判定日志事件满足同步条件时,从第二事件的第二预设字段中解析获得目标数据。
解析工具在对第二事件进行解析时,可以优先对第二事件的第一预设字段进行解析,在从第一预设字段中解析获得日志事件对应的标识信息的情况下,进一步判断日志事件是否满足同步条件。以Binlog事件为例,该第一预设字段例如可以是Binlog事件头部的前6个字节,不进行限制。
由于实际应用中,为了减少存储资源占用,第二事件中通常不包括用于描述对应的第一数据库和第一数据表的信息,因此可以根据第一事件与第二事件之间的对应关系,确定第二事件中描述的变动数据所对应的第一数据库和第一数据表。具体的,可以从内存中获取该标识信息的对应关系,并根据对应关系确定该第二事件对应的第一数据库及第一数据表,并由此判定日志事件是否满足同步条件。同步条件的设置也将在后续实施例中进行说明。
在判定满足同步条件的情况下,可以确定第二事件所描述的变动数据是第二数据库实例需要同步的目标数据。此时,可以从该第二事件的第二预设字段中解析获得目标数据。以Binlog事件为例,该第二预设字段例如可以是Binlog事件中除头部之外的全部预设字节,不进行限制。
S34:将目标数据存储至第二数据库实例。
本实施例中,解析工具可以获取第一数据库实例发送的日志事件,基于日志事件包括的第一事件,可以确定日志事件所对应的标识信息、第一数据库及第一数据表,并建立三者的对应关系,之后可以从日志事件包括的第二事件的第一预设字段中解析获得该标识信息,并基于标识信息及对应关系,在判定日志事件满足同步条件的情况下,对第二事件的第二预设字段中解析获得目标数据,将目标数据存储至第二数据库实例。通过对第二事件中部分预设字段进行解析获得标识信息,并由此进行日志事件是否满足同步条件的判定,可以实现只从满足同步条件的日志事件中解析获得目标数据,而无需对第一数据库实例发送的全部日志事件都解析获得全部的变动数据,提高了日志事件的解析效率,减少了解析资源的浪费,并且,解析工具只需将解析的部分日志事件的目标数据存储至第二数据库实例,无需将全部日志事件的全部变动数据都传输至第二数据库实例,减少了网络传输资源及数据存储资源的浪费,实现了高效、轻量的数据同步。
在某些实施例中,上述同步条件可以是日志事件的第一数据库的库名及第一数据表的表名与目标数据库的库名及目标数据表的表名一致。因此,判定是否满足同步条件具体可以是,将第一数据库的库名与目标数据库的库名进行比较,以及将第一数据表的表名与目标数据表的表名进行比较;在第一数据库的库名与目标数据库的库名一致,以及第一数据表的表名与目标数据表的表名一致的情况下,满足同步条件。
其中,目标数据库的库名和目标数据表的表名可以是预先配置。
可选的,该方法还可以包括:
监听并确定配置的目标数据库的库名及目标数据表的表名。
其中,配置中心及配置方式可以根据实际应用需要进行设置。例如可以在分布式配置中心添加与目标数据库的库名及目标数据表的表名对应的配置项,如可以添加配置项B:b、c以及C:m、n。其中,B和C表示目标数据库的库名,b和c表示数据库B中的目标数据表的表名,m和n表示数据库C中的目标数据表的表名。
为了提高数据处理效率,可以将监听到的配置中心配置的配置项,即目标数据库的库名及目标数据库中目标数据表的表名写入内存。
在进行是否满足同步条件的判定时,可以将日志事件对应的第一数据库的库名与内存中的目标数据库的库名进行比较,以及将第一数据表的表名与内存中的目标数据表的表名进行比较。其中,预先配置的目标数据库的库名及目标数据库中目标数据表的表名都可以包括多个,具体的,可以优先从内存的多个库名中寻找是否有与第一数据库的库名一致的库名。若存在,表明该第一数据库与目标数据库一致,可以继续从该目标数据库的库名对应的多个表名中寻找是否有与第一数据表的表名一致的表名,否则表明该第一数据库与目标数据库不一致,可以直接判定不满足同步条件,无需再进行后续判定,缩短判定流程,提高效率。在判定第一数据库与目标数据库一致时,若目标数据库的库名对应的多个表名中存在与第一数据表的表名一致的表名,表明该第一数据表与目标数据库中的目标数据表也一致,判定满足同步条件,否则判定不满足同步条件。
实际应用中,在判定第一数据库的库名及第一数据表的表名不满足同步条件的情况下,不再对第二事件中描述变动数据的第二预设字段进行解析,提高解析效率,减少解析资源占用。此时,可以从第二事件的第三预设字段中解析获得描述该日志事件的字节长度;
从日志事件流中删除字节长度对应的日志事件。
以Binlog事件为例,该第三预设字段例如可以是Binlog事件中头部前6个字节之后的2个字节,不进行限制。
通过对不满足同步条件的日志事件进行删除过滤,避免对第二数据库实例没有同步需求的日志事件进行解析获得变动数据,提高了解析效率,减少了解析资源占用。
为了便于理解,下面结合图4所示的示意图,对上述日志事件的解析过程进行说明。
本实施例中,例如,预先配置的目标数据库可以是product数据库和user数据库。其中,product数据库中配置的目标数据表可以包括foo数据表、bar数据表,foo(.*)数据表及(.*)bar数据表,以及user数据库中配置的目标数据表可以包括hello数据表,world数据表,order(.*)数据表,以及(.*)bigdata数据表。
如图4所示,解析工具接收第一数据库实例101发送的日志事件流401,日志事件流401中包括4011、···、401n等多个日志事件,每个日志事件中包括第一事件及第二事件。解析工具可以按照日志事件流向对多个日志事件依次进行解析。
解析工具对日志事件4011中的第一事件进行解析,获得对应的第一数据表的标识信息1,第一数据库的库名product,以及第一数据表的表名foo,建立标识信息= 1与product数据库中foo数据表对应的对应关系并存入内存。之后,解析工具对日志事件4011中的第二事件的第一预设字段进行解析,获得对应的标识信息=1,并确定对应的是product数据库的foo数据表。判定满足同步条件,解析工具继续对日志事件4011中第二事件的第二预设字段进行解析,获得目标数据,并存储至第二数据库实例102。
解析工具继续对日志事件401n中的第一事件进行解析,获得对应的第一数据表的标识信息n,第一数据库的库名product,以及第一数据表的表名abc,建立标识信息= n与product数据库中abc数据表对应的对应关系并存入内存。之后,解析工具对日志事件401n中的第二事件的第一预设字段进行解析,获得对应的标识信息=n,并确定对应的是product数据库的abc数据表。判定不满足同步条件,解析工具继续对日志事件4011中第二事件的第三预设字段进行解析,获得字节长度,从日志事件流中删除该字节长度的日志事件。
通过在解析之前进行日志事件对应的第一数据库的库名和第一数据表的表名是否满足同步条件的判定,来判断日志事件所描述的变动数据是否满足第二数据库实例的同步需求,只从满足第二数据库实例同步需求的日志事件中解析获得目标数据,而无需对第一数据库实例发送的全部日志事件都解析获得全部的变动数据,提高了日志事件的解析效率,减少了解析资源的浪费,并且,解析工具只需将解析的日志事件的目标数据同步至第二数据库实例,减少了网络传输资源及数据存储资源的浪费,实现了高效、轻量的数据同步。
解析工具从日志事件中解析获得目标数据后,将其存储至第二数据库实例可以有多种实现方式。
作为一种可选的实现方式,可以响应于第二数据库实例发送的存储请求,将目标数据存储至第二数据库实例。具体的,解析工具可以将解析获得的目标数据存储在预设位置,并在等待接收到第二数据库实例的请求之后,再传输至第二数据库实例。
作为另一种可选的实现方式,可以将目标数据推送至消息队列,该消息队列用以提供目标数据至第二数据库实例。具体的,解析工具还可以将解析获得的目标数据推送至消息队列,由第二数据库实例从消息队列中获取后存储。
作为又一种可选的实现方式,可以直接将目标数据推送至第二数据库实例。具体的,解析工具还可以将解析获得的目标数据主动推送至第二数据库实例。
实际应用中,将解析获得的目标数据存储至第二数据库实例还可以有其它实现方式,本申请对此不进行限制。
如图5所示,为本申请提供的一种数据处理装置一个实施例的结构示意图,该装置可以包括以下几个模块:
获取模块501,用于获取第一数据库实例发送的日志事件;日志事件包括第一事件及至少一个第二事件;
第一确定模块502,用于基于第一事件,确定日志事件对应的标识信息、第一数据库及第一数据表,并建立标识信息、第一数据库与第一数据表的对应关系;
第一解析模块503,用于从第二事件的第一预设字段中解析获得标识信息的情况下,基于标识信息及对应关系,在判定日志事件满足同步条件时,从第二事件的第二预设字段中解析获得目标数据;
存储模块504,用于将目标数据存储至第二数据库实例。
本实施例中,该数据处理装置可以实现图3所示的数据处理方法,解析工具可以获取第一数据库实例发送的日志事件,基于日志事件包括的第一事件,可以确定日志事件所对应的标识信息、第一数据库及第一数据表,并建立三者的对应关系,之后可以从日志事件包括的第二事件的第一预设字段中解析获得该标识信息,并基于标识信息及对应关系,在判定日志事件满足同步条件的情况下,对第二事件的第二预设字段中解析获得目标数据,将目标数据存储至第二数据库实例。通过对日志事件包括的第二事件中部分预设字段进行解析获得标识信息,并由此进行日志事件是否满足同步条件的判定,可以实现只从满足同步条件的日志事件中解析获得目标数据,而无需对第一数据库实例发送的全部日志事件都解析获得全部的变动数据,提高了日志事件的解析效率,减少了解析资源的浪费,并且,解析工具只需将解析的部分日志事件的目标数据存储至第二数据库实例,无需将全部日志事件的全部变动数据都传输至第二数据库实例,减少了网络传输资源及数据存储资源的浪费,实现了高效、轻量的数据同步。
在某些实施例中,该装置还可以包括:
比较模块,用于将第一数据库的库名与目标数据库的库名进行比较,以及将第一数据表的表名与目标数据表的表名进行比较;
判定模块,用于在第一数据库的库名与目标数据库的库名一致,以及第一数据表的表名与目标数据表的表名一致的情况下,判定满足同步条件。
在某些实施例中,该装置还可以包括:
第二确定模块,用于监听并确定配置的目标数据库的库名以及目标数据表的表名。
在某些实施例中,该装置还可以包括:
第二解析模块,在第一数据库的库名及第一数据表的表名不满足同步条件的情况下,用于从第二事件的第三预设字段中解析获得描述日志事件的字节长度;
删除模块,用于从日志事件流中删除字节长度对应的日志事件。
在某些实施例中,存储模块504具体可以用于响应于第二数据库实例发送的存储请求,将目标数据存储至第二数据库实例。
在某些实施例中,存储模块504具体可以用于将目标数据推送至消息队列;该消息队列用以提供目标数据至第二数据库实例。
图5所述的数据处理装置可以执行图3所示实施例所述的数据处理方法,其实现原理和技术效果不再赘述。对于上述实施例中的数据处理装置其中各个模块、单元执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
如图6所示,为本申请提供的一种电子设备一个实施例的示意图,可以包括存储组件601及处理组件602;
存储组件602存储一条或多条计算机程序指令,该一条或多条计算机程序指令供处理组件602调用执行,处理组件602执行该一条或多条计算机程序指令以实现如图2或3所示的数据处理方法。
实际应用中,该电子设备可以实现为如图1所示系统架构中的解析工具。
当然,上述电子设备必然还可以包括其他部件,例如输入/输出接口、通信组件等。
输入/输出接口为处理组件和外围接口模块之间提供接口,上述外围接口模块可以是输出设备、输入设备等。通信组件被配置为便于电子设备和其他设备之间有线或无线方式的通信等。
其中,处理组件602可以包括一个或多个处理器来执行计算机指令,以完成上述的方法中的全部或部分步骤。当然处理组件也可以为一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。
存储组件601被配置为存储各种类型的数据以支持在终端的操作。存储组件可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
本申请实施例还提供了一种计算机可读存储介质,存储有计算机程序,该计算机程序被计算机执行时可以实现图2或3所示的数据处理方法。该计算机可读介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。
本申请实施例还提供了一种计算机程序产品,其包括承载在计算机可读存储介质上的计算机程序,该计算机程序被计算机执行时可以实现图2或3所示的数据处理方法。
在这样的实施例中,计算机程序可以是从网络上被下载和安装,和/或从可拆卸介质被安装。在该计算机程序被处理器执行时,执行本申请的系统中限定的各种功能。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (7)
1.一种数据处理方法,其特征在于,适用于解析工具,包括:
获取第一数据库实例发送的日志事件流中的任一日志事件;所述日志事件包括第一事件及至少一个第二事件;第二事件包括:标识信息、字节长度及目标数据;
基于所述第一事件,确定所述日志事件对应的标识信息、第一数据库的库名及第一数据表的表名,并建立所述标识信息、所述第一数据库的库名与所述第一数据表的表名的对应关系;
将所述对应关系写入内存;
从所述第二事件的第一预设字段中解析获得所述标识信息的情况下,基于所述标识信息及所述对应关系,从所述内存获取与所述标识信息对应的所述第一数据的库名及所述第一数据表的表名;
获取配置中心预配置的满足第二数据库实例同步需求的目标数据库的库名及目标数据表的表名;
所述第一数据库的库名与所述目标数据库的库名一致,以及所述第一数据表的表名与所述目标数据表的表名一致的情况下,判定所述日志事件满足同步条件;
在判定所述日志事件满足同步条件时,从所述第二事件的第二预设字段中解析获得目标数据;
将所述目标数据存储至第二数据库实例。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在判定所述日志事件不满足同步条件的情况下,从所述第二事件的第三预设字段中解析获得描述所述日志事件的字节长度;
从日志事件流中删除所述字节长度对应的日志事件。
3.根据权利要求1所述的方法,其特征在于,所述将所述目标数据存储至第二数据库实例包括:
响应于第二数据库实例发送的存储请求,将所述目标数据存储至所述第二数据库实例。
4.根据权利要求1所述的方法,其特征在于,所述将所述目标数据存储至第二数据库实例包括:
将所述目标数据推送至消息队列;所述消息队列用以提供所述目标数据至第二数据库实例。
5.一种数据处理装置,其特征在于,适用于解析工具,包括:
获取模块,用于获取第一数据库实例发送的日志事件流中的任一日志事件;所述日志事件包括第一事件及至少一个第二事件;所述第二事件包括:标识信息、字节长度及目标数据;
第一确定模块,用于基于所述第一事件,确定所述日志事件对应的标识信息、第一数据库的库名及第一数据表的表名,并建立所述标识信息、所述第一数据库的库名与所述第一数据表的表名的对应关系;将所述对应关系写入内存;
第一解析模块,用于从所述第二事件的第一预设字段中解析获得所述标识信息的情况下,基于所述标识信息及所述对应关系,从所述内存获取与所述标识信息对应的所述第一数据的库名及所述第一数据表的表名;获取预配置的满足第二数据库实例同步需求的目标数据库的库名及目标数据表的表名;所述第一数据库的库名与所述目标数据库的库名一致,以及所述第一数据表的表名与所述目标数据表的表名一致的情况下,判定所述日志事件满足同步条件;在判定所述日志事件满足同步条件时,从所述第二事件的第二预设字段中解析获得目标数据;
存储模块,用于将所述目标数据存储至第二数据库实例。
6.一种电子设备,其特征在于,包括存储组件及处理组件;所述存储组件存储一条或多条计算机程序指令,所述一条或多条计算机程序指令供所述处理组件调用执行,所述处理组件执行所述一条或多条计算机程序指令以实现如权利要求1~4任一项所述的数据处理方法。
7.一种计算机可读存储介质,其特征在于,存储有计算机程序,所述计算机程序被计算机执行时实现如权利要求1~4任一项所述的数据处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310259378.2A CN115982285B (zh) | 2023-03-10 | 2023-03-10 | 数据处理方法、设备及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310259378.2A CN115982285B (zh) | 2023-03-10 | 2023-03-10 | 数据处理方法、设备及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115982285A CN115982285A (zh) | 2023-04-18 |
CN115982285B true CN115982285B (zh) | 2023-07-07 |
Family
ID=85958215
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310259378.2A Active CN115982285B (zh) | 2023-03-10 | 2023-03-10 | 数据处理方法、设备及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115982285B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112286941A (zh) * | 2020-12-23 | 2021-01-29 | 武汉物易云通网络科技有限公司 | 一种基于Binlog+HBase+Hive的大数据同步方法和装置 |
WO2021169268A1 (zh) * | 2020-02-28 | 2021-09-02 | 平安科技(深圳)有限公司 | 数据处理方法、装置、设备和存储介质 |
CN115357662A (zh) * | 2022-08-19 | 2022-11-18 | 浪潮电子信息产业股份有限公司 | 一种数据同步的方法、装置及介质 |
CN115730008A (zh) * | 2022-11-10 | 2023-03-03 | 阿里云计算有限公司 | 一种日志解析方法、数据同步系统、电子设备及存储介质 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111143368B (zh) * | 2019-12-27 | 2023-05-12 | 瀚高基础软件股份有限公司 | 一种关系型数据库数据对比方法及系统 |
US11514019B1 (en) * | 2019-12-30 | 2022-11-29 | Cigna Intellectual Property, Inc. | Systems and methods for maintaining and updating an event logging database |
CN112241437A (zh) * | 2020-12-15 | 2021-01-19 | 深圳市易博天下科技有限公司 | 数据库多主同步的回环控制方法、装置、设备及存储介质 |
CN113434600B (zh) * | 2021-06-30 | 2023-06-09 | 青岛海尔科技有限公司 | 一种数据同步方法及装置 |
CN115687503A (zh) * | 2021-07-22 | 2023-02-03 | 腾讯科技(深圳)有限公司 | 数据库间的数据同步方法、装置、设备及存储介质 |
CN114741453A (zh) * | 2022-04-27 | 2022-07-12 | 度小满科技(北京)有限公司 | 数据同步的方法、系统及计算机可读存储介质 |
-
2023
- 2023-03-10 CN CN202310259378.2A patent/CN115982285B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021169268A1 (zh) * | 2020-02-28 | 2021-09-02 | 平安科技(深圳)有限公司 | 数据处理方法、装置、设备和存储介质 |
CN112286941A (zh) * | 2020-12-23 | 2021-01-29 | 武汉物易云通网络科技有限公司 | 一种基于Binlog+HBase+Hive的大数据同步方法和装置 |
CN115357662A (zh) * | 2022-08-19 | 2022-11-18 | 浪潮电子信息产业股份有限公司 | 一种数据同步的方法、装置及介质 |
CN115730008A (zh) * | 2022-11-10 | 2023-03-03 | 阿里云计算有限公司 | 一种日志解析方法、数据同步系统、电子设备及存储介质 |
Non-Patent Citations (1)
Title |
---|
基于Web Service多源异构系统增量同步的实现;庞秋奔;李银;;计算机应用与软件(05);178-182 * |
Also Published As
Publication number | Publication date |
---|---|
CN115982285A (zh) | 2023-04-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111414416B (zh) | 数据处理方法、装置、设备和存储介质 | |
US10061858B2 (en) | Method and apparatus for processing exploding data stream | |
CN108062367B (zh) | 一种数据列表的上传方法及其终端 | |
WO2018126964A1 (zh) | 任务执行方法、装置和服务器 | |
TWI672027B (zh) | 網頁中的資料處理方法、裝置及系統 | |
CN107957940B (zh) | 一种测试日志处理方法、系统及终端 | |
CN110224896B (zh) | 一种网络性能数据采集方法、装置及存储介质 | |
CN111241182A (zh) | 数据处理方法和装置、存储介质和电子装置 | |
WO2020248375A1 (zh) | 数据库间数据同步方法、系统、计算机设备及存储介质 | |
CN110502212A (zh) | 一种面向多语言的高并发在线开发支撑方法 | |
CN109582289B (zh) | 规则引擎中规则流的处理方法、系统、存储介质和处理器 | |
CN112154420A (zh) | 自动智能云服务测试工具 | |
CN112988485A (zh) | 电力物联网设备模拟测试方法及装置 | |
CN112434243B (zh) | 一种同步数据的方法、装置和计算机可读存储介质 | |
CN112256318B (zh) | 一种用于依赖产品的构建方法及设备 | |
CN112115200B (zh) | 数据同步方法、装置、电子设备及可读存储介质 | |
CN114501501A (zh) | 移动通信网络靶场的配置管理方法、装置、设备及介质 | |
CN114691398A (zh) | 一种基于规则的故障分析方法、装置、设备和存储介质 | |
CN110704122A (zh) | 插件加载方法及装置 | |
CN110460668B (zh) | 一种文件上传方法、装置、计算机设备和存储介质 | |
CN110968592A (zh) | 元数据采集方法、装置、计算机设备及计算机可读存储介质 | |
CN112131014B (zh) | 决策引擎系统及其业务处理方法 | |
CN115982285B (zh) | 数据处理方法、设备及计算机可读存储介质 | |
CN112631754A (zh) | 数据处理方法、装置、存储介质及电子装置 | |
CN110248030B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |