CN116975649A - 数据处理方法、装置、电子设备、存储介质及程序产品 - Google Patents
数据处理方法、装置、电子设备、存储介质及程序产品 Download PDFInfo
- Publication number
- CN116975649A CN116975649A CN202310655064.4A CN202310655064A CN116975649A CN 116975649 A CN116975649 A CN 116975649A CN 202310655064 A CN202310655064 A CN 202310655064A CN 116975649 A CN116975649 A CN 116975649A
- Authority
- CN
- China
- Prior art keywords
- database
- sub
- databases
- baseline
- tables
- 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.)
- Pending
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 29
- 238000001514 detection method Methods 0.000 claims abstract description 61
- 238000000034 method Methods 0.000 claims abstract description 37
- 238000004590 computer program Methods 0.000 claims description 21
- 238000012545 processing Methods 0.000 claims description 12
- 238000013473 artificial intelligence Methods 0.000 abstract description 21
- 238000005516 engineering process Methods 0.000 abstract description 19
- 230000009286 beneficial effect Effects 0.000 abstract description 3
- 230000018109 developmental process Effects 0.000 description 30
- 238000011161 development Methods 0.000 description 27
- 230000008569 process Effects 0.000 description 17
- 238000010586 diagram Methods 0.000 description 8
- 238000012360 testing method Methods 0.000 description 7
- 230000002159 abnormal effect Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000007726 management method Methods 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 230000000391 smoking effect Effects 0.000 description 4
- 239000013598 vector Substances 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 238000007689 inspection Methods 0.000 description 3
- 238000012423 maintenance Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000012549 training Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 239000011521 glass Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 238000012827 research and development Methods 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/22—Matching criteria, e.g. proximity measures
-
- 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/211—Schema design and 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/22—Indexing; Data structures therefor; Storage structures
-
- 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
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Evolutionary Computation (AREA)
- Evolutionary Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Bioinformatics & Computational Biology (AREA)
- Artificial Intelligence (AREA)
- Software Systems (AREA)
- Life Sciences & Earth Sciences (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例提供了一种数据处理方法、装置、电子设备、存储介质及程序产品,涉及数据库、云技术、人工智能等技术领域。该方法包括:获取待检测的至少两个数据库,并确定至少两个数据库中作为检测标准的基线数据库;针对至少两个数据库中的每个数据库,确定数据库的各个分库分表中作为检测标准的基线表,并基于基线表,比对数据库中各个分库分表的表结构是否均一致;若是,基于基线数据库的基线表,比对至少两个数据库的基线表的表结构是否均一致,得到至少两个数据库的检测结果,本申请实施例能够实现任意数量数据库的表结构差异的比对,有效提升比对效率,有助于软件研发和交付的顺利执行。
Description
技术领域
本申请涉及数据库技术领域,具体而言,本申请涉及一种数据处理方法、装置、电子设备、存储介质及程序产品。
背景技术
在应用软件的研发过程中,会有多个环境的软件运行和测试结果,以保障软件交付版本的稳定可靠。其中,多个环境通常是相互独立的,所涉及的数据库也是相互独立的。
然而在软件迭代过程中,数据库的表结构会不断修改,如何保持多个环境间的数据库表结构一致,对于确保软件研发和交付的顺利执行起着至关重要的作用。
发明内容
本申请实施例的目的旨在能解决如何确定不同数据库的表结构是否一致的问题。
根据本申请实施例的一个方面,提供了一种数据处理方法,该方法包括:
获取待检测的至少两个数据库,并确定至少两个数据库中作为检测标准的基线数据库;
针对至少两个数据库中的每个数据库,确定数据库的各个分库分表中作为检测标准的基线表,并比对数据库中各个分库分表的表结构是否均一致;
若是,基于基线数据库的基线表,比对至少两个数据库的基线表的表结构是否均一致,得到至少两个数据库的检测结果。
根据本申请实施例的另一个方面,提供了一种数据处理装置,该装置包括:
获取模块,用于获取待检测的至少两个数据库,并确定至少两个数据库中作为检测标准的基线数据库;
第一比对模块,用于针对至少两个数据库中的每个数据库,确定数据库的各个分库分表中作为检测标准的基线表,并比对数据库中各个分库分表的表结构是否均一致;
第二比对模块,用于若是,基于基线数据库的基线表,比对至少两个数据库的基线表的表结构是否均一致,得到至少两个数据库的检测结果。
在一种可选的实施方式中,第一比对模块在用于确定数据库的各个分库分表中作为检测标准的基线表时,具体用于:
若数据库中包括至少两种类型的分库分表,针对至少两种类型的分库分表中每种类型的分库分表,确定该种类型的各个分库分表中作为检测标准的基线表,得到数据库对应的至少两种基线表;
第二比对模块在用于基于基线数据库的基线表,比对至少两个数据库的基线表的表结构是否均一致时,具体用于:
基于基线数据库的两种基线表中的每种基线表,分别比对至少两个数据库的相应基线表的表结构是否均一致。
在一种可选的实施方式中,第一比对模块在用于确定数据库的各个分库分表中作为检测标准的基线表时,具体用于以下至少一种方式:
若各个分库分表是按时间信息划分的,将时间信息与预定时间最接近的分库分表确定为基线表;
若各个分库分表是按分库分表的标识信息划分的,将标识信息按预定顺序排序最靠前的分库分表确定为基线表;
若各个分库分表是按时间信息和标识信息划分的,基于时间信息和标识信息中的至少一种信息,确定基线表。
在一种可选的实施方式中,第一比对模块在用于针对至少两个数据库中的每个数据库,并比对数据库中各个分库分表的表结构是否均一致时,具体用于:
比对基线数据库中各个分库分表的表结构是否均一致;
在基线数据库中各个分库分表的表结构一致的情况下,针对至少两个数据库中除基线数据库外的每个数据库,并比对数据库中各个分库分表的表结构是否均一致。
在一种可选的实施方式中,第一比对模块在用于针对至少两个数据库中的每个数据库,比对数据库中各个分库分表的表结构是否均一致时,具体用于:
获取基线数据库的分库分表规则;
基于基线数据库的分库分表规则,针对至少两个数据库中的每个数据库,比对数据库中各个分库分表的表结构是否均一致。
在一种可选的实施方式中,获取模块在用于确定至少两个数据库中作为检测标准的基线数据库时,具体用于以下至少一种方式:
将至少两个数据库中对应默认环境的数据库确定为基线数据库;
响应于对至少两个数据库中任一数据库的选择指令,将选择指令对应的数据库确定为基线数据库。
在一种可选的实施方式中,获取模块还用于:
针对每个分库分表,通过以下至少一种方式,获取分库分表的表结构:
响应于用于显示表的创建语句的系统命令;
响应于用于查看表信息的系统命令;
在信息概要库的提供列信息表中查询。
根据本申请实施例的又一个方面,提供了一种电子设备,该电子设备包括存储器、处理器及存储在存储器上的计算机程序,处理器执行计算机程序以实现本申请实施例提供的数据处理方法。
根据本申请实施例的再一个方面,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现本申请实施例提供的数据处理方法。
根据本申请实施例的还一个方面,提供了一种计算机程序产品,包括计算机程序,计算机程序被处理器执行时实现本申请实施例提供的数据处理方法。
本申请实施例提供的数据处理方法、装置、电子设备、存储介质及程序产品,获取待检测的至少两个数据库,并确定至少两个数据库中作为检测标准的基线数据库;针对至少两个数据库中的每个数据库,确定数据库的各个分库分表中作为检测标准的基线表,并比对数据库中各个分库分表的表结构是否均一致;若是,基于基线数据库的基线表,比对至少两个数据库的基线表的表结构是否均一致,得到至少两个数据库的检测结果,实现任意数量数据库的表结构差异的比对,有效提升比对效率,有助于软件研发和交付的顺利执行。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对本申请实施例描述中所需要使用的附图作简单地介绍。
图1为本申请实施例提供的一种数据处理方法的流程示意图;
图2为本申请实施例提供的一种不同研发环境的示意图;
图3为本申请实施例提供的一种分库分表的示意图;
图4为本申请实施例提供的一种数据库比对流程示例的示意图;
图5为本申请实施例提供的另一种数据库比对流程示例的示意图;
图6为本申请实施例提供的又一种数据库比对流程示例的示意图;
图7为本申请实施例提供的一种数据处理系统的架构示意图;
图8为本申请实施例提供的一种数据处理装置的结构示意图;
图9为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下面结合本申请中的附图描述本申请的实施例。应理解,下面结合附图所阐述的实施方式,是用于解释本申请实施例的技术方案的示例性描述,对本申请实施例的技术方案不构成限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”和“该”也可包括复数形式。应该进一步理解的是,本申请实施例所使用的术语“包括”以及“包含”是指相应特征可以实现为所呈现的特征、信息、数据、步骤、操作、元件和/或组件,但不排除实现为本技术领域所支持其他特征、信息、数据、步骤、操作、元件、组件和/或它们的组合等。应该理解,当我们称一个元件被“连接”或“耦接”到另一元件时,该一个元件可以直接连接或耦接到另一元件,也可以指该一个元件和另一元件通过中间元件建立连接关系。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的术语“和/或”指示该术语所限定的项目中的至少一个,例如“A和/或B”可以实现为“A”,或者实现为“B”,或者实现为“A和B”。
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
首先对本申请涉及的几个名词进行介绍和解释:
(1)数据库(database):可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增、查询、更新、删除等操作。所谓“数据库”是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合,可以是关系模型、层次模型、网状模型等结构。数据库管理系统(Database Management System,简称DBMS)是为管理数据库而设计的电脑软件系统,一般具有存储、截取、安全保障、备份等基础功能。数据库管理系统可以依据它所支持的数据库模型来分类,例如关系式、XML(Extensible Markup Language,即可扩展标记语言);或依据所支持的计算机类型来分类,例如服务器群集、移动电话;或依据所用查询语言来分类,例如SQL(结构化查询语言(Structured Query Language)、XQuery;或依据性能冲量重点来分类,例如最大规模、最高运行速度;或其他的分类方式。不论使用哪种分类方式,一些DBMS能够跨类别,例如,同时支持多种查询语言。
(2)关系型数据库(Relational database):是指采用了关系模型来组织数据的数据库,通常被组织成描述性的二维表格(有时被称为一个关系),以行和列的形式存储数据,可靠性和稳定性都比较高,读取和查询都十分方便。
(3)数据表(table):也可简称为库表或表,是指关系型数据库中数据组织的基本单位,也可以看作矩阵。数据表通常由表名、表中的字段和表的记录等部分组成的。一个数据库中可以包括很多数据表。
(4)分库分表:如果一张表要存放的数据量非常大,可以按一定的规则拆分成多个结构一致但表名不同的表来分开存放总数据量。其中,分库是指将一个数据库中拆分开来的表存放到多个数据库中,分表可以是指拆分开来的表存放到一个或多个数据库中。
(5)表结构:由于关系型数据库的数据都存放在表中,每张表都具有特定的表结构,包括但不限于数据包含的字段,各字段的字段名、字段类型、索引和引擎等。
(6)Devops(Development&Operations):是一种开发和运营维护一体化技术,可以实现软件开发团队和IT运维团队之间的团队赋能、跨团队沟通和协作、流程自动化和集成,提升软件交付效率。
(7)基线:一个设定的标准,其他实例需要向基线对齐以保持一致。
在软件研发过程中,会有多个环境的软件运行和测试,将涉及多个数据库实例,这些数据库实例的表结构要求是一样的,从而保障研发交付的软件是正确无误的。比如,在开发环境的数据库中,表a有5个字段,但是正式环境的数据库中,表a只有4个字段,那么软件运行在正式环境就会报错,影响正常使用。在软件迭代过程中,数据库的表结构会不断修改,为了确定多个环境间的数据库表结构是否保持一致,从而保障软件交付的可靠性,可以对不同环境的数据库实例的表结构执行比对工作。
现有技术中,主要是通过配置对比的源头数据库和目标数据库,以完成两个数据库之间的表结构比对。具体而言,大多需要获取源头数据库和目标数据库中的所有表的表结构,然后针对源头数据库中的所有表的表结构,分别去目标数据库中检索相应表的表结构,进行逐一对比。这种数据库的表结构比对方法具有以下缺陷:
1、现有技术只能比对出源头和目标两个数据库的表结构差异,适合数据库个数较少,数据库中数据表数量较少的情况。若要比对更多(三个及以上)数据库,则需要针对每两个数据库进行表结构差异的比对,工作量较大。
2、现有技术针对同一个数据库下的不同分库分表的表结构,无法做出差异的识别。
3、现有技术对于数据库中的所有表的比对存在大量重复性工作,导致比对效率低下。
针对现有技术中所存在的上述至少一个技术问题或需要改善的地方,本申请提出一种数据处理方法、装置、电子设备、存储介质及程序产品,该方案通过选择基线数据库和基线表,完成多个数据库实例中海量数据表的表结构比对工作,可以大大降低重复比对的计算量,提高比对效率。
下面通过对几个示例性实施方式的描述,对本申请实施例的技术方案以及本申请的技术方案产生的技术效果进行说明。需要指出的是,下述实施方式之间可以相互参考、借鉴或结合,对于不同实施方式中相同的术语、相似的特征以及相似的实施步骤等,不再重复描述。
本申请实施例中提供了一种数据处理方法,如图1所示,该方法包括:
步骤S101:获取待检测的至少两个数据库,并确定至少两个数据库中作为检测标准的基线数据库。
本申请实施例中,待检测的数据库可以称为待检查的数据库,即需要检查不同数据库之间的表结构差异。
在本申请实施例中,可以同时对两个或两个以上的数据库进行检查,因此可以直接获取待检查的至少两个数据库及其相关信息,如数据库的IP(Internet Protocol,互联网协议)地址、端口、登陆口令等,但不限于此。
在本申请实施例中,不同数据库可以是指在应用软件的研发过程中不同研发环境下的数据库。一个示例中,不同研发环境可以是指如图2所示的研发流水线上的多个环境。在Devops理念实际落地时可以设置一个研发流水线来自动化地完成一系列流程。这个流程可以包括但不限于开发、冒烟(基本功能测试)、测试、预发布、正式发布等多个阶段,其中每个阶段都对应着一套独立、完整的软件运行环境(可能配置不同)及其数据库。那么一条研发流水线上将涉及多个数据库实例,这些数据库实例的表结构要求是一样的,从而保障研发流水线交付的软件是正确无误的。实际应用中,本领域技术人员可以根据实际情况对待检查的具体环境及其数据库进行配置,例如可以默认将所有或部分环境的数据库作为待检查的数据库,也可以由开发人员或测试人员即时输入至少两个环境的数据库作为待检查的数据库等,本申请实施例在此不做限定。
在本申请实施例中,会在至少两个数据库中选择一个作为检测标准的基线数据库,后续的检查将以基线数据库为基准,即其他数据库的表结构需要向基线数据库对齐以保持一致。
步骤S102:针对至少两个数据库中的每个数据库,确定数据库的各个分库分表中作为检测标准的基线表,并比对数据库中各个分库分表的表结构是否均一致。
在本申请实施例中,该步骤可以理解为对每个数据库的内部检查。由于每个数据库可能会有多个分库分表,对于每个数据库,收集并计算数据库上的所有表,以进行内部比对。
本申请实施例中,分库分表也可以是指分库和/或分表,均可称为分片(shard),如图3所示,本方案可以应用于只分表(将数据库中的orders表拆分为2个分表,orders0和orders1,这两个表还位于同一个db库中)的情况,也可用于只分库(将db库拆分为db0和db1两个库,并且db0和db1库中均包括一个orders表,分别存储原orders表中的部分数据)的情况,也可用于分库分表(将db库拆分为db0和db1两个库,db0中包含orders0、orders1两个分表,db1中包含orders3、orders4两个分表)的情况。
可选地,收集和计算的表可以是指以水平分库分表为依据的,水平分库分表的表结构都一致,便于进行比对。
进一步地,在数据库的各个分库分表中选择一个作为检测标准的基线表,后续的检查将以基线表为基准,即其他分库分表的表结构需要向基线表对齐以保持一致。其中,不同数据库选择基线表的方式可以相同或不同,本申请实施例在此不做具体限定。
可选地,检查基线数据库内部的表结构是否一致,可以基于确定出的基线表,比对数据库中各个分库分表的表结构是否均一致。
可选地,该步骤中,可以先比对基线数据库中各个分库分表的表结构是否均一致;在基线数据库中各个分库分表的表结构一致的情况下,针对至少两个数据库中除基线数据库外的每个数据库,并比对数据库中各个分库分表的表结构是否均一致。先检查基线数据库内部的表结构是否一致,即确定基线数据库的各个分库分表中作为检测标准的基线表,并基于基线数据库的基线表,比对基线数据库中所有分库分表的表结构是否都一致,如果不一致,那基线数据库不正常,无法进行后续的比对,可以直接退出比对流程,以节约计算资源。可选地,无论是否一致,均可输出或记录检测结果,便于开发人员或测试人员排查或分析。在检查出基线数据库中所有分库分表的表结构都一致后,再检查除基线数据库外的每个数据库中,所有分库分表的表结构是否都一致。如果不一致,也可以直接退出比对流程,以节约计算资源,因为单个数据库内部都不一致,无法进行跨数据库的比对。可选地,无论是否一致,均可输出或记录检测结果,便于开发人员或测试人员排查或分析。
或者可选地,所有数据库的内部比对可同时或多线程执行,只要检查出任一个数据库中有分库分表的表结构不一致,便可退出比对流程,以节约计算资源。
也就是说,本申请实施例中,对所有数据库进行内部比对的顺序不做限定,本领域技术人员可已根据实际情况进行设置。
步骤S103:若是,基于基线数据库的基线表,比对至少两个数据库的基线表的表结构是否均一致,得到至少两个数据库的检测结果。
在本申请实施例中,该步骤可以理解为对跨数据库的多数据库检查。具体而言,在所有数据库单独内部检查完成后,使用每个数据库的基线表,在多个数据库间进行比对。
可以理解,即使不同数据库选择基线表的方式不同,由于经过数据库内部比对每个分库分表的表结构都是相同的,因此不同数据库的基线表的表结构应该是一致的。
可选地,无论是否一致,均可输出或记录检测结果,便于开发人员或测试人员排查或分析。
需要说明的是,本申请实施例中,步骤S101中包括两个步骤:步骤S101a:获取待检测的至少两个数据库;步骤S101b:确定至少两个数据库中作为检测标准的基线数据库;步骤S102中包括两个步骤:步骤S102a:针对至少两个数据库中的每个数据库,确定数据库的各个分库分表中作为检测标准的基线表;S102b:针对至少两个数据库中的每个数据库,比对数据库中各个分库分表的表结构是否均一致。其中,对于步骤S101b和步骤S102a,其步骤编号并不构成对该两个步骤先后顺序的限定,即步骤S101b和步骤S102a的执行可以采用其他顺序。例如,可以先执行S102b,再执行S101b;或者步骤S102a可以执行两次,一次在S102b之前执行,另一次在步骤S103之前执行,其中,两次执行步骤S102a确定的基线表可以相同或不同;或者步骤S101b和步骤S102a可以同时执行,或者步骤S101b或步骤S102a与其他步骤同时执行等,也即在本申请实施例实现的过程中,将确定至少两个数据库中作为检测标准的基线数据库,以及确定每个数据库的各个分库分表中作为检测标准的基线表这两个步骤的执行顺序不做限定,本领域技术人员可以根据实际需求进行设置。
基于上述至少一个实施例,本申请实施例中以MySQL数据库为例,提供了一个数据库比对的流程示例,如图4所示,主要包括:
步骤S401:用户可以输入多个待检查的MySQL数据库,包括其IP地址、端口、登陆口令等,支持三个及以上。这里举例用户输入3个待检查的数据库MySQL-1、MySQL-2、和MySQL-3。
步骤S402:设置MySQL-1、MySQL-2、和MySQL-3中的一个为基线数据库,后续的检查将以基线数据库为基准,这里举例使用MySQL-1为基线数据库。
步骤S403:先检查基线数据库MySQL-1内部的表结构是否一致。根据分库分表规则,收集并计算MySQL-1上的所有表,这里举例db.tb_0、db.tb_1、db.tb_2、db.tb_3、db.tb_4、db.tb_5、db.tb_6、db.tb_7、db.tb_8、db.tb_9,这10张表属于一个分库分表规则,那么表结构应该保持一致。设置这10张表中的一个为基线表,这里举例使用db.tb_0为基线表,比对这些分库分表的表结构是否和db.tb_0一致(可以循环处理)。如果不一致,那基线数据库不正常,无法进行后续的比对,可以直接系统退出。如果这些分库分表的表结构都和db.tb_0一致,则执行下一步。
步骤S404:分别检查MySQL-2和MySQL-3内部表结构的一致性,检查过程可以参照步骤S403,在此不再赘述。如果不一致,可以直接系统退出,因为单个数据库内部表结构都不一致,无法进行跨数据库的比对。如果MySQL-2和MySQL-3的内部表结构都一致,即所有单个数据库内部表结构都检查完成后,执行下一步。
步骤S405:在MySQL-1、MySQL-2、和MySQL-3间比对分库分表的表结构,具体地,可以比对MySQL-1和MySQL-2基线表的表结构是否一致,再比对MySQL-1和MySQL-3基线表的表结构是否一致
步骤S406:将结果保存或者直接输出。
本申请实施例提供的数据处理方法,相比于上述现有技术,具有以下优势:
1、本申请实施例提供的数据处理方法,能够实现任意数量数据库的表结构差异的比对,有效提升比对效率,有助于软件研发和交付的顺利执行。
2、本申请实施例提供的数据处理方法,能够比对单个数据库内部分库分表表结构的一致性。
3、本申请实施例提供的数据处理方法,利用基线表比对多个数据库上的分库分表,大大减少全量表比对的重复工作,提高比对和检查的速度。
本申请实施例中,为步骤S102中的“确定数据库的各个分库分表中作为检测标准的基线表”步骤,提供了一种可选的实施方式,具体地,可以包括:若数据库中包括至少两种类型的分库分表,针对至少两种类型的分库分表中每种类型的分库分表,确定该种类型的各个分库分表中作为检测标准的基线表,得到数据库对应的至少两种基线表。
实际应用中,每个数据库可能包含多个数据表(例如对应不同的表名)。这些表可以相互关联,也可以彼此独立。其中,部分或全部数据表均可分别基于其内容,按照对应的分库分表规则进行划分,得到不同类型的分库分表。
本申请实施例中,对于每个数据库,收集并计算数据库上的所有表,包括不同类型的分库分表,分别进行内部比对。
具体而言,针对一个数据库的一种类型的各个分库分表,在其中选择一个作为基线表,这个数据库的这种类型的其他分库分表的表结构需要向这个基线表对齐以保持一致。这个数据库的其他类型的分库分表,以及其他数据库的分库分表以此类推,将不再赘述。
进一步地,对于步骤S103中的“基于基线数据库的基线表,比对至少两个数据库的基线表的表结构是否均一致”步骤,具体可以包括:基于基线数据库的两种基线表中的每种基线表,分别比对至少两个数据库的相应基线表的表结构是否均一致。
可选地,检查每种数据库的每种类型的各个分库分表的表结构是否一致的方式可以参见上文中的介绍,在此不再赘述。
可以理解的是,针对一个数据库中各种类型的分库分表的表结构比对,都可认为是这个数据库的内部比对。
基于上述至少一个实施例,本申请实施例中以MySQL数据库为例,提供了另一个数据库比对的流程示例,如图5所示,主要包括:
步骤S501:用户可以输入多个待检查的MySQL数据库,包括其IP地址、端口、登陆口令等,支持三个及以上。这里举例用户输入3个待检查的数据库MySQL-1、MySQL-2、和MySQL-3。
步骤S502:设置MySQL-1、MySQL-2、和MySQL-3中的一个为基线数据库,后续的检查将以基线数据库为基准,这里举例使用MySQL-1为基线数据库。
步骤S503:先检查基线数据库MySQL-1内部的表结构是否一致。根据分库分表规则,收集并计算MySQL-1上的所有表,这里举例db.tb1_0、db.tb1_1、db.tb1_2、db.tb1_3、db.tb1_4、db.tb1_5、db.tb1_6、db.tb1_7、db.tb1_8、db.tb1_9,这10张表的表结构应该保持一致;db.tb2_0、db.tb2_1、db.tb2_2、db.tb2_3、db.tb2_4、db.tb2_5、db.tb2_6,这7张表的表结构应该保持一致。设置db.tb1的10张表中的一个为基线表,这里举例使用db.tb1_0为基线表,比对另外9张分库分表的表结构是否和db.tb1_0一致(可以循环处理)。设置db.tb2的7张表中的一个为基线表,这里举例使用db.tb2_0为基线表,比对另外6张分库分表的表结构是否和db.tb2_0一致(可以循环处理)。如果有不一致,那基线数据库不正常,无法进行后续的比对,可以直接系统退出。如果这些分库分表的表结构都和对应的基线表一致,则执行下一步。
步骤S504:分别检查MySQL-2和MySQL-3内部表结构的一致性,检查过程可以参照步骤S503,在此不再赘述。如果不一致,可以直接系统退出,因为单个数据库内部表结构都不一致,无法进行跨数据库的比对。如果MySQL-2和MySQL-3的内部表结构都一致,即所有单个数据库内部表结构都检查完成后,执行下一步。
步骤S505:在MySQL-1、MySQL-2、和MySQL-3间比对分库分表的表结构,具体地,可以先比对MySQL-1和MySQL-2基线表db.tb1_0的表结构是否一致,再比对MySQL-1和MySQL-3基线表db.tb1_0的表结构是否一致,接着比较MySQL-1和MySQL-2基线表db.tb2_0的表结构是否一致,再比对MySQL-1和MySQL-3基线表db.tb2_0的表结构是否一致;或者,可以先比对MySQL-1和MySQL-2基线表db.tb1_0的表结构是否一致,再比较MySQL-1和MySQL-2基线表db.tb2_0的表结构是否一致,接着比对MySQL-1和MySQL-3基线表db.tb1_0的表结构是否一致,再比对MySQL-1和MySQL-3基线表db.tb2_0的表结构是否一致。即循环过程可以根据实际情况进行设置,本申请实施例在此不做限定。
步骤S506:将结果保存或者直接输出。
本申请实施例中,由于可以支持多种分库分表方式(规则),为步骤S102中的“确定数据库的各个分库分表中作为检测标准的基线表”步骤,提供了可行的实施方式,具体地,可以包括以下至少一种方式:
(1)若各个分库分表是按时间信息划分的,将时间信息与预定时间最接近的分库分表确定为基线表;
对于本申请实施例,各个分库分表可以是按时间信息划分的。作为示例地,可以按照日期将不同月、或周甚至是日的数据分散到不同的库中;或者按照一天中时间段将数据分散到不同的库中等。其中,时间信息可以直接采用时间值,也可以是对时间值进行一定处理后的信息,如采用hash(哈希)取模mod(求余数)等,但不限于此。
若按时间分库分表,系统可以自动选择将时间信息与预定时间最接近的分库分表确定为基线表,例如默认选择时间和当前运行时间最接近的分库分表作为基线表等。实际应用中,本领域技术人员可以根据实际情况对预定时间进行设置,本申请实施例在此不做限定。
(2)若各个分库分表是按分库分表的标识信息划分的,将标识信息按预定顺序排序最靠前的分库分表确定为基线表;
对于本申请实施例,各个分库分表可以是按分库分表的标识信息划分的,其中,标识信息可以表名或表标识号(db.tb_id),也可以是某一字段,如User_Id(User Identitydocument,用户身份标识号)、订单号、商户号等,可以根据实际的数据表进行设置,本申请实施例在此不做限定。作为示例地,可以将db.tb_id为第一分段(可设置)的记录分到第一个库,为第二分段的分到第二个库,以此类推。其中,标识信息可以直接采用标识值,也可以是对标识值进行一定处理后的信息,如采用hash取模mod等,但不限于此。
若按标识信息来分库分表,系统可以自动选择将标识信息按预定顺序排序最靠前的分库分表确定为基线表,实际应用中,本领域技术人员可以根据实际情况对排序的预定顺序进行设置,本申请实施例在此不做限定。例如默认选择分库分表的最小表名0,即表db.tb_0作为基线表等。
(3)若各个分库分表是按时间信息和标识信息划分的,基于时间信息和标识信息中的至少一种信息,确定基线表。
对于本申请实施例,分库分表的规则可以是多种信息的组合类型,例如可以是按时间信息组合标识信息进行分库分表等。其中,对时间信息和标识信息的介绍可以参见上文,在此不再赘述。本申请实施例中,对时间信息和标识信息的组合方式不进行限定,例如将一定时间段和一定标识的数据分散到一个库中,该时间段的其他标识或其他时间段的该标识的数据分散到其他库中等。也可以是对时间信息和标识信息进行一定的运算和处理后进行分库分表等。实际应用中,本领域技术人员也可以根据实际情况对基于时间信息和标识信息的组合来选择基线表的方式进行设置,本申请实施例在此不做限定。
(4)通过第一AI(Artificial Intelligence,人工智能)模型,确定数据库的各个分库分表中作为检测标准的基线表。
可选地,分别将各个分库分表的参数(如表名、库名、表字段、表大小等,但不限于此)编码成属性向量;将各个分库分表的属性向量输入第一AI模型,第一AI模型输出作为检测标准的基线表的标识,或者,第一AI模型输出各个分库分表作为基线表的概率值。其他实施例中,第一AI模型的输入也可以各个分库分表的其他信息,本申请实施例在此不做限定。
其中,本领域技术人员可以根据实际情况对采用的具体第一AI模型结构及其训练方式进行设置,本申请实施例在此不做限定。
可以理解的是,分库分表的规则有很多,这里就不一一赘述。上述几种分库分表方式及其对应的确定基线表的方式仅为示意性描述,不构成对本申请实施例的限制,基于这些范例进行的适当变化也可适用于本申请,故也应包含在本申请保护范围以内。
本申请实施例中,为步骤S102中的“针对至少两个数据库中的每个数据库,比对数据库中各个分库分表的表结构是否均一致”步骤,提供了可行的实施方式,具体地,可以包括:获取基线数据库的分库分表规则;基于基线数据库的分库分表规则,针对至少两个数据库中的每个数据库,比对数据库中各个分库分表的表结构是否均一致。
对于本申请实施例,由于在确定了基线数据库后,后续的检查都会以基线数据库为基准,基线数据库的分库分表规则,可直接应用于待检测的数据库中除基线数据库外的其他数据库。例如在上述步骤S403、步骤S503中,根据基线数据库MySQL-1的分库分表规则,检查MySQL-1内部的表结构是否一致。在上述S404、步骤S504中,根据基线数据库MySQL-1的分库分表规则,分别检查MySQL-2和MySQL-3内部表结构的一致性。一方面,可以无需获取其他数据库的分库分表规则,节约运算资源。另一方面,可以确保其他数据库使用的分库分表规则和基线数据库一致,如果某个数据库使用的分库分表规则不一致,也可以直接跳过该数据库的比对流程,以节约计算资源,因为使用的分库分表规则都不一致,会影响跨数据库的比对。可选地,无论是否一致,均可输出或记录检测结果,便于开发人员或测试人员排查或分析。
本申请实施例中,为步骤S101b提供了可选的实施方式,具体地,可以包括以下至少一种方式:
(1)将至少两个数据库中对应默认环境的数据库确定为基线数据库;
由上文的介绍可知,在应用软件的研发过程中,不同研发环境通常对应不同的数据库。例如环境可以包括但不限于开发环境、冒烟环境、测试环境、预发布环境、正式发布环境等。
本申请实施例中,系统可以自动设置待检测的至少两个数据库中的一个为基线数据库。例如在研发流水线中,可以自动选择开发环境的数据库作为基线数据库,便于与更新的最新版本保持一致,但不限于此。实际应用中,本领域技术人员可以结合具体的环境,对确定基线数据库的默认环境进行设置,本申请实施例在此不做限定。
(2)响应于对至少两个数据库中任一数据库的选择指令,将选择指令对应的数据库确定为基线数据库。
本申请实施例中,可以人工设置待检测的至少两个数据库中的一个为基线数据库。例如在研发流水线中,可以根据实际情况在开发、冒烟、测试、预发布、正式发布等环境中实时地人工(开发人员或测试人员等)选择一个数据库作为基线数据库。系统可以响应于对至少两个数据库中任一数据库的选择指令,将选择指令对应的数据库确定为基线数据库。
(3)通过第二AI模型,在至少两个数据库中确定基线数据库。
可选地,分别将各个数据库的参数(如对应的环境、分库数量、分表数量、数据库大小、字段等,但不限于此)编码成属性向量;将各个数据库的属性向量输入第二AI模型,第二AI模型输出基线数据库的标识,或者,第二AI模型输出各个数据库作为基线数据库的概率值。其他实施例中,第二AI模型的输入也可以各个数据库的其他信息,本申请实施例在此不做限定。
其中,本领域技术人员可以根据实际情况对采用的具体第二AI模型结构及其训练方式进行设置,本申请实施例在此不做限定。
本申请实施例中,针对每个分库分表,可以通过以下至少一种方式,获取分库分表的表结构:
(1)响应于用于显示表的创建语句的系统命令;
对于本申请实施例,检查表结构时,可以使用用于显示表的创建语句的系统命令。以MySQL数据库为例,MySQL支持使用show create table语句查看数据表的创建语句(建表语句)。通过show create table语句,不仅可以查看创建数据表的SQL(Structured QueryLanguage,结构化查询语言)语句,还可以查看数据表的存储引擎和字符编码等信息。其基本语法是:show create table<表名>。即可以采用MySQL的系统命令show create tabledb.tb_0来获取表db.tb_0的创建语句文本,用于表示表db.tb_0的结构信息。其他表以此类推,将不再赘述。
进一步地,针对基线表和其他分库分表,进行表的创建语句文本的逐行比对,即可针对任一个数据库,比对数据库中各个分库分表的表结构是否一致;以及针对基线数据库的基线表和其他数据库的基线表,进行表的创建语句文本的逐行比对,即可针对不同数据库,比对分库分表的表结构是否一致。
(2)响应于用于查看表信息的系统命令;
对于本申请实施例,检查表结构时,可以使用用于查看表信息的系统命令。以MySQL数据库为例,MySQL支持使用desc语句查看数据表的结构。desc语句在用于查看表信息时表示的是【describe v.描述】的缩写,可以用来查看表或视图的结构。其基本语法是:desc<表名/查询语句>。即可以采用MySQL的系统命令desc db.tb_0来获取表db.tb_0的结构详细信息。其他表以此类推,将不再赘述。
进一步地,针对基线表和其他分库分表,进行表结构详细信息的比对,即可针对任一个数据库,比对数据库中各个分库分表的表结构是否一致;以及针对基线数据库的基线表和其他数据库的基线表,进行表的结构详细信息的比对,即可针对不同数据库,比对分库分表的表结构是否一致。
(3)在信息概要库的提供列信息表中查询。
对于本申请实施例,检查表结构时,可以在信息概要库的提供列信息表中查询。以MySQL数据库为例,开发环境、冒烟环境、测试环境、预发布环境、正式发布环境等不同环境下的数据库信息可以从当前环境下的information_schema(信息概要)库中读取。information_schema是一个系统库,存储当前环境下的数据库信息,直接从系统库获取数据库信息,可以节省读取每个数据库信息的时间。在MySQL中,把information_schema看作是一个数据库,确切来说是一个信息数据库。其中保存着关于MySQL所维护的所有其他数据库(如上述待检测数据库)的信息。如数据库名、数据库的表、表栏的数据类型与访问权限等。
information_schema系统库中存在多个只读表,记载着数据库信息,包括TABLES表(提供表信息)、COLUMNS表(提供列信息)、VIEWS表(提供视图信息)、TRIGGERS表(提供触发程序信息)等。本申请实施例中,可以获取表结构可以是从MySQL的系统库information_schema.COLUMNS中记录的信息查询得到,即通过比较不同分库分表的记录是否存在差异,就可以判断出不同环境下的业务数据库是否存在一致。
进一步地,针对基线表和其他分库分表,进行表系统记录信息的比对,即可针对任一个数据库,比对数据库中各个分库分表的表结构是否一致;以及针对基线数据库的基线表和其他数据库的基线表,进行表的系统记录信息的比对,即可针对不同数据库,比对分库分表的表结构是否一致。
本申请实施例中,对于步骤S103,在得到至少两个数据库的检测结果之后,还可以包括以下至少一种处理方式:
(1)将检测结果展示到标准输出中;
实际应用中,本领域技术人员可以根据实际情况对检测结果的展示内容和展示方式进行设置,本申请实施例在此不做限定。
(2)将检测结果存储到存储系统中。
实际应用中,本领域技术人员可以根据实际情况对检测结果的存储内容和存储方式进行设置,本申请实施例在此不做限定。
基于上述至少一个实施例,本申请实施例中以MySQL数据库为例,提供了又一个数据库比对的流程示例,如图6所示,主要包括:
步骤S601:用户可以输入多个待检查的MySQL数据库,包括其IP地址、端口、登陆口令等,支持三个及以上。这里举例用户输入3个待检查的数据库MySQL-1、MySQL-2、和MySQL-3。
步骤S602:人工或者自动设置MySQL-1、MySQL-2、和MySQL-3中的一个为基线数据库,例如在研发流水线中,可以自动选择开发环境的数据库作为基线数据库,也可以根据实际情况人工设置,后续的检查将以基线数据库为基准,这里举例使用MySQL-1为基线数据库。
步骤S603:先检查基线数据库MySQL-1内部的表结构是否一致。根据分库分表规则,收集并计算MySQL-1上的所有表,这里举例db.tb1_0、db.tb1_1、db.tb1_2、db.tb1_3、db.tb1_4、db.tb1_5、db.tb1_6、db.tb1_7、db.tb1_8、db.tb1_9,这10张表的表结构应该保持一致;db.tb2_0、db.tb2_1、db.tb2_2、db.tb2_3、db.tb2_4、db.tb2_5、db.tb2_6,这7张表的表结构应该保持一致。分别比对10张分库分表的表结构是否一致以及比对另外7张分库分表的表结构是否一致(可以循环处理),其中,这里可以采用除了与基线表比对之外方式,例如,编号相邻的每两个表依次比对,即先将db.tb1_1与db.tb1_2比对,再将db.tb1_2和db.tb1_3比对……以此类推。如果有任一对分库分表不一致,那基线数据库不正常,无法进行后续的比对,可以直接系统退出。如果这些分库分表的表结构都和对应的基线表一致,则执行下一步。这里检查表结构时可以使用上述任一种方式获取每个表的结构信息,然后进行比对。
步骤S604:分别检查MySQL-2和MySQL-3内部表结构的一致性,检查过程可以参照步骤S603,在此不再赘述。如果不一致,可以直接系统退出,因为单个数据库内部表结构都不一致,无法进行跨数据库的比对。如果MySQL-2和MySQL-3的内部表结构都一致,即所有单个数据库内部表结构都检查完成后,执行下一步。
步骤S605:设置db.tb1的10张表中的一个为基线表,这里举例使用db.tb1_0为基线表。以及设置db.tb2的7张表中的一个为基线表,这里举例使用db.tb2_0为基线表,注意这里是系统自动选择的,可以支持多种分库分表的规则,不同规则确定基线表的方式可以参见上文的介绍,在此不再赘述。
步骤S606:在MySQL-1、MySQL-2、和MySQL-3间比对分库分表的表结构,具体地,可以分别比对MySQL-1和MySQL-2基线表db.tb1_0的表结构是否一致,MySQL-1和MySQL-3基线表db.tb1_0的表结构是否一致,MySQL-1和MySQL-2基线表db.tb2_0的表结构是否一致,MySQL-1和MySQL-3基线表db.tb2_0的表结构是否一致。具体的循环过程可以根据实际情况进行设置,本申请实施例在此不做限定。
步骤S607:将结果保存或者直接输出。
本申请实施例提供的数据处理方法,可以通过如图7所示的数据处理系统实现。其中,该数据处理系统可以包括但不限于终端设备、网关或代理服务器等设备以及关系型数据库等。其中,终端设备通过Wi-Fi网络或蜂窝网络等通信网络与服务器相连并进行交互。服务器可以通过数据存储系统来管理关系型数据库中的数据。在建立关系型数据库时,可以将数据划分为多个分片,并分别存储在不同的分库和/分表中。
可选地,该数据处理方法具体可以应用在终端设备中,也可应用在服务器中,或者也可以由多个具有计算能力的计算机设备或器件协作完成,例如,不同的计算机设备或器件各自完成本申请实施提供的各方法的一部分步骤。具体地,接收到开发人员或测试人员发起的数据库表结构对比请求时,便可以根据该请求执行本申请实施例提供的数据处理方法。其中,请求中携带的信息,可以根据实际情况进行设置,例如人工选择基线数据库的信息(也可通过另一个指令)等。
可选地,终端设备可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能穿戴设备(例如手表、眼镜等)、智能电视、智能音箱、车载终端、个人数字助理、便携式多媒体播放器、导航装置等,但并不局限于此。服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(Content DeliveryNetwork,内容分发网络)、以及大数据和人工智能平台等基础云计算服务的云服务器。
其中,云计算是指IT基础设施的交付和使用模式,指通过网络以按需、易扩展的方式获得所需资源;广义云计算指服务的交付和使用模式,指通过网络以按需、易扩展的方式获得所需服务。这种服务可以是IT和软件、互联网相关,也可是其他服务。云计算是网格计算(Grid Computing)、分布式计算(DistributedComputing)、并行计算(ParallelComputing)、效用计算(Utility Computing)、网络存储(Network StorageTechnologies)、虚拟化(Virtualization)、负载均衡(Load Balance)等传统计算机和网络技术发展融合的产物。
随着互联网、实时数据流、连接设备多样化的发展,以及搜索服务、社会网络、移动商务和开放协作等需求的推动,云计算迅速发展起来。不同于以往的并行分布式计算,云计算的产生从理念上将推动整个互联网模式、企业管理模式发生革命性的变革。
云存储(cloud storage)是在云计算概念上延伸和发展出来的一个新的概念,分布式云存储系统(以下简称存储系统)是指通过集群应用、网格技术以及分布存储文件系统等功能,将网络中大量各种不同类型的存储设备(存储设备也称之为存储节点)通过应用软件或应用接口集合起来协同工作,共同对外提供数据存储和业务访问功能的一个存储系统。
目前,存储系统的存储方法为:创建逻辑卷,在创建逻辑卷时,就为每个逻辑卷分配物理存储空间,该物理存储空间可能是某个存储设备或者某几个存储设备的磁盘组成。客户端在某一逻辑卷上存储数据,也就是将数据存储在文件系统上,文件系统将数据分成许多部分,每一部分是一个对象,对象不仅包含数据而且还包含数据标识(ID,ID entity)等额外的信息,文件系统将每个对象分别写入该逻辑卷的物理存储空间,且文件系统会记录每个对象的存储位置信息,从而当客户端请求访问数据时,文件系统能够根据每个对象的存储位置信息让客户端对数据进行访问。
存储系统为逻辑卷分配物理存储空间的过程,具体为:按照对存储于逻辑卷的对象的容量估量(该估量往往相对于实际要存储的对象的容量有很大余量)和独立冗余磁盘阵列(RAID,Redundant Array of Independent Disk)的组别,预先将物理存储空间划分成分条,一个逻辑卷可以理解为一个分条,从而为逻辑卷分配了物理存储空间。
本申请实施例中,执行上述数据处理方法的设备还可以是区块链(Blockchain)网络中的一个或多个节点,或者本申请实施例提供的技术方案中所涉及的数据可以保存于区块链中。
区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层。
平台产品服务层提供典型应用的基本能力和实现框架,开发人员可以基于这些基本能力,叠加业务的特性,完成业务逻辑的区块链实现。应用服务层提供基于区块链方案的应用服务给业务参与方进行使用。
如上文的介绍可知,本申请实施例提供的方案涉及人工智能等技术。
其中,人工智能是计算机科学的一个综合技术,涉及领域广泛,既有硬件层面的技术也有软件层面的技术。人工智能基础技术一般包括如传感器、专用人工智能芯片、云计算、分布式存储、大数据处理技术、操作/交互系统、机电一体化等技术。
随着人工智能技术研究和进步,人工智能技术在多个领域展开研究和应用,例如常见的智能家居、智能穿戴设备、虚拟助理、智能音箱、智能营销、无人驾驶、自动驾驶、无人机、机器人、智能医疗、智能客服、车联网、自动驾驶、智慧交通等,相信随着技术的发展,人工智能技术将在更多的领域得到应用,并发挥越来越重要的价值。
本申请实施例提供的数据处理方法,可以使用在数据库的一致性检查中,例如可使用于devops研发流水线中,保障流水线交付产物的可靠性,降低多个数据库环境和海量分库分表维护的效率。
本申请实施例提供的数据处理方法,用于比对多个数据库的分库分表结构时,具有以下优势:
1、支持输入任意数量的数据库进行同时比对;
2、支持自动选择或人工指定基线数据库;
3、支持自动选择分库分表的基线表;
4、可以比对单个数据库内部,分库分表的表结构一致性;
5、可以利用基线表比对多个数据库上的分库分表,大大减少全量表比对的重复工作(即跨多个数据库比对时,除基线表外的其他分库分表无需再比对),提高比对和检查的速度。
本申请实施例提供了一种数据处理装置,如图8所示,该数据处理装置可以包括:获取模块801、第一比对模块802以及第二比对模块803,其中,
获取模块801用于获取待检测的至少两个数据库,并确定至少两个数据库中作为检测标准的基线数据库;
第一比对模块802用于针对至少两个数据库中的每个数据库,确定数据库的各个分库分表中作为检测标准的基线表,并比对数据库中各个分库分表的表结构是否均一致;
第二比对模块803用于若是,基于基线数据库的基线表,比对至少两个数据库的基线表的表结构是否均一致,得到至少两个数据库的检测结果。
在一种可选的实施方式中,第一比对模块802在用于确定数据库的各个分库分表中作为检测标准的基线表时,具体用于:
若数据库中包括至少两种类型的分库分表,针对至少两种类型的分库分表中每种类型的分库分表,确定该种类型的各个分库分表中作为检测标准的基线表,得到数据库对应的至少两种基线表;
第二比对模块803在用于基于基线数据库的基线表,比对至少两个数据库的基线表的表结构是否均一致时,具体用于:
基于基线数据库的两种基线表中的每种基线表,分别比对至少两个数据库的相应基线表的表结构是否均一致。
在一种可选的实施方式中,第一比对模块802在用于确定数据库的各个分库分表中作为检测标准的基线表时,具体用于以下至少一种方式:
若各个分库分表是按时间信息划分的,将时间信息与预定时间最接近的分库分表确定为基线表;
若各个分库分表是按分库分表的标识信息划分的,将标识信息按预定顺序排序最靠前的分库分表确定为基线表;
若各个分库分表是按时间信息和标识信息划分的,基于时间信息和标识信息中的至少一种信息,确定基线表。
在一种可选的实施方式中,第一比对模块802在用于针对至少两个数据库中的每个数据库,并比对数据库中各个分库分表的表结构是否均一致时,具体用于:
比对基线数据库中各个分库分表的表结构是否均一致;
在基线数据库中各个分库分表的表结构一致的情况下,针对至少两个数据库中除基线数据库外的每个数据库,并比对数据库中各个分库分表的表结构是否均一致。
在一种可选的实施方式中,第一比对模块802在用于针对至少两个数据库中的每个数据库,比对数据库中各个分库分表的表结构是否均一致时,具体用于:
获取基线数据库的分库分表规则;
基于基线数据库的分库分表规则,针对至少两个数据库中的每个数据库,比对数据库中各个分库分表的表结构是否均一致。
在一种可选的实施方式中,获取模块801在用于确定至少两个数据库中作为检测标准的基线数据库时,具体用于以下至少一种方式:
将至少两个数据库中对应默认环境的数据库确定为基线数据库;
响应于对至少两个数据库中任一数据库的选择指令,将选择指令对应的数据库确定为基线数据库。
在一种可选的实施方式中,获取模块801还用于:
针对每个分库分表,通过以下至少一种方式,获取分库分表的表结构:
响应于用于显示表的创建语句的系统命令;
响应于用于查看表信息的系统命令;
在信息概要库的提供列信息表中查询。
本申请实施例的装置可执行本申请实施例所提供的方法,其实现原理相类似,本申请各实施例的装置中的各模块所执行的动作是与本申请各实施例的方法中的步骤相对应的,对于装置的各模块的详细功能描述具体可以参见前文中所示的对应方法中的描述,此处不再赘述。
本申请实施例中提供了一种电子设备,包括存储器、处理器及存储在存储器上的计算机程序,该处理器执行上述计算机程序以实现前述各方法实施例的步骤。
在一个可选实施例中提供了一种电子设备,如图9所示,图9所示的电子设备900包括:处理器901和存储器903。其中,处理器901和存储器903相连,如通过总线902相连。可选地,电子设备900还可以包括收发器904,收发器904可以用于该电子设备与其他电子设备之间的数据交互,如数据的发送和/或数据的接收等。需要说明的是,实际应用中收发器904不限于一个,该电子设备900的结构并不构成对本申请实施例的限定。
处理器901可以是CPU(Central Processing Unit,中央处理器),通用处理器,DSP(Digital Signal Processor,数据信号处理器),ASIC(Application SpecificIntegrated Circuit,专用集成电路),FPGA(Field Programmable Gate Array,现场可编程门阵列)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器901也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等。
总线902可包括一通路,在上述组件之间传送信息。总线902可以是PCI(Peripheral Component Interconnect,外设部件互连标准)总线或EISA(ExtendedIndustry Standard Architecture,扩展工业标准结构)总线等。总线902可以分为地址总线、数据总线、控制总线等。为便于表示,图9中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
存储器903可以是ROM(Read Only Memory,只读存储器)或可存储静态信息和指令的其他类型的静态存储设备,RAM(Random Access Memory,随机存取存储器)或者可存储信息和指令的其他类型的动态存储设备,也可以是EEPROM(Electrically ErasableProgrammable Read Only Memory,电可擦可编程只读存储器)、CD-ROM(Compact DiscRead Only Memory,只读光盘)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质、其他磁存储设备、或者能够用于携带或存储计算机程序并能够由计算机读取的任何其他介质,在此不做限定。
存储器903用于存储执行本申请实施例的计算机程序,并由处理器901来控制执行。处理器901用于执行存储器903中存储的计算机程序,以实现前述方法实施例所示的步骤。
本申请实施例提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时可实现前述方法实施例的步骤及相应内容。
本申请实施例还提供了一种计算机程序产品,包括计算机程序,计算机程序被处理器执行时可实现前述方法实施例的步骤及相应内容。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“1”、“2”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除图示或文字描述以外的顺序实施。
应该理解的是,虽然本申请实施例的流程图中通过箭头指示各个操作步骤,但是这些步骤的实施顺序并不受限于箭头所指示的顺序。除非本文中有明确的说明,否则在本申请实施例的一些实施场景中,各流程图中的实施步骤可以按照需求以其他的顺序执行。此外,各流程图中的部分或全部步骤基于实际的实施场景,可以包括多个子步骤或者多个阶段。这些子步骤或者阶段中的部分或全部可以在同一时刻被执行,这些子步骤或者阶段中的每个子步骤或者阶段也可以分别在不同的时刻被执行。在执行时刻不同的场景下,这些子步骤或者阶段的执行顺序可以根据需求灵活配置,本申请实施例对此不限制。
以上仅是本申请部分实施场景的可选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请的方案技术构思的前提下,采用基于本申请技术思想的其他类似实施手段,同样属于本申请实施例的保护范畴。
Claims (11)
1.一种数据处理方法,其特征在于,包括:
获取待检测的至少两个数据库,并确定所述至少两个数据库中作为检测标准的基线数据库;
针对所述至少两个数据库中的每个数据库,确定数据库的各个分库分表中作为检测标准的基线表,并比对数据库中各个分库分表的表结构是否均一致;
若是,基于所述基线数据库的基线表,比对所述至少两个数据库的基线表的表结构是否均一致,得到所述至少两个数据库的检测结果。
2.根据权利要求1所述的数据处理方法,其特征在于,所述确定数据库的各个分库分表中作为检测标准的基线表,包括:
若数据库中包括至少两种类型的分库分表,针对所述至少两种类型的分库分表中每种类型的分库分表,确定该种类型的各个分库分表中作为检测标准的基线表,得到数据库对应的至少两种基线表;
所述基于所述基线数据库的基线表,比对所述至少两个数据库的基线表的表结构是否均一致,包括:
基于所述基线数据库的所述两种基线表中的每种基线表,分别比对所述至少两个数据库的相应基线表的表结构是否均一致。
3.根据权利要求1所述的数据处理方法,其特征在于,所述确定数据库的各个分库分表中作为检测标准的基线表,包括以下至少一种方式:
若所述各个分库分表是按时间信息划分的,将所述时间信息与预定时间最接近的分库分表确定为所述基线表;
若所述各个分库分表是按分库分表的标识信息划分的,将所述标识信息按预定顺序排序最靠前的分库分表确定为所述基线表;
若所述各个分库分表是按所述时间信息和所述标识信息划分的,基于所述时间信息和所述标识信息中的至少一种信息,确定所述基线表。
4.根据权利要求1-3任一项所述的数据处理方法,其特征在于,针对所述至少两个数据库中的每个数据库,并比对数据库中各个分库分表的表结构是否均一致,包括:
比对所述基线数据库中各个分库分表的表结构是否均一致;
在所述基线数据库中各个分库分表的表结构一致的情况下,针对所述至少两个数据库中除所述基线数据库外的每个数据库,并比对数据库中各个分库分表的表结构是否均一致。
5.根据权利要求1-3任一项所述的数据处理方法,其特征在于,针对所述至少两个数据库中的每个数据库,比对数据库中各个分库分表的表结构是否均一致,包括:
获取所述基线数据库的分库分表规则;
基于所述基线数据库的分库分表规则,针对所述至少两个数据库中的每个数据库,比对数据库中各个分库分表的表结构是否均一致。
6.根据权利要求1-3任一项所述的数据处理方法,其特征在于,所述确定所述至少两个数据库中作为检测标准的基线数据库,包括以下至少一种方式:
将所述至少两个数据库中对应默认环境的数据库确定为所述基线数据库;
响应于对所述至少两个数据库中任一数据库的选择指令,将所述选择指令对应的数据库确定为所述基线数据库。
7.根据权利要求1-3任一项所述的数据处理方法,其特征在于,还包括:
针对每个分库分表,通过以下至少一种方式,获取分库分表的表结构:
响应于用于显示表的创建语句的系统命令;
响应于用于查看表信息的系统命令;
在信息概要库的提供列信息表中查询。
8.一种数据处理装置,其特征在于,包括:
获取模块,用于获取待检测的至少两个数据库,并确定所述至少两个数据库中作为检测标准的基线数据库;
第一比对模块,用于针对所述至少两个数据库中的每个数据库,确定数据库的各个分库分表中作为检测标准的基线表,并比对数据库中各个分库分表的表结构是否均一致;
第二比对模块,用于若是,基于所述基线数据库的基线表,比对所述至少两个数据库的基线表的表结构是否均一致,得到所述至少两个数据库的检测结果。
9.一种电子设备,包括存储器、处理器及存储在存储器上的计算机程序,其特征在于,所述处理器执行所述计算机程序以实现权利要求1-7任一项所述的方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-7任一项所述的方法。
11.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310655064.4A CN116975649A (zh) | 2023-06-02 | 2023-06-02 | 数据处理方法、装置、电子设备、存储介质及程序产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310655064.4A CN116975649A (zh) | 2023-06-02 | 2023-06-02 | 数据处理方法、装置、电子设备、存储介质及程序产品 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116975649A true CN116975649A (zh) | 2023-10-31 |
Family
ID=88483953
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310655064.4A Pending CN116975649A (zh) | 2023-06-02 | 2023-06-02 | 数据处理方法、装置、电子设备、存储介质及程序产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116975649A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117389996A (zh) * | 2023-12-11 | 2024-01-12 | 深圳万物安全科技有限公司 | 数据库优化建议生成方法、终端设备及存储介质 |
-
2023
- 2023-06-02 CN CN202310655064.4A patent/CN116975649A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117389996A (zh) * | 2023-12-11 | 2024-01-12 | 深圳万物安全科技有限公司 | 数据库优化建议生成方法、终端设备及存储介质 |
CN117389996B (zh) * | 2023-12-11 | 2024-03-29 | 深圳万物安全科技有限公司 | 数据库优化建议生成方法、终端设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11960464B2 (en) | Customer-related partitioning of journal-based storage systems | |
US10346434B1 (en) | Partitioned data materialization in journal-based storage systems | |
Aboutorabiª et al. | Performance evaluation of SQL and MongoDB databases for big e-commerce data | |
US20110246550A1 (en) | System and method for aggregation of data from a plurality of data sources | |
US10133767B1 (en) | Materialization strategies in journal-based databases | |
CN112860777B (zh) | 数据处理方法、装置及设备 | |
US10496645B1 (en) | System and method for analysis of a database proxy | |
US20230024345A1 (en) | Data processing method and apparatus, device, and readable storage medium | |
Silva et al. | Integrating big data into the computing curricula | |
CN114329096A (zh) | 一种原生图数据库处理方法及系统 | |
CN108140022B (zh) | 数据查询方法和数据库系统 | |
CN116975649A (zh) | 数据处理方法、装置、电子设备、存储介质及程序产品 | |
US10235407B1 (en) | Distributed storage system journal forking | |
Kathare et al. | A comprehensive study of Elasticsearch | |
Topcu et al. | Analysis and evaluation of the riak cluster environment in distributed databases | |
Murazzo et al. | Database NewSQL performance evaluation for big data in the public cloud | |
US8161079B2 (en) | Acquisition and expansion of storage area network interoperation relationships | |
Faridoon et al. | Big Data Storage Tools Using NoSQL Databases and Their Applications in Various Domains: A Systematic Review. | |
WO2023098462A1 (en) | Improving performance of sql execution sequence in production database instance | |
CN115658680A (zh) | 数据存储方法、数据查询方法和相关装置 | |
CN115481026A (zh) | 测试案例的生成方法、装置、计算机设备、存储介质 | |
Khashan et al. | An adaptive spark-based framework for querying large-scale NoSQL and relational databases | |
McGlothlin et al. | Scalable queries for large datasets using cloud computing: a case study | |
Sotiriou | Development and evaluation of a transactional benchmark driver for a scalable SQL database | |
Gomes et al. | An object mapping for the Cassandra distributed database |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |