CN117708094A - 数据处理方法、装置、电子设备和存储介质 - Google Patents
数据处理方法、装置、电子设备和存储介质 Download PDFInfo
- Publication number
- CN117708094A CN117708094A CN202311825852.XA CN202311825852A CN117708094A CN 117708094 A CN117708094 A CN 117708094A CN 202311825852 A CN202311825852 A CN 202311825852A CN 117708094 A CN117708094 A CN 117708094A
- Authority
- CN
- China
- Prior art keywords
- table structure
- information
- database
- time
- log file
- 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
- 238000003672 processing method Methods 0.000 title abstract description 21
- 230000008859 change Effects 0.000 claims abstract description 189
- 238000000034 method Methods 0.000 claims abstract description 49
- 238000012545 processing Methods 0.000 claims description 43
- 238000004590 computer program Methods 0.000 claims description 16
- 238000012217 deletion Methods 0.000 claims description 12
- 230000037430 deletion Effects 0.000 claims description 12
- 230000004048 modification Effects 0.000 claims description 11
- 238000012986 modification Methods 0.000 claims description 11
- 238000010276 construction Methods 0.000 claims description 8
- 238000007405 data analysis Methods 0.000 abstract description 11
- 230000005856 abnormality Effects 0.000 abstract description 9
- 230000009286 beneficial effect Effects 0.000 abstract description 4
- 238000004458 analytical method Methods 0.000 description 36
- 230000002045 lasting effect Effects 0.000 description 14
- 230000008569 process Effects 0.000 description 14
- 238000007726 management method Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 7
- 230000002688 persistence Effects 0.000 description 6
- 238000004891 communication Methods 0.000 description 3
- 238000004140 cleaning Methods 0.000 description 2
- 230000002708 enhancing effect Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 239000013589 supplement Substances 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
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/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/22—Indexing; Data structures therefor; Storage structures
- G06F16/221—Column-oriented storage; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2358—Change logging, detection, and notification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2457—Query processing with adaptation to user needs
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请实施例提供一种数据处理方法、装置、电子设备和存储介质,所述方法包括:获取二进制日志文件数据的库表信息和生成时间;当缓存中不存在库表信息关联的表结构对象时,查询第一数据库中是否存在库表信息关联的第一时序记录,第一时序记录包括第一变更时间及其对应的第一表结构信息,第一变更时间与生成时间相匹配;当第一数据库中存在第一时序记录时,基于第一表结构信息构建第一表结构对象,第一表结构对象用于解析二进制日志文件数据。采用本申请实施例,可以获得与二进制日志文件数据相匹配的表结构,用于解析该二进制日志文件数据,有助于减少数据解析异常。
Description
技术领域
本申请涉及数据库处理技术领域,尤其涉及一种数据处理方法、装置、电子设备和存储介质。
背景技术
二进制日志文件(Binlog)是数据库记录变更操作的文件。Binlog一般只会记录列的编号,但不包含列名信息,所以解析Binlog过程需要从源库中查询表结构(Schema)信息,用来补充列名和索引等信息。
目前,每次需要加载Schema时会直连数据库,从数据库中获取Schema信息,用以构建Schema。然而,目前的方案只能获取到当前最新的Schema信息,构建当前最新的Schema。当发生过Schema信息变更的情况下,无法回溯到变更之前的Schema,而当前最新的Schema与待解析的Binlog数据可能不匹配,从而可能导致如数据丢失、数据解析错误等异常问题。
发明内容
本申请提供一种数据处理方法、装置、电子设备和存储介质,可以获得与二进制日志文件数据相匹配的表结构,用于解析该二进制日志文件数据,有助于减少数据解析异常。
第一方面,本申请实施例提供了一种数据处理方法,所述方法包括:
获取二进制日志文件数据的库表信息和生成时间;
当缓存中不存在所述库表信息关联的表结构对象时,查询第一数据库中是否存在所述库表信息关联的第一时序记录,所述第一时序记录包括第一变更时间及其对应的第一表结构信息,所述第一变更时间与所述生成时间相匹配;
当所述第一数据库中存在所述第一时序记录时,基于所述第一表结构信息构建第一表结构对象,所述第一表结构对象用于解析所述二进制日志文件数据。
上述实施例中,服务器可以获取二进制日志文件数据的库表信息和生成时间,当缓存中不存在该库表信息关联的表结构对象时,查询第一数据库中是否存在该库表信息关联的第一时序记录,该第一时序记录包括第一变更时间及其对应的第一表结构信息,该第一变更时间与该生成时间相匹配,当第一数据库中存在该第一时序记录时,基于该第一表结构信息构建第一表结构对象。
通过上述实施例,可以将与表结构变更相关的时序记录存储于第一数据库中,从而根据第一数据库中存储的时序记录可以回溯到历史时刻的表结构信息,服务器可以从第一数据库中查询变更时间与二进制日志文件数据的生成时间相匹配的第一时序记录,基于该第一时序记录中的第一表结构信息构建的第一表结构对象,与该二进制日志文件数据相匹配,从而可以正确解析该二进制日志文件数据,有助于减少数据解析异常。
在第一方面的一种可能的实施方式中,所述第一变更时间与所述生成时间相匹配包括:所述第一变更时间早于或等于所述生成时间,且所述第一变更时间是变更时间集合中与所述生成时间相隔最近的变更时间;
其中,所述变更时间集合包括所述库表信息关联的所有时序记录中的变更时间。
通过上述实施方式,服务器可以从第一数据库中存储的与库表信息关联的所有时序记录中,选取变更时间早于或等于二进制日志文件数据的生成时间、且与该生成时间相隔最近的时序记录作为第一时序记录,据此获得的第一时序记录中的变更后表结构信息与该二进制日志文件数据是相匹配的,能够正确解析该二进制日志文件数据。
在第一方面的一种可能的实施方式中,所述方法还包括:
将所述第一表结构对象存储于所述缓存中,所述第一表结构对象与所述库表信息相关联。
通过上述实施方式,服务器可以将构建的第一表结构对象存储于缓存中,以便后续可以直接从缓存中获取表结构对象,用来解析该二进制日志文件数据,有助于提高解析效率。
在第一方面的一种可能的实施方式中,所述方法还包括:
当所述第一数据库中不存在所述第一时序记录时,从第二数据库中获取所述库表信息关联的第二表结构信息,基于所述第二表结构信息构建第二表结构对象;
将所述第二表结构对象存储于所述缓存中,所述第二表结构对象与所述库表信息相关联;
根据所述第二表结构信息及其对应的变更时间生成第二时序记录,将所述第二时序记录存储于所述第一数据库中,所述第二时序记录与所述库表信息相关联。
通过上述实施方式,当缓存中不存在库表信息关联的表结构对象,且第一数据库中不存在该库表信息关联的时序记录时,服务器可以降级从第二数据库中获取该库表信息关联的第二表结构信息,构建相应的第二表结构对象,以减弱对于第一数据库中时序记录的依赖性,进而将第二表结构对象存储于缓存中,以及将根据第二表结构信息及其对应的变更时间生成的第二时序记录存储于第一数据库中,以便后续二进制日志文件数据解析时使用。
在第一方面的一种可能的实施方式中,所述将所述第二时序记录存储于所述第一数据库中,包括:
通过异步线程,将所述第二时序记录持久化存储于所述第一数据库中。
通过上述实施方式,服务器可以采用异步线程将第二时序记录持久化存储于第一数据库中,据此可以减少第二时序记录的持久化存储过程对解析性能的影响,有助于提升解析速度。
在第一方面的一种可能的实施方式中,所述方法还包括:
当所述缓存中存在所述库表信息关联的表结构对象时,若所述二进制日志文件数据指示表结构变更,则根据所述二进制日志文件数据确定第三表结构信息,基于所述第三表结构信息构建第三表结构对象;
将所述第三表结构对象存储于所述缓存中,所述第三表结构对象与所述库表信息相关联;
根据所述第三表结构信息及其对应的变更时间生成第三时序记录,将所述第三时序记录存储于所述第一数据库中,所述第三时序记录与所述库表信息相关联。
通过上述实施方式,当缓存中存在库表信息关联的表结构对象,且二进制日志文件数据指示表结构变更时,服务器可以根据该二进制日志文件数据确定第三表结构信息,构建相应的第三表结构对象,并将第三表结构对象存储于缓存中,以及将根据第三表结构信息及其对应的变更时间生成的第三时序记录存储于第一数据库中,以便后续二进制日志文件数据解析时使用。
在第一方面的一种可能的实施方式中,所述将所述第三时序记录存储于所述第一数据库中,包括:
通过异步线程,将所述第三时序记录持久化存储于所述第一数据库中。
通过上述实施方式,服务器可以采用异步线程将第三时序记录持久化存储于第一数据库中,据此可以减少第三时序记录的持久化存储过程对解析性能的影响,有助于提升解析速度。
在第一方面的一种可能的实施方式中,所述方法还包括:
当所述缓存中存在所述库表信息关联的表结构对象时,若所述二进制日志文件数据指示非表结构变更,则利用所述库表信息关联的表结构对象解析所述二进制日志文件数据。
通过上述实施方式,当缓存中存在库表信息关联的表结构对象,且二进制日志文件数据指示非表结构变更时,服务器可以直接利用该库表信息关联的表结构对象,正确解析该二进制日志文件数据。
在第一方面的一种可能的实施方式中,所述方法还包括:所述方法还包括:
响应于对目标时序记录的操作指令,对所述目标时序记录执行所述操作指令所指示的操作;其中,所述操作指令包括查询指令、增加指令、修改指令或删除指令。
通过上述实施方式,服务器提供了辅助功能以支持对时序记录进行查询、增加、修改或删除,有助于增强应急问题解决能力。
第二方面,本申请实施例提供了一种数据处理装置,所述装置包括:
获取单元,用于获取二进制日志文件数据的库表信息和生成时间;
查询单元,用于当缓存中不存在所述库表信息关联的表结构对象时,查询第一数据库中是否存在所述库表信息关联的第一时序记录,所述第一时序记录包括第一变更时间及其对应的第一表结构信息,所述第一变更时间与所述生成时间相匹配;
构建单元,用于当所述第一数据库中存在所述第一时序记录时,基于所述第一表结构信息构建第一表结构对象,所述第一表结构对象用于解析所述二进制日志文件数据。
上述实施例中,数据处理装置可以获取二进制日志文件数据的库表信息和生成时间,当缓存中不存在该库表信息关联的表结构对象时,查询第一数据库中是否存在该库表信息关联的第一时序记录,该第一时序记录包括第一变更时间及其对应的第一表结构信息,该第一变更时间与该生成时间相匹配,当第一数据库中存在该第一时序记录时,基于该第一表结构信息构建第一表结构对象。
通过上述实施例,可以将与表结构变更相关的时序记录存储于第一数据库中,从而根据第一数据库中存储的时序记录可以回溯到历史时刻的表结构信息,数据处理装置可以从第一数据库中查询变更时间与二进制日志文件数据的生成时间相匹配的第一时序记录,基于该第一时序记录中的第一表结构信息构建的第一表结构对象,与该二进制日志文件数据相匹配,从而可以正确解析该二进制日志文件数据,有助于减少数据解析异常。
在第二方面的一种可能的实施方式中,所述第一变更时间与所述生成时间相匹配包括:所述第一变更时间早于或等于所述生成时间,且所述第一变更时间是变更时间集合中与所述生成时间相隔最近的变更时间;
其中,所述变更时间集合包括所述库表信息关联的所有时序记录中的变更时间。
通过上述实施方式,数据处理装置可以从第一数据库中存储的与库表信息关联的所有时序记录中,选取变更时间早于或等于二进制日志文件数据的生成时间、且与该生成时间相隔最近的时序记录作为第一时序记录,据此获得的第一时序记录中的变更后表结构信息与该二进制日志文件数据是相匹配的,能够正确解析该二进制日志文件数据。
在第二方面的一种可能的实施方式中,所述装置还包括存储单元,所述存储单元用于:将所述第一表结构对象存储于所述缓存中,所述第一表结构对象与所述库表信息相关联。
通过上述实施方式,数据处理装置可以将构建的第一表结构对象存储于缓存中,以便后续可以直接从缓存中获取表结构对象,用来解析该二进制日志文件数据,有助于提高解析效率。
在第二方面的一种可能的实施方式中,所述查询单元还用于:当所述第一数据库中不存在所述第一时序记录时,从第二数据库中获取所述库表信息关联的第二表结构信息;
所述构建单元还用于:基于所述第二表结构信息构建第二表结构对象;
所述存储单元还用于:将所述第二表结构对象存储于所述缓存中,所述第二表结构对象与所述库表信息相关联;以及,根据所述第二表结构信息及其对应的变更时间生成第二时序记录,将所述第二时序记录存储于所述第一数据库中,所述第二时序记录与所述库表信息相关联。
通过上述实施方式,当缓存中不存在库表信息关联的表结构对象,且第一数据库中不存在该库表信息关联的时序记录时,数据处理装置可以降级从第二数据库中获取该库表信息关联的第二表结构信息,构建相应的第二表结构对象,以减弱对于第一数据库中时序记录的依赖性,进而将第二表结构对象存储于缓存中,以及将根据第二表结构信息及其对应的变更时间生成的第二时序记录存储于第一数据库中,以便后续二进制日志文件数据解析时使用。
在第二方面的一种可能的实施方式中,所述存储单元在将所述第二时序记录存储于所述第一数据库中时,具体用于:通过异步线程,将所述第二时序记录持久化存储于所述第一数据库中。
通过上述实施方式,数据处理装置可以采用异步线程将第二时序记录持久化存储于第一数据库中,据此可以减少第二时序记录的持久化存储过程对解析性能的影响,有助于提升解析速度。
在第二方面的一种可能的实施方式中,所述构建单元还用于:当所述缓存中存在所述库表信息关联的表结构对象时,若所述二进制日志文件数据指示表结构变更,则根据所述二进制日志文件数据确定第三表结构信息,基于所述第三表结构信息构建第三表结构对象;
所述存储单元还用于:将所述第三表结构对象存储于所述缓存中,所述第三表结构对象与所述库表信息相关联;以及,
根据所述第三表结构信息及其对应的变更时间生成第三时序记录,将所述第三时序记录存储于所述第一数据库中,所述第三时序记录与所述库表信息相关联。
通过上述实施方式,当缓存中存在库表信息关联的表结构对象,且二进制日志文件数据指示表结构变更时,数据处理装置可以根据该二进制日志文件数据确定第三表结构信息,构建相应的第三表结构对象,并将第三表结构对象存储于缓存中,以及将根据第三表结构信息及其对应的变更时间生成的第三时序记录存储于第一数据库中,以便后续二进制日志文件数据解析时使用。
在第二方面的一种可能的实施方式中,所述存储单元在将所述第三时序记录存储于所述第一数据库中时,具体用于:通过异步线程,将所述第三时序记录持久化存储于所述第一数据库中。
通过上述实施方式,数据处理装置可以采用异步线程将第三时序记录持久化存储于第一数据库中,据此可以减少第三时序记录的持久化存储过程对解析性能的影响,有助于提升解析速度。
在第二方面的一种可能的实施方式中,所述装置还包括处理单元,所述处理单元用于:当所述缓存中存在所述库表信息关联的表结构对象时,若所述二进制日志文件数据指示非表结构变更,则利用所述库表信息关联的表结构对象解析所述二进制日志文件数据。
通过上述实施方式,当缓存中存在库表信息关联的表结构对象,且二进制日志文件数据指示非表结构变更时,数据处理装置可以直接利用该库表信息关联的表结构对象,正确解析该二进制日志文件数据。
在第二方面的一种可能的实施方式中,所述装置还包括操作单元,所述操作单元用于:响应于对目标时序记录的操作指令,对所述目标时序记录执行所述操作指令所指示的操作;其中,所述操作指令包括查询指令、增加指令、修改指令或删除指令。
通过上述实施方式,数据处理装置提供了辅助功能以支持对时序记录进行查询、增加、修改或删除,有助于增强应急问题解决能力。
第三方面,本申请实施例提供了一种电子设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述第一方面及其任意一种可能的实施方式中的方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面及其任意一种可能的实施方式中的方法。
第五方面,本申请实施例提供了一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现上述第一方面及其任意一种可能的实施方式中的方法。
上述第三方面至第五方面带来的有益效果,可以参考第一方面中有益效果的描述,此处不再赘述。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,而非限制本申请的技术方案。
附图说明
为了更清楚地说明本申请实施例或背景技术中的技术方案,下面将对本申请实施例或背景技术中所需要使用的附图进行说明。
此处的附图被并入说明书中并构成本说明书的一部分,这些附图示出了符合本申请的实施例,并与说明书一起用于说明本申请的技术方案。
图1是本申请实施例提供的一种数据处理方法的应用环境示意图;
图2是本申请实施例提供的一种数据处理方法的流程示意图;
图3是本申请实施例提供的一种表结构变更时间的示意图;
图4是本申请实施例提供的一种存储时序记录的示意图;
图5是本申请实施例提供的一种时序记录管理页面的示意图;
图6是本申请实施例提供的又一种数据处理方法的流程示意图;
图7是本申请实施例提供的一种数据处理装置的结构示意图;
图8是本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。
应当理解,在本申请中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上,“至少两个(项)”是指两个或三个及三个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:只存在A,只存在B以及同时存在A和B三种情况,其中A,B可以是单数或者复数。字符“/”可表示前后关联对象是一种“或”的关系,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。
在本申请中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
二进制日志文件(Binlog)是数据库记录变更操作的文件。Binlog一般只会记录列的编号,但不包含列名信息,所以解析Binlog过程需要从源库中查询表结构(Schema)信息,用来补充列名和索引等信息。
目前,每次需要加载Schema时会直连数据库,从数据库中获取Schema信息,用以构建Schema。然而,目前的方案只能获取到当前最新的Schema信息,构建当前最新的Schema。当发生过Schema信息变更的情况下,无法回溯到变更之前的Schema,而当前最新的Schema与待解析的Binlog数据可能不匹配,从而可能导致解析异常。例如,对于列数量变更的情况,可能导致数据丢失。再例如,对于非列数量变更的情况,可能出现数据类型解析错误。
基于此,本申请实施例提供了一种数据处理方法,可以获得与二进制日志文件数据相匹配的表结构,用于解析该二进制日志文件数据,有助于减少数据解析异常。
数据处理方法的执行主体可以是数据处理装置,例如,数据处理方法可以由终端设备或服务器或其它处理设备执行,其中,终端设备可以但不限于是各种个人计算机、笔记本电脑、平板电脑、智能手机和便携式可穿戴设备,服务器可以用独立的服务器或者是多个服务器组成的服务器集群来实现。在一些可能的实现方式中,该数据处理方法可以通过处理器调用存储器中存储的计算机可读指令的方式来实现。
请参阅图1,图1是本申请实施例提供的一种数据处理方法的应用环境示意图。该应用环境涉及服务器101、缓存102、第一数据库103和第二数据库104。其中,服务器101与第一数据库103和第二数据库104通信连接,缓存102可以是服务器101的缓存。
服务器101可以是解析二进制日志文件数据的服务器,缓存102中可以记录已经构建好的表结构对象,服务器101可以从缓存102中直接获取表结构对象,用于解析二进制日志文件数据。
第一数据库103可以是存储表结构变更记录的数据库,第一数据库103中存储的表结构变更记录可以是持久化的,服务器101可以从第一数据库103中获取表结构变更记录,用于构建表结构对象。示例性的,第一数据库103也可以称为元数据库。
第二数据库104可以是存储二进制日志文件以及表结构信息的数据库,服务器101可以从第二数据库104中获取二进制日志文件,还可以从第二数据库104中获取表结构信息,用于构建表结构对象。示例性的,第二数据库104也可以称为源数据库。
请参阅图2,图2是本申请实施例提供的一种数据处理方法的流程示意图,该数据处理方法可以应用于图1中的服务器101。如图2所示,该数据处理方法可以包括以下步骤S201至步骤S203。
S201,获取二进制日志文件数据的库表信息和生成时间。
其中,二进制日志文件数据可以理解为待解析的二进制日志文件数据。二进制日志文件数据的库表信息,可以理解为该二进制日志文件数据所在的数据库和数据表的信息。具体的,库表信息可以包括数据库信息和数据表信息,其中,数据库信息用于指示二进制日志文件数据所在的数据库,数据表信息用于指示二进制日志文件数据所在的数据表。示例性的,数据库信息可以是数据库标识,例如库名(db_name);数据表信息可以是数据表标识,例如表名(table_name)。
二进制日志文件数据的生成时间,可以理解为该二进制日志文件数据所指示的变更操作的发生时间,该变更操作可能是业务数据变更,也可能是表结构变更。
在一个示例中,服务器可以从第二数据库中获取二进制日志文件流(BinlogStream),并逐个解析二进制日志文件。通过对二进制日志文件进行初步解析,可以获得二进制日志文件数据的库表信息和生成时间。
S202,当缓存中不存在库表信息关联的表结构对象时,查询第一数据库中是否存在库表信息关联的第一时序记录,第一时序记录包括第一变更时间及其对应的第一表结构信息,第一变更时间与生成时间相匹配。
其中,表结构对象是指已经构建好的表结构,可存储于缓存中以便服务器直接获取和使用。同一库表信息在缓存中可以关联一个表结构对象。示例性的,表结构中可以包括但不限于以下信息:列名(或称字段名称)、列类型(或称字段类型)、数据库连接(Java DataBase Connectivity,JDBC)类型、是否为主键(Key)、是否唯一、是否为空值(Null)、默认值以及索引信息。
时序记录是指与表结构变更相关的记录,可存储于第一数据库中以便服务器通过查询获取。同一库表信息在第一数据库中可能关联一条或者多条时序记录,每条时序记录可以包括变更时间、以及该变更时间对应的表结构信息,该变更时间对应的表结构信息可以包括本次变更前后的表结构信息。可选的,时序记录可以以地址、库名、表名和变更时间这个四元组进行标识,不同任务之间可以共享,以减少记录数量。
第一时序记录包括第一变更时间、以及该第一变更时间对应的表结构信息(记为第一表结构信息),其中,第一变更时间与二进制日志文件数据的生成时间相匹配,相应的,该第一变更时间对应的第一表结构信息与该二进制日志文件数据相匹配,该第一变更时间对应的第一表结构信息可以是本次变更后的表结构信息。
具体的,服务器获得二进制日志文件数据的库表信息和生成时间后,可以先根据该库表信息查询缓存中是否存在该库表信息关联的表结构对象,若缓存中不存在该库表信息关联的表结构对象,则可以根据该库表信息和该生成时间查询第一数据库中是否存在该库表信息关联的第一时序记录,用于构建表结构对象。
S203,当第一数据库中存在第一时序记录时,基于第一表结构信息构建第一表结构对象,第一表结构对象用于解析二进制日志文件数据。
当第一数据库中存在第一时序记录时,服务器从第一数据库中获取第一时序记录所包含的第一表结构信息,并基于该第一表结构信息构建表结构对象(记为第一表结构对象)。由于该第一表结构信息在时间上与二进制日志文件数据的生成时间是相匹配的,因此基于该第一表结构信息构建的表结构对象与该二进制日志文件数据是相匹配的,从而可以正确解析该二进制日志文件数据。
上述实施例中,服务器可以获取二进制日志文件数据的库表信息和生成时间,当缓存中不存在该库表信息关联的表结构对象时,查询第一数据库中是否存在该库表信息关联的第一时序记录,该第一时序记录包括第一变更时间及其对应的第一表结构信息,该第一变更时间与该生成时间相匹配,当第一数据库中存在该第一时序记录时,基于该第一表结构信息构建第一表结构对象。通过上述实施例,可以将与表结构变更相关的时序记录存储于第一数据库中,从而根据第一数据库中存储的时序记录可以回溯到历史时刻的表结构信息,服务器可以从第一数据库中查询变更时间与二进制日志文件数据的生成时间相匹配的第一时序记录,基于该第一时序记录中的第一表结构信息构建的第一表结构对象,与该二进制日志文件数据相匹配,从而可以正确解析该二进制日志文件数据,有助于减少数据解析异常。
在一种可能的实施方式中,第一变更时间与生成时间相匹配包括:第一变更时间早于或等于生成时间,且第一变更时间是变更时间集合中与生成时间相隔最近的变更时间;其中,变更时间集合包括库表信息关联的所有时序记录中的变更时间。
当第一数据库中存在该库表信息关联的时序记录时,该库表信息关联的时序记录可能只有一条,此时变更时间集合包含一个变更时间;该库表信息关联的时序记录也可能有多条,此时变更时间集合包含多个变更时间。
具体的,服务器可以将变更时间集合中的各个变更时间与该生成时间进行比对,根据比对结果,从变更时间集合中选择一个早于或等于生成时间且与生成时间相隔最近的变更时间,作为第一变更时间。
请参阅图3,图3是本申请实施例提供的一种表结构变更时间的示意图。如图3所示,该示例中包括4个时序记录,相应的变更时间按照从先到后的顺序依次是t1、t2、t3和t4,T表示二进制日志文件数据的生成时间,其中,变更时间t1和变更时间t2都早于生成时间T,变更时间t3和变更时间t4都晚于生成时间T,在变更时间t1和变更时间t2中,变更时间t2与生成时间T相隔更近。因此,该示例中,与生成时间T相匹配的第一变更时间为变更时间t2。
假设经过变更时间t2后,表结构信息从表结构信息S1变为表结构信息S2,也就是说,变更时间t2所对应的变更前后的表结构信息,分别为表结构信息S1和表结构信息S2。从变更时间t2到变更时间t3期间没有发生表结构变更,因此变更时间t3所对应的变更前的表结构信息,可认为与变更时间t2所对应的变更后的表结构信息相同,即变更时间t3所对应的变更前的表结构信息也是表结构信息S2,也就是说,从变更时间t2到变更时间t3期间的表结构信息都为表结构信息S2。二进制日志文件数据的生成时间在变更时间t2到变更时间t3期间内,因此表结构信息S2与该二进制日志文件数据是相匹配的,可用于正确解析该二进制日志文件数据。
通过上述实施方式,服务器可以从第一数据库中存储的与库表信息关联的所有时序记录中,选取变更时间早于或等于二进制日志文件数据的生成时间、且与该生成时间相隔最近的时序记录作为第一时序记录,据此获得的第一时序记录中的变更后表结构信息与该二进制日志文件数据是相匹配的,能够正确解析该二进制日志文件数据。
在一种可能的实施方式中,服务器构建第一表结构对象之后,还可以将第一表结构对象存储于缓存中,第一表结构对象与库表信息相关联。
服务器构建第一表结构对象之后,可以将该第一表结构对象存储于缓存中,该第一表结构对象与该库表信息是相关联的,以便后续对关联该库表信息的二进制日志文件数据进行解析时,可以直接从缓存中获取相应的表结构对象,用来解析该二进制日志文件数据。
通过上述实施方式,服务器可以将构建的第一表结构对象存储于缓存中,以便后续可以直接从缓存中获取表结构对象,用来解析该二进制日志文件数据,有助于提高解析效率。
在一种可能的实施方式中,当第一数据库中不存在第一时序记录时,从第二数据库中获取库表信息关联的第二表结构信息,基于第二表结构信息构建第二表结构对象;将第二表结构对象存储于缓存中,第二表结构对象与库表信息相关联;根据第二表结构信息及其对应的变更时间生成第二时序记录,将第二时序记录存储于第一数据库中,第二时序记录与库表信息相关联。
具体的,服务器获得二进制日志文件数据的库表信息和生成时间后,可以先根据该库表信息查询缓存中是否存在该库表信息关联的表结构对象,当缓存中不存在该库表信息关联的表结构对象时,可以根据该库表信息和该生成时间查询第一数据库中是否存在该库表信息关联的第一时序记录,若第一数据库中不存在该库表信息关联的第一时序记录,则可以根据该库表信息从第二数据库中查询获得该库表信息关联的表结构信息(记为第二表结构信息),并基于该第二表结构信息构建表结构对象(记为第二表结构对象),用来解析该二进制日志文件数据。
可选的,服务器从第二数据库中查询第二表结构信息时,可以使用一条查询语句(例如Create Table SQL)进行查询,相比于通过多个查询组合进行查询,查询效率更高,稳定性更好。
服务器构建第二表结构对象之后,可以将该第二表结构对象存储于缓存中,该第二表结构对象与该库表信息是相关联的,以便后续对关联该库表信息的二进制日志文件数据进行解析时,可以直接从缓存中获取相应的表结构对象,用来解析该二进制日志文件数据。
服务器还可以根据第二表结构信息及其对应的变更时间生成第二时序记录,并将第二时序记录存储于第一数据库中,该第二时序记录与该库表信息是相关联的,以便后续对关联该库表信息的二进制日志文件数据进行解析时,可以结合该二进制日志文件数据的生成时间从第一数据库中获取相应的时序记录,得到相应的表结构信息,继而构建相应的表结构对象,用来解析该二进制日志文件数据。
通过上述实施方式,当缓存中不存在库表信息关联的表结构对象,且第一数据库中不存在该库表信息关联的时序记录时,服务器可以降级从第二数据库中获取该库表信息关联的第二表结构信息,构建相应的第二表结构对象,以减弱对于第一数据库中时序记录的依赖性,进而将第二表结构对象存储于缓存中,以及将根据第二表结构信息及其对应的变更时间生成的第二时序记录存储于第一数据库中,以便后续二进制日志文件数据解析时使用。
在一种可能的实施方式中,服务器将第二时序记录存储于第一数据库中,具体可以包括:通过异步线程,将第二时序记录持久化存储于第一数据库中。
其中,异步线程可以理解为与解析线程(或称为主线程)相互独立的线程,解析线程无需等待异步线程完成后再进行,通过异步线程将第二时序记录持久化存储于第一数据库中,可以减少该持久化存储过程对解析性能的影响。
请参阅图4,图4是本申请实施例提供的一种存储时序记录的示意图。如图4所示,可以先通过解析线程将时序记录写入到阻塞队列中,再由异步线程将时序记录持久化存储到第一数据库中。
通过上述实施方式,服务器可以采用异步线程将第二时序记录持久化存储于第一数据库中,据此可以减少第二时序记录的持久化存储过程对解析性能的影响,有助于提升解析速度。
在一种可能的实施方式中,当缓存中存在库表信息关联的表结构对象时,若二进制日志文件数据指示表结构变更,则根据二进制日志文件数据确定第三表结构信息,基于第三表结构信息构建第三表结构对象;将第三表结构对象存储于缓存中,第三表结构对象与库表信息相关联;根据第三表结构信息及其对应的变更时间生成第三时序记录,将第三时序记录存储于第一数据库中,第三时序记录与库表信息相关联。
具体的,服务器可以通过监听事件来判断二进制日志文件数据是否指示表结构变更。例如,若监听到数据定义语言(Data Definition Language,DDL)的相关事件,则可判定该二进制日志文件数据指示的是表结构变更。
当该二进制日志文件数据指示表结构变更时,服务器可以根据该二进制日志文件数据确定相应的表结构信息(记为第三表结构信息),并基于第三表结构信息构建表结构对象(记为第三表结构对象),用来解析后续二进制日志文件数据。
服务器构建第三表结构对象之后,可以将该第三表结构对象存储于缓存中,该第三表结构对象与该库表信息是相关联的,以便后续对关联该库表信息的二进制日志文件数据进行解析时,可以直接从缓存中获取相应的表结构对象,用来解析该二进制日志文件数据。
服务器还可以根据第三表结构信息及其对应的变更时间生成第三时序记录,并将第三时序记录存储于第一数据库中,该第三时序记录与该库表信息是相关联的,以便后续对关联该库表信息的二进制日志文件数据进行解析时,可以结合该二进制日志文件数据的生成时间从第一数据库中获取相应的时序记录,得到相应的表结构信息,继而构建相应的表结构对象,用来解析该二进制日志文件数据。
通过上述实施方式,当缓存中存在库表信息关联的表结构对象,且二进制日志文件数据指示表结构变更时,服务器可以根据该二进制日志文件数据确定第三表结构信息,构建相应的第三表结构对象,并将第三表结构对象存储于缓存中,以及将根据第三表结构信息及其对应的变更时间生成的第三时序记录存储于第一数据库中,以便后续二进制日志文件数据解析时使用。
在一种可能的实施方式中,将第三时序记录存储于第一数据库中,具体可以包括:通过异步线程,将第三时序记录持久化存储于第一数据库中。
其中,异步线程可以理解为与解析线程(或称为主线程)相互独立的线程,解析线程无需等待异步线程完成后再进行,通过异步线程将第三时序记录持久化存储于第一数据库中,可以减少该持久化存储过程对解析性能的影响。
通过上述实施方式,服务器可以采用异步线程将第三时序记录持久化存储于第一数据库中,据此可以减少第三时序记录的持久化存储过程对解析性能的影响,有助于提升解析速度。
在一种可能的实施方式中,当缓存中存在库表信息关联的表结构对象时,若二进制日志文件数据指示非表结构变更,则利用库表信息关联的表结构对象解析二进制日志文件数据。
具体的,服务器可以通过监听事件来判断二进制日志文件数据是否指示非表结构变更。例如,若监听到数据管理语言(Data Manipulation Language,DML)的相关事件,则可判定该二进制日志文件数据指示的是数据变更,而不是表结构变更。
当该二进制日志文件数据指示表非结构变更时,可认为该库表信息关联的表结构对象与该二进制日志文件数据是相匹配的,从而服务器可以利用该库表信息关联的表结构对象解析该二进制日志文件数据。
通过上述实施方式,当缓存中存在库表信息关联的表结构对象,且二进制日志文件数据指示非表结构变更时,服务器可以直接利用该库表信息关联的表结构对象,正确解析该二进制日志文件数据。
在一种可能的实施方式中,服务器还可以响应于对目标时序记录的操作指令,对目标时序记录执行操作指令所指示的操作;其中,操作指令包括查询指令、增加指令、修改指令或删除指令。
服务器还可以提供对与表结构变更相关的时序记录的管理能力,比如,可以提供对某个或某些时序记录(记为目标时序记录)的查询、增加、修改和删除等辅助功能,以应对一些特殊情况,降低运维压力。例如,当Create Table SQL或者DDL出现无法解析的情况,可能需要对时序记录进行相应修改;再例如,当初次消费二进制日志文件数据的位置没有时序记录且已经发生过DDL变更的情况,可能需要增加时序记录。
示例性的,在对时序记录进行删除时,可以采用定期清理策略,例如每天1点进行清理;还可以采用循环限数删除策略,例如每次删除1000条,删除周期为1s;还可以只保留最近一段时间的时序记录,例如保留最近14天的时序记录。据此可以避免时序记录无限制膨胀。
可选的,这些辅助功能可以在管控平台上实现,服务器可以是该管控平台的服务器。例如,用户可以登录管控平台,在该管控平台的时序记录管理页面发起对某个时序记录的操作指令,服务器接收到该操作指令后,可以对该时序记录执行该操作指令所指示的操作。
请参阅图5,图5是本申请实施例提供的一种时序记录管理页面的示意图。如图5所示,该时序记录管理页面中包括第一区域,该第一区域中包括库输入框、表输入框、时间输入框和查询控件,用户可以在库输入框中输入库名,在表输入框中输入表名,在时间范围输入框中输入时间范围,然后触发查询控件,以发起对上述输入信息所关联的时序记录的查询指令。服务器响应于该查询指令,可以查询相应的时序记录,并在时序记录管理页面中显示查询到的时序记录。
如图5所示,时序记录管理页面中还包括第二区域,该第二区域用于显示时序记录,具体显示了时序记录的库名、表名、时间、DDL和变更后Schema,该第二区域中还包括操作控件,例如查看、修改或删除控件,用户可以通过触发操作控件,以发起对某个时序记录的操作指令。服务器响应于该操作指令,可以对该时序记录执行相应操作。
通过上述实施方式,服务器提供了辅助功能以支持对时序记录进行查询、增加、修改或删除,有助于增强应急问题解决能力。
请参阅图6,图6是本申请实施例提供的又一种数据处理方法的流程示意图,该数据处理方法可以应用于图1中的服务器101。如图6所示,该数据处理方法可以包括以下步骤A1至步骤A17。
步骤A1,服务器获取二进制日志文件(Binlog)数据的库表信息和生成时间;
步骤A2,服务器根据该库表信息,查询缓存中是否存在该库表信息关联的表结构对象,若是,则进入步骤A3,若否,则进入步骤A8;
步骤A3,服务器判断该二进制日志文件数据是否指示表结构变更,若是,则进入步骤A4,若否,则进入步骤A7;
步骤A4,服务器根据该二进制日志文件数据确定第三表结构信息,基于第三表结构信息构建第三表结构对象;
步骤A5,服务器将第三表结构对象存储于缓存中,第三表结构对象与该库表信息相关联;
步骤A6,服务器根据第三表结构信息及其对应的变更时间生成第三时序记录,将第三时序记录存储于第一数据库中,第三时序记录与该库表信息相关联;
步骤A7,服务器利用该库表信息关联的表结构对象解析该二进制日志文件数据;
步骤A8,服务器根据该库表信息和该生成时间,查询第一数据库中是否存在该库表信息关联的第一时序记录,若是,则进入步骤A9,若否,则进入步骤A13;
步骤A9,服务器基于第一表结构信息构建第一表结构对象;
步骤A10,服务器将第一表结构对象存储于缓存中,第一表结构对象与该库表信息相关联;
步骤A11,服务器判断该二进制日志文件数据是否指示表结构变更,若是,则进入后续二进制日志文件数据解析,若否,则进入步骤A12;
步骤A12,服务器利用第一表结构对象解析该二进制日志文件数据;
步骤A13,服务器从第二数据库中获取该库表信息关联的第二表结构信息,基于第二表结构信息构建第二表结构对象;
步骤A14,服务器将第二表结构对象存储于缓存中,第二表结构对象与该库表信息相关联;
步骤A15,服务器根据第二表结构信息及其对应的变更时间生成第二时序记录,将第二时序记录存储于第一数据库中,第二时序记录与该库表信息相关联;
步骤A16,服务器判断该二进制日志文件数据是否指示表结构变更,若是,则进入后续二进制日志文件数据解析,若否,则进入步骤A17;
步骤A17,服务器利用第二表结构对象解析该二进制日志文件数据。
应理解,关于上述步骤A1至步骤A17中未做具体描述的内容,可以对应参考前文实施例中的相关描述,此处不再赘述。通过上述实施例,服务器可以获得与二进制日志文件数据相匹配的表结构对象,用于解析该二进制日志文件数据,有助于减少数据解析异常。
本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
上文对各个实施例的描述倾向于强调各个实施例之间的不同之处,其相同或相似之处可以互相参考,为了简洁,本文不再赘述。
请参阅图7,图7是本申请实施例提供的一种数据处理装置的结构示意图,该数据处理装置700包括:获取单元701、查询单元702和构建单元703,其中:
获取单元701,用于获取二进制日志文件数据的库表信息和生成时间;
查询单元702,用于当缓存中不存在库表信息关联的表结构对象时,查询第一数据库中是否存在库表信息关联的第一时序记录,第一时序记录包括第一变更时间及其对应的第一表结构信息,第一变更时间与所述生成时间相匹配;
构建单元703,用于当第一数据库中存在第一时序记录时,基于第一表结构信息构建第一表结构对象,第一表结构对象用于解析二进制日志文件数据。
上述实施例中,数据处理装置可以获取二进制日志文件数据的库表信息和生成时间,当缓存中不存在该库表信息关联的表结构对象时,查询第一数据库中是否存在该库表信息关联的第一时序记录,该第一时序记录包括第一变更时间及其对应的第一表结构信息,该第一变更时间与该生成时间相匹配,当第一数据库中存在该第一时序记录时,基于该第一表结构信息构建第一表结构对象。
通过上述实施例,可以将与表结构变更相关的时序记录存储于第一数据库中,从而根据第一数据库中存储的时序记录可以回溯到历史时刻的表结构信息,数据处理装置可以从第一数据库中查询变更时间与二进制日志文件数据的生成时间相匹配的第一时序记录,基于该第一时序记录中的第一表结构信息构建的第一表结构对象,与该二进制日志文件数据相匹配,从而可以正确解析该二进制日志文件数据,有助于减少数据解析异常。
在一种可能的实施方式中,第一变更时间与生成时间相匹配包括:第一变更时间早于或等于生成时间,且第一变更时间是变更时间集合中与生成时间相隔最近的变更时间;其中,变更时间集合包括库表信息关联的所有时序记录中的变更时间。
通过上述实施方式,数据处理装置可以从第一数据库中存储的与库表信息关联的所有时序记录中,选取变更时间早于或等于二进制日志文件数据的生成时间、且与该生成时间相隔最近的时序记录作为第一时序记录,据此获得的第一时序记录中的变更后表结构信息与该二进制日志文件数据是相匹配的,能够正确解析该二进制日志文件数据。
在一种可能的实施方式中,该数据处理装置还包括存储单元,存储单元用于:将第一表结构对象存储于缓存中,第一表结构对象与库表信息相关联。
通过上述实施方式,数据处理装置可以将构建的第一表结构对象存储于缓存中,以便后续可以直接从缓存中获取表结构对象,用来解析该二进制日志文件数据,有助于提高解析效率。
在一种可能的实施方式中,查询单元702还用于:当第一数据库中不存在第一时序记录时,从第二数据库中获取库表信息关联的第二表结构信息;构建单元703还用于:基于第二表结构信息构建第二表结构对象;存储单元还用于:将第二表结构对象存储于缓存中,第二表结构对象与库表信息相关联;以及,根据第二表结构信息及其对应的变更时间生成第二时序记录,将第二时序记录存储于第一数据库中,第二时序记录与库表信息相关联。
通过上述实施方式,当缓存中不存在库表信息关联的表结构对象,且第一数据库中不存在该库表信息关联的时序记录时,数据处理装置可以降级从第二数据库中获取该库表信息关联的第二表结构信息,构建相应的第二表结构对象,以减弱对于第一数据库中时序记录的依赖性,进而将第二表结构对象存储于缓存中,以及将根据第二表结构信息及其对应的变更时间生成的第二时序记录存储于第一数据库中,以便后续二进制日志文件数据解析时使用。
在一种可能的实施方式中,存储单元在将第二时序记录存储于第一数据库中时,具体用于:通过异步线程,将第二时序记录持久化存储于第一数据库中。
通过上述实施方式,数据处理装置可以采用异步线程将第二时序记录持久化存储于第一数据库中,据此可以减少第二时序记录的持久化存储过程对解析性能的影响,有助于提升解析速度。
在一种可能的实施方式中,构建单元703还用于:当缓存中存在库表信息关联的表结构对象时,若二进制日志文件数据指示表结构变更,则根据二进制日志文件数据确定第三表结构信息,基于第三表结构信息构建第三表结构对象;存储单元还用于:将第三表结构对象存储于缓存中,第三表结构对象与库表信息相关联;以及,根据第三表结构信息及其对应的变更时间生成第三时序记录,将第三时序记录存储于第一数据库中,第三时序记录与库表信息相关联。
通过上述实施方式,当缓存中存在库表信息关联的表结构对象,且二进制日志文件数据指示表结构变更时,数据处理装置可以根据该二进制日志文件数据确定第三表结构信息,构建相应的第三表结构对象,并将第三表结构对象存储于缓存中,以及将根据第三表结构信息及其对应的变更时间生成的第三时序记录存储于第一数据库中,以便后续二进制日志文件数据解析时使用。
在一种可能的实施方式中,存储单元在将第三时序记录存储于第一数据库中时,具体用于:通过异步线程,将第三时序记录持久化存储于第一数据库中。
通过上述实施方式,数据处理装置可以采用异步线程将第三时序记录持久化存储于第一数据库中,据此可以减少第三时序记录的持久化存储过程对解析性能的影响,有助于提升解析速度。
在一种可能的实施方式中,该数据处理装置还包括处理单元,处理单元用于:当缓存中存在库表信息关联的表结构对象时,若二进制日志文件数据指示非表结构变更,则利用库表信息关联的表结构对象解析二进制日志文件数据。
通过上述实施方式,当缓存中存在库表信息关联的表结构对象,且二进制日志文件数据指示非表结构变更时,数据处理装置可以直接利用该库表信息关联的表结构对象,正确解析该二进制日志文件数据。
在一种可能的实施方式中,该数据处理装置还包括操作单元,操作单元用于:响应于对目标时序记录的操作指令,对目标时序记录执行操作指令所指示的操作;其中,操作指令包括查询指令、增加指令、修改指令或删除指令。
通过上述实施方式,数据处理装置提供了辅助功能以支持对时序记录进行查询、增加、修改或删除,有助于增强应急问题解决能力。
关于数据处理装置的具体限定可以参见上文中对于数据处理方法的限定,在此不再赘述。上述数据处理装置中的各个单元可全部或部分通过软件、硬件及其组合来实现。上述各单元可以以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个单元对应的操作。
请参阅图8,图8是本申请实施例提供的一种电子设备的结构示意图。该电子设备800包括存储器801和处理器802。可选地,该电子设备800还包括通信接口803以及总线804。存储器801、处理器802以及通信接口803通过总线804实现彼此之间的通信连接。存储器801存储有计算机程序,处理器802用于执行存储器801存储的计算机程序,以实现上述各方法实施例中的方法。
本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的方法。
本申请实施例还提供了一种计算机程序产品,该计算机程序产品包括计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的方法。
应理解,本申请实施例中的存储器/可读存储介质可以是易失性存储器或非易失性存储器,或可包括易失性存储器和非易失性存储器两者。其中,非易失性存储器可以是硬盘(hard disk drive,HDD)、固态硬盘(solid-state drive,SSD)、只读存储器(read-onlymemory,ROM)或闪存等。易失性存储器可以是随机存取存储器(random access memory,RAM)或外部高速缓冲存储器,作为说明而非局限,RAM可以是多种形式,例如静态随机存取存储器(static random access memory,SRAM)或动态随机存取存储器(dynamic randomaccess memory,DRAM)等。
本申请实施例中的处理器可以是中央处理器(central processing unit,CPU)、显卡处理器(graphics processing unit,GPU)或微处理器(microprocessor unit,MPU)等处理模块中的一种或者多种的组合,还可以是其他通用处理器、数字信号处理器(digitalsignal processor,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现成可编程门阵列(field programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。
Claims (12)
1.一种数据处理方法,其特征在于,所述方法包括:
获取二进制日志文件数据的库表信息和生成时间;
当缓存中不存在所述库表信息关联的表结构对象时,查询第一数据库中是否存在所述库表信息关联的第一时序记录,所述第一时序记录包括第一变更时间及其对应的第一表结构信息,所述第一变更时间与所述生成时间相匹配;
当所述第一数据库中存在所述第一时序记录时,基于所述第一表结构信息构建第一表结构对象,所述第一表结构对象用于解析所述二进制日志文件数据。
2.根据权利要求1所述的方法,其特征在于,所述第一变更时间与所述生成时间相匹配包括:所述第一变更时间早于或等于所述生成时间,且所述第一变更时间是变更时间集合中与所述生成时间相隔最近的变更时间;
其中,所述变更时间集合包括所述库表信息关联的所有时序记录中的变更时间。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
将所述第一表结构对象存储于所述缓存中,所述第一表结构对象与所述库表信息相关联。
4.根据权利要求1至3中任一项所述的方法,其特征在于,所述方法还包括:
当所述第一数据库中不存在所述第一时序记录时,从第二数据库中获取所述库表信息关联的第二表结构信息,基于所述第二表结构信息构建第二表结构对象;
将所述第二表结构对象存储于所述缓存中,所述第二表结构对象与所述库表信息相关联;
根据所述第二表结构信息及其对应的变更时间生成第二时序记录,将所述第二时序记录存储于所述第一数据库中,所述第二时序记录与所述库表信息相关联。
5.根据权利要求4所述的方法,其特征在于,所述将所述第二时序记录存储于所述第一数据库中,包括:
通过异步线程,将所述第二时序记录持久化存储于所述第一数据库中。
6.根据权利要求1至3中任一项所述的方法,其特征在于,所述方法还包括:
当所述缓存中存在所述库表信息关联的表结构对象时,若所述二进制日志文件数据指示表结构变更,则根据所述二进制日志文件数据确定第三表结构信息,基于所述第三表结构信息构建第三表结构对象;
将所述第三表结构对象存储于所述缓存中,所述第三表结构对象与所述库表信息相关联;
根据所述第三表结构信息及其对应的变更时间生成第三时序记录,将所述第三时序记录存储于所述第一数据库中,所述第三时序记录与所述库表信息相关联。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
当所述缓存中存在所述库表信息关联的表结构对象时,若所述二进制日志文件数据指示非表结构变更,则利用所述库表信息关联的表结构对象解析所述二进制日志文件数据。
8.根据权利要求1至3中任一项所述的方法,其特征在于,所述方法还包括:
响应于对目标时序记录的操作指令,对所述目标时序记录执行所述操作指令所指示的操作;其中,所述操作指令包括查询指令、增加指令、修改指令或删除指令。
9.一种数据处理装置,其特征在于,所述装置包括:
获取单元,用于获取二进制日志文件数据的库表信息和生成时间;
查询单元,用于当缓存中不存在所述库表信息关联的表结构对象时,查询第一数据库中是否存在所述库表信息关联的第一时序记录,所述第一时序记录包括第一变更时间及其对应的第一表结构信息,所述第一变更时间与所述生成时间相匹配;
构建单元,用于当所述第一数据库中存在所述第一时序记录时,基于所述第一表结构信息构建第一表结构对象,所述第一表结构对象用于解析所述二进制日志文件数据。
10.一种电子设备,其特征在于,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现权利要求1至8中任意一项所述的方法。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1至8中任意一项所述的方法。
12.一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现权利要求1至8中任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311825852.XA CN117708094B (zh) | 2023-12-26 | 2023-12-26 | 数据处理方法、装置、电子设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311825852.XA CN117708094B (zh) | 2023-12-26 | 2023-12-26 | 数据处理方法、装置、电子设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117708094A true CN117708094A (zh) | 2024-03-15 |
CN117708094B CN117708094B (zh) | 2024-07-23 |
Family
ID=90147918
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311825852.XA Active CN117708094B (zh) | 2023-12-26 | 2023-12-26 | 数据处理方法、装置、电子设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117708094B (zh) |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104933101A (zh) * | 2015-05-29 | 2015-09-23 | 南车株洲电力机车研究所有限公司 | 一种基于svn的配置审计信息自动统计方法 |
CN105045817A (zh) * | 2015-06-26 | 2015-11-11 | 司法部司法鉴定科学技术研究所 | 基于事务日志的SQL Server数据库取证分析系统及方法 |
US20150324382A1 (en) * | 2014-05-12 | 2015-11-12 | Thomas Seufert | Optimizing single-value database read operations using a single value cache |
CN109471851A (zh) * | 2018-10-17 | 2019-03-15 | 上海达梦数据库有限公司 | 数据处理方法、装置、服务器和存储介质 |
CN110879813A (zh) * | 2019-11-20 | 2020-03-13 | 浪潮软件股份有限公司 | 一种基于二进制日志解析的MySQL数据库增量同步实现方法 |
WO2020101343A1 (ko) * | 2018-11-14 | 2020-05-22 | 주식회사 실크로드소프트 | 데이터베이스 관리 시스템에서의 변경 데이터 캡쳐 구현 기법 |
CN111752804A (zh) * | 2020-06-29 | 2020-10-09 | 中国电子科技集团公司第二十八研究所 | 一种基于数据库日志扫描的数据库缓存系统 |
CN114647651A (zh) * | 2022-05-19 | 2022-06-21 | 同日云联信息技术(苏州)有限公司 | 异构数据库同步方法及系统 |
CN114691704A (zh) * | 2022-03-26 | 2022-07-01 | 浪潮云信息技术股份公司 | 一种基于MySQL binlog的元数据同步方法 |
CN114741453A (zh) * | 2022-04-27 | 2022-07-12 | 度小满科技(北京)有限公司 | 数据同步的方法、系统及计算机可读存储介质 |
CN115730008A (zh) * | 2022-11-10 | 2023-03-03 | 阿里云计算有限公司 | 一种日志解析方法、数据同步系统、电子设备及存储介质 |
US20230195697A1 (en) * | 2021-12-22 | 2023-06-22 | Singlestore, Inc. | Separation of storage and compute in database management systems |
-
2023
- 2023-12-26 CN CN202311825852.XA patent/CN117708094B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150324382A1 (en) * | 2014-05-12 | 2015-11-12 | Thomas Seufert | Optimizing single-value database read operations using a single value cache |
CN104933101A (zh) * | 2015-05-29 | 2015-09-23 | 南车株洲电力机车研究所有限公司 | 一种基于svn的配置审计信息自动统计方法 |
CN105045817A (zh) * | 2015-06-26 | 2015-11-11 | 司法部司法鉴定科学技术研究所 | 基于事务日志的SQL Server数据库取证分析系统及方法 |
CN109471851A (zh) * | 2018-10-17 | 2019-03-15 | 上海达梦数据库有限公司 | 数据处理方法、装置、服务器和存储介质 |
WO2020101343A1 (ko) * | 2018-11-14 | 2020-05-22 | 주식회사 실크로드소프트 | 데이터베이스 관리 시스템에서의 변경 데이터 캡쳐 구현 기법 |
CN110879813A (zh) * | 2019-11-20 | 2020-03-13 | 浪潮软件股份有限公司 | 一种基于二进制日志解析的MySQL数据库增量同步实现方法 |
CN111752804A (zh) * | 2020-06-29 | 2020-10-09 | 中国电子科技集团公司第二十八研究所 | 一种基于数据库日志扫描的数据库缓存系统 |
US20230195697A1 (en) * | 2021-12-22 | 2023-06-22 | Singlestore, Inc. | Separation of storage and compute in database management systems |
CN114691704A (zh) * | 2022-03-26 | 2022-07-01 | 浪潮云信息技术股份公司 | 一种基于MySQL binlog的元数据同步方法 |
CN114741453A (zh) * | 2022-04-27 | 2022-07-12 | 度小满科技(北京)有限公司 | 数据同步的方法、系统及计算机可读存储介质 |
CN114647651A (zh) * | 2022-05-19 | 2022-06-21 | 同日云联信息技术(苏州)有限公司 | 异构数据库同步方法及系统 |
CN115730008A (zh) * | 2022-11-10 | 2023-03-03 | 阿里云计算有限公司 | 一种日志解析方法、数据同步系统、电子设备及存储介质 |
Non-Patent Citations (3)
Title |
---|
WEI LI; DEZHI CHENG; LEI HE; YUANZHUO WANG; XIAOLONG JIN: "Joint Event Extraction Based on Hierarchical Event Schemas From FrameNet", IEEE ACCESS, 17 February 2019 (2019-02-17), pages 25001 * |
罗健: "一种数据库复制数据流框架设计和实现", 中国优秀硕士学位论文全文数据库, 15 March 2017 (2017-03-15), pages 138 - 3835 * |
谭森;郭捷;: "基于日志分析的MySQL数据库取证算法", 信息安全与通信保密, no. 03, 10 March 2015 (2015-03-10), pages 80 - 83 * |
Also Published As
Publication number | Publication date |
---|---|
CN117708094B (zh) | 2024-07-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10169437B2 (en) | Triplestore replicator | |
CN110162526B (zh) | 一种块链式账本中数据记录的查询方法、装置及设备 | |
CN110275916B (zh) | 数据操作记录的存储方法、系统、装置及设备 | |
CN110825737A (zh) | 索引创建和数据查询方法、装置及设备 | |
CN110162512B (zh) | 一种日志检索方法、装置及存储介质 | |
CN110489421B (zh) | 数据存储方法、装置、计算机可读存储介质和计算机设备 | |
US10999062B2 (en) | Blockchain-type data storage | |
US10855750B2 (en) | Centralized management of webservice resources in an enterprise | |
US20190065551A1 (en) | Data providing apparatus and data providing method | |
CN112783866B (zh) | 数据读取方法、装置、计算机设备和存储介质 | |
US11204933B2 (en) | Data manipulation record storage method, system, apparatus, and device | |
CN112579676B (zh) | 异构系统间的数据处理方法、装置、存储介质和设备 | |
CN117708094B (zh) | 数据处理方法、装置、电子设备和存储介质 | |
CN110636042B (zh) | 一种服务端已验证块高的更新方法、装置及设备 | |
US11126604B2 (en) | Aggregation apparatus, aggregation method, and storage medium | |
CN112699129A (zh) | 一种数据处理系统、方法及装置 | |
JP2011186853A (ja) | データ処理装置及びシステム及び方法及びプログラム | |
US20140149419A1 (en) | Complex event processing apparatus for referring to table within external database as external reference object | |
CN107844491B (zh) | 一种在分布式系统中实现强一致性读操作的方法与设备 | |
US20180060388A1 (en) | Pre-applying a reduced version of a search query to limit the search scope | |
US11494382B2 (en) | Optimization of first set of ordered items | |
CN118394846A (zh) | 一种数据同步方法、装置、电子设备和存储介质 | |
CN116701545A (zh) | 审计数据分析方法、装置、存储介质及处理器 | |
WO2020065960A1 (ja) | 情報処理装置、制御方法、及びプログラム | |
CN116414772A (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 |