CN108509328B - 数据库校验方法及装置 - Google Patents

数据库校验方法及装置 Download PDF

Info

Publication number
CN108509328B
CN108509328B CN201710099090.8A CN201710099090A CN108509328B CN 108509328 B CN108509328 B CN 108509328B CN 201710099090 A CN201710099090 A CN 201710099090A CN 108509328 B CN108509328 B CN 108509328B
Authority
CN
China
Prior art keywords
database
result
sql
sample sql
running
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
CN201710099090.8A
Other languages
English (en)
Other versions
CN108509328A (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 Technology Shenzhen Co Ltd
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 CN201710099090.8A priority Critical patent/CN108509328B/zh
Publication of CN108509328A publication Critical patent/CN108509328A/zh
Application granted granted Critical
Publication of CN108509328B publication Critical patent/CN108509328B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3692Test management for test results analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种数据库校验方法及装置,属于互联网技术领域。所述方法包括:转换目标数据库,得到关系型数据库管理系统MySQL所支持的基准数据库;在所述目标数据库中运行样本结构化查询语言SQL得到第一运行结果,并在所述基准数据库中运行所述样本SQL得到第二运行结果;拷贝所述第一运行结果至所述基准数据库;在所述基准数据库中检测所述第一运行结果和所述第二运行结果是否一致;若检测结果为所述第一运行结果和所述第二运行结果一致,则确定对所述目标数据库校验成功。解决了现有技术中当样本SQL较多时,对目标数据库校验效率较低的问题;达到了可以快速确定样本SQL在基准数据库中的校验结果,提高对目标数据库的校验效率的效果。

Description

数据库校验方法及装置
技术领域
本发明实施例涉及数据库技术领域,特别涉及一种数据库校验方法及装置。
背景技术
现有技术中,由于业务需求需要对Pgxc(开源的分布式数据库系统)数据库进行二次开发,而为了保证二次开发后的目标数据库的可靠性,需要对目标数据库进行校验。
现有的数据库校验方法包括:服务器在目标数据库中运行样本SQL,检测运行结果是否与预先存储的运行结果一致;若检测结果为一致,则确定对目标数据库校验成功。其中,预先存储的运行结果是指校验人员对样本SQL的运行结果手动校验之后存储至服务器的。
然而,随着数据库功能的不断扩展,需要使用的样本SQL的数量越来越大,因此,现有技术中校验人员需要手动校验大量的SQL,对目标数据库校验的效率较低。同时,在目标数据库的数据量比较大时,一条样本SQL的运行结果可能有多行,此时,校验人员将无法确认运行结果是否正确,也即上述方案中服务器将无法预先存储有样本SQL的运行结果,上述方案将无法实现。
发明内容
为了解决现有技术中存在的问题,本发明实施例提供了一种数据库校验方法及装置。技术方案如下:
根据本发明实施例的第一方面,提供一种数据库校验方法,该方法包括:
转换目标数据库,得到关系型数据库管理系统MySQL所支持的基准数据库;
在所述目标数据库中运行样本结构化查询语言SQL得到第一运行结果,并在所述基准数据库中运行所述样本SQL得到第二运行结果;
拷贝所述第一运行结果至所述基准数据库;
在所述基准数据库中检测所述第一运行结果和所述第二运行结果是否一致;
若检测结果为所述第一运行结果和所述第二运行结果一致,则确定对所述目标数据库校验成功。
根据本发明实施例的第三方面,提供一种数据库校验装置,该装置包括:
转换模块,用于转换目标数据库,得到关系型数据库管理系统MySQL所支持的基准数据库;
第一获取模块,用于在所述目标数据库中运行样本结构化查询语言SQL得到第一运行结果,并在所述基准数据库中运行所述样本SQL得到第二运行结果;
拷贝模块,用于拷贝所述第一运行结果至所述基准数据库;
检测模块,用于在所述基准数据库中检测所述第一运行结果和所述第二运行结果是否一致;
确定模块,用于在所述检测模块的检测结果为所述第一运行结果和所述第二运行结果一致时,确定对所述目标数据库校验成功。
本发明实施例提供的技术方案带来的有益效果是:
通过将待校验的目标数据库转换成MySQL所支持的基准数据库,在目标数据库和基准数据库中执行样本SQL,获得在目标数据库中的第一运行结果以及在基准数据库中的第二运行结果,进而在基准数据库的环境中检测第一运行结果和第二运行结果是否一致,并在检测结果为一致时,确定对目标数据库校验成功;解决了现有技术中当样本SQL较多时,对目标数据库校验效率较低的问题;达到了可以快速确定样本SQL在基准数据库中的校验结果,提高对目标数据库的校验效率的效果。同时,通过自动获取样本SQL在目标数据库中的第一运行结果以及在基准数据库中的第二运行结果,进而通过检测第一运行结果和第二运行结果是否一致来对目标数据库进行校验,达到了即使目标数据库的数据量比较大,那么由于仍然可以获取到第一运行结果和第二运行结果且仍然可以执行对比,因此仍然可以实现对目标数据库校验的效果。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一个实施例提供的数据库校验方法的流程图;
图2是本发明一个实施例提供的数据库校验方法的流程图;
图3是本发明一个实施例提供的调度系统获取运行结果的流程图;
图4是本发明一个实施例提供的调度系统检测运行结果的流程图;
图5是本发明一个实施例提供的数据库校验方法的流程图;
图6是本发明一个实施例提供的数据库校验装置的示意图;
图7是本发明一个实施例提供的服务器的示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
为了保证对Pgxc数据库二次开发后的目标数据库的可靠性,校验人员需要对目标数据库进行校验。在下述各个实施例中,调度系统可以先将目标数据库进行转换,得到目标数据库所对应的基准数据库,在目标数据库和基准数据库中运行样本SQL,进而对比在目标数据库中的第一运行结果以及在基准数据库中的第二运行结果,在对比结果为两者一致时,确定对目标数据库校验成功。其中,目标数据库和基准数据库可以在同一台服务器中,也可以在不同服务器中,本实施例对此并不做限定。并且,上述所说的调度系统可以为一台服务器,也可以为由多台服务器组成的服务器集群,并且,调度系统访问目标数据库和基准数据库,对此并不做限定。
请参考图1,其示出了本发明一个实施例提供的数据库校验方法的方法流程图,如图1所示,该数据库校验方法可以包括:
步骤101,转换目标数据库,得到MySQL所支持的基准数据库。
步骤102,在目标数据库中运行样本SQL得到第一运行结果,并在基准数据库中运行样本SQL得到第二运行结果。
步骤103,拷贝第一运行结果至基准数据库。
步骤104,在基准数据库中检测第一运行结果和第二运行结果是否一致。
步骤105,若检测结果为第一运行结果和第二运行结果一致,则确定对目标数据库校验成功。
综上所述,本实施例提供的数据库校验方法,通过将待校验的目标数据库转换成MySQL所支持的基准数据库,在目标数据库和基准数据库中执行样本SQL,获得在目标数据库中的第一运行结果以及在基准数据库中的第二运行结果,进而在基准数据库的环境中检测第一运行结果和第二运行结果是否一致,并在检测结果为一致时,确定对目标数据库校验成功;解决了现有技术中当样本SQL较多时,对目标数据库校验效率较低的问题;达到了可以快速确定样本SQL在基准数据库中的校验结果,提高对目标数据库的校验效率的效果。同时,通过自动获取样本SQL在目标数据库中的第一运行结果以及在基准数据库中的第二运行结果,进而通过检测第一运行结果和第二运行结果是否一致来对目标数据库进行校验,达到了即使目标数据库的数据量比较大,那么由于仍然可以获取到第一运行结果和第二运行结果且仍然可以执行对比,因此仍然可以实现对目标数据库校验的效果。
请参考图2,其示出了本发明一个实施例提供的数据库校验方法的方法流程图,如图2所示,该数据库校验方法可以包括:
步骤201,转换目标数据库,得到MySQL所支持的基准数据库。
下述实施例以通过调度系统来实现数据库校验来举例。在调度系统需要对目标数据库进行校验时,调度系统可以通过SQL转换工具转换目标数据库,并得到MySQL所支持的基准数据库。
其中,SQL转换工具为根据目标数据库与MySQL数据库的差异训练得到的工具。其中,目标数据库与MySQL数据库的差异包括语法差异、数据类型差异和SQL语句差异中的至少一种,当然实际实现时,还可能会包含其他差异,本实施例对此并不做限定。
请参考表1,其示出了目标数据库与MySQL的差异举例。基于上述举例,调度系统在通过SQL转换工具对目标数据库进行转换时,将目标数据库中的双引号替换为单引号,将目标数据库中的FLOAT替换为REAL,并将目标数据库中的SELECT语句替换为COPY语句,本实施例对此并不做限定。
Figure BDA0001231155030000051
表1
步骤202,在目标数据库中运行样本SQL得到第一运行结果,并在基准数据库中运行样本SQL得到第二运行结果。
调度系统在转换得到基准数据库之后,调度系统可以在目标数据库和基准数据库中运行样本SQL,并得到样本SQL在目标数据库中的第一运行结果以及在基准数据库中的第二运行结果。
其中,本实施例所说的样本SQL可以为目标数据库所支持的格式的SQL,也可以为MySQL所支持的格式的SQL,本实施例对此并不做限定。并且,在样本SQL为目标数据库所支持的格式的SQL时,调度系统在基准数据库中运行样本SQL时,调度系统可以通过SQL转换工具将样本SQL转换成MySQ所支持的基准样本SQL,并在基准数据库中运行该基准样本SQL得到第二运行结果;而在样本SQL为MySQL所支持的格式的SQL时,调度系统在目标数据库中运行样本SQL时,调度系统可以通过SQL转换工具将样本SQL转换成目标数据库所支持的目标样本SQL,并在目标数据库中运行该目标样本SQL得到第一运行结果。其中,SQL转换工具与步骤201中所说的转换工具类似。
实际实现时,样本SQL中可以包括至少一条样本SQL语句,调度系统可以为在每个数据库中为每条SQL语句(说明一下二者的关系)分别设置状态信息,比如当状态信息为0时,表示该条样本SQL语句还未执行;当状态信息为1时,表示该条样本SQL语句正在被执行;而当状态信息为2时,表示该条样本SQL语句已经被执行完毕。因此,请参考图3,对于目标数据库或者基准数据库,调度系统可以查询是否存在状态信息为0的样本SQL语句,若存在,则调度系统取出其中的第一条样本SQL语句,在该数据库中运行该条样本SQL语句,并在开始运行时,将该样本SQL语句的状态信息更新为1,并在执行完毕后,将该条样本SQL的状态信息更新为2;而若不存在,则流程结束。
实际实现时,每条样本SQL语句可以是社区SQL语句、样例SQL语句或者业务SQL语句,本实施例对此并不做限定。并且,为了对目标数据库中各种功能均进行校验,样本SQL中的各条样本SQL语句可以包括DQL(Data Query Language,数据查询语言)语句以及DML(Data Manipulation Language,数据操纵语言)语句。其中,DML语句可以包括UPDATE(更新)语句和INSERT(插入)语句,本实施例对此并不做限定。
对于样本SQL中的DQL语句,调度系统可以将查询结果作为该DQL语句的运行结果;而对于样本SQL中的DML语句,调度系统可以将运行语句后有影响的行作为运行结果。比如,对于样本SQL中的UPDATE语句,调度系统可以将被更新的行作为有影响的行。又比如,对于样本SQL中的INSERT语句,调度系统可以将插入的行作为有影响的行。
实际实现时,一条样本SQL语句的运行结果可能有多行,比如,对于DQL语句来说,同一条DQL语句可能查询到多条查询结果,而每条查询结果对应于一行,因此,实际实现时,本步骤可以包括:
对于每条样本SQL语句,获取该样本SQL语句在目标数据库中所对应的第一结果集,将第一结果集按照预设顺序进行排序,将排序得到的第二结果集作为该条样本SQL语句在目标数据库中的第一运行结果。其中,结果集包括该条样本SQL语句运行后的所有行的集合;预设顺序为调度系统中默认的顺序或者校验人员预先自定义的顺序,该预设顺序可以为样本SQL语句的SQL ID(Identity,标识)升续或者SQL ID降续,又或者是其它顺序,比如,在结果集为学生成绩时,该预设顺序可以为按成绩由高到低排列的顺序,本实施例对此并不做限定。每条样本SQL语句的SQL ID可以为调度系统在得到各条样本SQL语句的运行结果之后生成,也可以是调度系统在得到各条样本SQL语句时生成,当然,也可以为调度系统在得到各条样本SQL语句时直接获取,本实施例对此并不做限定。
其中,不同样本SQL的排序顺序可以相同或者不同,本实施例对此并不做限定。
可选地,调度系统可以通过Order by语句将结果集按照预设顺序进行排序,本实施例对此并不做限定。
类似的,对于每条样本SQL语句,获取样本SQL语句在基准数据库中所对应的第三结果集,将第三结果集按照预设顺序进行排序,将排序得到的第四结果集作为该条样本SQL语句在基准数据库中的第二运行结果。
其中,对于同一条样本SQL语句,该条样本SQL语句在目标数据库中对应的结果集的排序与在基准数据库中对应的结果集的排序相同。
可选地,在调度系统得到各条样本SQL语句的运行结果之后,调度系统可以将每条样本SQL语句的SQL ID和该条样本SQL语句在目标数据库中的结果集对应存储为第一运行结果,将该SQL ID和该条样本SQL语句在基准数据库中的结果集对应存储为第二运行结果,本实施例对此并不做限定。
需要补充说明的一点是,由于样本SQL中可以包括至少一条样本SQL语句,每条样本SQL语句在目标数据库中运行得到一条第一运行结果,在基准数据库中运行得到一条第二运行结果,因此,在样本SQL在目标数据库和基准数据库中运行之后,第一运行结果和第二运行结果均可能有多条,本实施例对此并不做限定。
需要补充说明的另一点是,若在目标数据库中运行某一样本SQL语句时,运行失败,则调度系统可以确定目标数据库存在bug,此时,调度系统可以结束流程,并确定对目标数据库校验失败。当然,实际实现时,调度系统还可以将“运行失败”确定为该条样本SQL语句的运行结果,并继续运行其他各条样本SQL语句,本实施例对此并不做限定。
步骤203,拷贝第一运行结果至基准数据库。
步骤204,在基准数据库中检测第一运行结果的条数和第二运行结果的条数是否一致。
调度系统在将第一运行结果拷贝至基准数据库之后,由于第一运行结果和第二运行结果均可能为多条,因此,请参考图4,调度系统可以检测第一运行结果的条数与第二运行结果的条数是否一致。
可选地,调度系统可以检测第一运行结果中的SQL ID的个数与第二运行结果中的SQL ID的个数是否相同。
可选地,若第一运行结果的条数和第二运行结果的条数不一致,则调度系统确定第一运行结果和第二运行结果不一致。
步骤205,若第一运行结果的条数和第二运行结果的条数一致,则检测第一运行结果的内容和第二运行结果的内容是否一致。
可选地,对于每条样本SQL语句,检测每条样本SQL语句在目标数据库中的第一运行结果的内容和该条样本SQL语句在基准数据库中的第二运行结果的内容是否一致。可选地,请参考图4,对于DQL语句,调度系统对第一运行结果和第二运行结果中查询结果表的内容进行对比;而对于DML语句,调度系统对第一运行结果和第二运行结果中存储的有影响的行的内容进行对比,对此并不做限定。
实际实现时,调度系统可以根据SQL ID,检测每个SQL ID所对应的第一运行结果的内容和第二运行结果的内容是否一致。具体步骤可以包括:调度系统可以计算该SQL ID所对应的第一运行结果的内容的MD5(Message Digest Algorithm,消息摘要算法第五版)值,以及该SQL ID所对应的第二运行结果的内容的MD5值,检测计算得到的两个MD5值是否相同,若相同,则调度系统确定该条样本SQL语句在目标数据库中的第一运行结果的内容和该条样本SQL语句在基准数据库中的第二运行结果的内容一致,反之则确定为不一致。
实际实现时,调度系统还可以通过其他检测方式检测第一运行结果的内容和第二运行结果的内容是否一致,本实施例对此并不做限定。
可选地,本实施例只是以先执行步骤204后执行步骤205为例,可选地,调度系统还可以同时执行步骤204和步骤205,或者先执行步骤205,后执行步骤204,对此并不做限定。
步骤206,若第一运行结果的内容和第二运行结果的内容一致,则确定第一运行结果和第二运行结果一致。
可选地,若第一运行结果的内容和第二运行结果的内容不一致,则确定第一运行结果和第二运行结果不一致。
步骤207,若检测结果为第一运行结果和第二运行结果一致,则确定对目标数据库校验成功。
如果检测结果为第一运行结果和第二运行结果一致,则调度系统可以确定目标数据库的计算准确度可以保证,此时,可以确定对目标数据库校验成功。
可选地,调度系统可以生成校验成功信息,并将该校验成功信息发送至预设终端。其中,预设终端可以为预设帐号所对应的终端,该预设帐号可以为手机号码、邮箱地址、社交应用帐号或者其它帐号,本实施例对此并不做限定。
可选地,若检测结果为第一运行结果和第二运行结果不一致,则该方法还可以包括如下步骤:
第一,获取第一运行结果和第二运行结果中不一致的内容。
如果检测结果为第一运行结果和第二运行结果不一致,则调度系统可以确定目标数据库可能有误,此时,调度系统可以确定对该目标数据库校验失败。
可选地,调度系统可以获取第一运行结果和第二运行结果中不一致的内容。
第二,在获取到第一运行结果和第二运行结果中不一致的内容之后,调度系统可以发送获取到的内容至预设终端,预设终端展示接收到的内容。
相应的,预设终端可以接收并展示该内容,校验人员根据展示的内容修复目标数据库。
请参考图5,其示出了本实施例提供的数据库校验方法的流程框图。如图5所示,调度系统可以通过SQL转换工具将目标数据库转换为基准数据库,在目标数据库和基准数据库中运行样本SQL,得到在目标数据库中的第一运行结果以及在基准数据库中的第二运行结果,对比第一运行结果和第二运行结果,进而在第一运行结果和第二运行结果一致时,确定对目标数据库校验成功,反之则校验失败。
综上所述,本实施例提供的数据库校验方法,通过将待校验的目标数据库转换成MySQL所支持的基准数据库,在目标数据库和基准数据库中执行样本SQL,获得在目标数据库中的第一运行结果以及在基准数据库中的第二运行结果,进而在基准数据库的环境中检测第一运行结果和第二运行结果是否一致,并在检测结果为一致时,确定对目标数据库校验成功;解决了现有技术中当样本SQL较多时,对目标数据库校验效率较低的问题;达到了可以快速确定样本SQL在基准数据库中的校验结果,提高对目标数据库的校验效率的效果。同时,通过自动获取样本SQL在目标数据库中的第一运行结果以及在基准数据库中的第二运行结果,进而通过检测第一运行结果和第二运行结果是否一致来对目标数据库进行校验,达到了即使目标数据库的数据量比较大,那么由于仍然可以获取到第一运行结果和第二运行结果且仍然可以执行对比,因此仍然可以实现对目标数据库校验的效果。
通过对同一条样本SQL语句所对应的结果集按照预设顺序进行排序;避免了由于在目标数据库中的结果集的排序与在基准数据库中的排序不同,进而导致将两者的运行结果判定为不同,也即对目标数据库误判的问题;达到了可以提高对目标数据库的校验的准确度的效果。
通过在基准数据库中检测第一运行结果和第二运行结果,避免了在目标数据库中进行检测时,若目标数据库存在异常,则判断结果可能有误,也即对目标数据库的校验结果准确度低的问题;达到了可以提高对目标数据库校验的准确度的效果。
在上述实施例中,调度系统在获取第一运行结果和第二运行结果时,调度系统可以启动两组线程,其中一组线程用于获取样本SQL在目标数据库中的第一运行结果,另一组线程用于获取样本SQL在基准数据库中的第二运行结果。其中,每组线程中包括至少一个线程。
通过采用多线程来获取第一运行结果和第二运行结果,提高了调度系统对目标数据库的校验的效率。
上述数据库校验方法还可以包括如下步骤:
第一,获取样本SQL在目标数据库中运行时的第一运行时长以及在基准数据库中运行时的第二运行时长。
调度系统在目标数据库中执行样本SQL时,调度系统可以统计样本SQL在目标数据库中运行时的第一运行时长,类似的,调度系统可以统计样本SQL在基准数据库中的第二运行时长。
比如,统计得到的第一运行时长为50s,统计得到的第二运行时长为40s。
第二,发送第一运行时长和第二运行时长至预设终端,预设终端展示第一运行时长和第二运行时长。
相应的,预设终端可以接收并展示第一运行时长和第二运行时长,校验人员可以比较展示的第一运行时长和第二运行时长,进而得知目标数据库的性能是优于基准数据库,还是差于基准数据库。
当样本SQL中包括DELETE语句时,由于DELETE语句运行之后直接删除数据之后而没有相应的结果,因此,为了校验目标数据库的删除功能,调度系统可以只在目标数据库中运行DELETE语句,并在运行之后,运行查询已删除的数据的查询指令,若查询数据成功,则说明目标数据库中的删除功能异常,对目标数据库校验失败。
请参考图6,其示出了本发明一个实施例提供的数据库校验装置的结构示意图,如图6所示,该数据库校验装置可以包括:转换模块610、第一获取模块620、拷贝模块630、检测模块640和确定模块650。
转换模块610,用于转换目标数据库,得到关系型数据库管理系统MySQL所支持的基准数据库;
第一获取模块620,用于在所述目标数据库中运行样本结构化查询语言SQL得到第一运行结果,并在所述基准数据库中运行所述样本SQL得到第二运行结果;
拷贝模块630,用于拷贝所述第一运行结果至所述基准数据库;
检测模块640,用于在所述基准数据库中检测所述第一运行结果和所述第二运行结果是否一致;
确定模块650,用于在所述检测模块的检测结果为所述第一运行结果和所述第二运行结果一致时,确定对所述目标数据库校验成功。
综上所述,本实施例提供的数据库校验装置,通过将待校验的目标数据库转换成MySQL所支持的基准数据库,在目标数据库和基准数据库中执行样本SQL,获得在目标数据库中的第一运行结果以及在基准数据库中的第二运行结果,进而在基准数据库的环境中检测第一运行结果和第二运行结果是否一致,并在检测结果为一致时,确定对目标数据库校验成功;解决了现有技术中当样本SQL较多时,对目标数据库校验效率较低的问题;达到了可以快速确定样本SQL在基准数据库中的校验结果,提高对目标数据库的校验效率的效果。同时,通过自动获取样本SQL在目标数据库中的第一运行结果以及在基准数据库中的第二运行结果,进而通过检测第一运行结果和第二运行结果是否一致来对目标数据库进行校验,达到了即使目标数据库的数据量比较大,那么由于仍然可以获取到第一运行结果和第二运行结果且仍然可以执行对比,因此仍然可以实现对目标数据库校验的效果。
基于上述实施例提供的数据库校验装置,可选的,所述转换模块610,还用于通过SQL转换工具转换所述目标数据库,得到所述基准数据库,所述SQL转换工具为根据所述目标数据库与MySQL数据库之间的差异训练得到的工具。
可选的,所述第一获取模块620,还用于在所述样本SQL为MySQL所支持的SQL时,将所述样本SQL转换成所述目标数据库所支持的目标样本SQL,并在所述目标数据库中运行所述目标样本SQL得到所述第一运行结果;在所述样本SQL为所述目标数据库所支持的SQL时,将所述样本SQL转换成MySQL所支持的基准样本SQL,并在所述基准数据库中运行所述基准样本SQL得到所述第二运行结果。
可选的,所述检测模块640,包括:
第一检测单元,用于在所述基准数据库中检测所述第一运行结果的条数和所述第二运行结果的条数是否一致;
第二检测单元,用于在所述第一检测单元的检测结果为所述第一运行结果的条数和所述第二运行结果的条数一致时,检测所述第一运行结果的内容和所述第二运行结果的内容是否一致;
确定单元,用于在所述第二检测单元的检测结果为所述第一运行结果的内容和所述第二运行结果的内容一致时,确定所述第一运行结果和所述第二运行结果一致。
可选的,所述第一获取模块620,还用于:
对于每条样本SQL,获取所述样本SQL在所述目标数据库中所对应的第一结果集,将所述第一结果集按照预设顺序进行排序,将排序得到的第二结果集作为所述样本SQL在所述目标数据库中的所述第一运行结果;
对于每条样本SQL,获取所述样本SQL在所述基准数据库中所对应的第三结果集,将所述第三结果集按照所述预设顺序进行排序,将排序得到的第四结果集作为所述样本SQL在所述基准数据库中的所述第二运行结果。
可选的,所述第一获取模块620,还用于:
通过一组线程在所述目标数据库中运行所述样本SQL得到所述第一运行结果;
通过另一组线在所述基准数据库中运行所述样本SQL得到所述第二运行结果;
其中,每组线程中包括至少一个线程。
可选的,第二获取模块,用于在所述检测模块的检测结果为所述第一运行结果和所述第二运行结果不一致时,获取所述第一运行结果和所述第二运行结果中不一致的内容;
第一发送模块,用于发送获取到的内容至预设终端,所述预设终端展示接收到的内容。
可选的,所述装置还包括:
第三获取模块,用于获取所述样本SQL在所述目标数据库中运行时的第一运行时长以及在所述基准数据库中运行时的第二运行时长;
第二发送模块,用于发送所述第一运行时长和所述第二运行时长至预设终端,所述预设终端展示所述第一运行时长和所述第二运行时长。
需要说明的是:上述实施例提供的数据库校验装置,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将服务器的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的数据库校验装置和数据库校验方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
本发明实施例还提供了一种计算机可读存储介质,该计算机可读存储介质可以是调度系统的存储器中所包含的计算机可读存储介质;也可以是单独存在,未装配入调度系统中的计算机可读存储介质。该计算机可读存储介质存储有一个或者一个以上程序,该一个或者一个以上程序被一个或者一个以上的处理器用来执行上述数据库校验方法。
请参考图7,其示出了本发明一个实施例提供的服务器的结构示意图。该服务器用于实施上述实施例中提供的数据库校验方法。具体来讲:
所述服务器700包括中央处理单元(CPU)701、包括随机存取存储器(RAM)702和只读存储器(ROM)703的系统存储器704,以及连接系统存储器704和中央处理单元701的系统总线705。所述服务器700还包括帮助计算机内的各个器件之间传输信息的基本输入/输出系统(I/O系统)706,和用于存储操作系统713、应用程序714和其他程序模块715的大容量存储设备707。
所述基本输入/输出系统706包括有用于显示信息的显示器708和用于用户输入信息的诸如鼠标、键盘之类的输入设备709。其中所述显示器708和输入设备709都通过连接到系统总线705的输入输出控制器710连接到中央处理单元701。所述基本输入/输出系统706还可以包括输入输出控制器710以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器710还提供输出到显示屏、打印机或其他类型的输出设备。
所述大容量存储设备707通过连接到系统总线705的大容量存储控制器(未示出)连接到中央处理单元701。所述大容量存储设备707及其相关联的计算机可读介质为服务器700提供非易失性存储。也就是说,所述大容量存储设备707可以包括诸如硬盘或者CD-ROM驱动器之类的计算机可读介质(未示出)。
不失一般性,所述计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括RAM、ROM、EPROM、EEPROM、闪存或其他固态存储其技术,CD-ROM、DVD或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知所述计算机存储介质不局限于上述几种。上述的系统存储器704和大容量存储设备707可以统称为存储器。
根据本发明的各种实施例,所述服务器700还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即服务器700可以通过连接在所述系统总线705上的网络接口单元711连接到网络712,或者说,也可以使用网络接口单元711来连接到其他类型的网络或远程计算机系统(未示出)。
所述存储器还包括一个或者一个以上的程序,所述一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行。上述一个或者一个以上程序包含用于执行上述数据库校验方法的指令。
应当理解的是,在本文中使用的,除非上下文清楚地支持例外情况,单数形式“一个”(“a”、“an”、“the”)旨在也包括复数形式。还应当理解的是,在本文中使用的“和/或”是指包括一个或者一个以上相关联地列出的项目的任意和所有可能组合。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (18)

1.一种数据库校验方法,其特征在于,所述方法包括:
转换目标数据库,得到关系型数据库管理系统MySQL所支持的基准数据库;
在所述目标数据库中运行样本SQL得到第一运行结果,并在所述基准数据库中运行所述样本SQL得到第二运行结果;
拷贝所述第一运行结果至所述基准数据库;
在所述基准数据库中检测所述第一运行结果和所述第二运行结果是否一致;
若检测结果为所述第一运行结果和所述第二运行结果一致,则确定对所述目标数据库校验成功;
所述样本SQL中包括至少一条样本SQL语句,所述在所述目标数据库中运行样本SQL得到第一运行结果,并在所述基准数据库中运行所述样本SQL得到第二运行结果,包括:
对于所述目标数据库或者所述基准数据库,查询是否存在还未被执行的样本SQL语句,若存在,则取出还未被执行的第一条样本SQL语句,在所述目标数据库或者所述基准数据库中运行取出的样本SQL语句,并在开始运行时,将所述样本SQL语句的状态信息更新为正在执行,并在执行完毕后,将所述样本SQL语句的状态信息更新为已执行完毕。
2.根据权利要求1所述的方法,其特征在于,所述转换目标数据库,得到关系型数据库管理系统MySQL所支持的基准数据库,包括:
通过SQL转换工具转换所述目标数据库,得到所述基准数据库,所述SQL转换工具为根据所述目标数据库与MySQL数据库之间的差异训练得到的工具。
3.根据权利要求1所述的方法,其特征在于,
若所述样本SQL为MySQL所支持的SQL,则所述在所述目标数据库中运行样本SQL得到第一运行结果,包括:
将所述样本SQL转换成所述目标数据库所支持的目标样本SQL,并在所述目标数据库中运行所述目标样本SQL得到所述第一运行结果;
若所述样本SQL为所述目标数据库所支持的SQL,则所述在所述基准数据库中运行所述样本SQL得到第二运行结果,包括:
将所述样本SQL转换成MySQL所支持的基准样本SQL,并在所述基准数据库中运行所述基准样本SQL得到所述第二运行结果。
4.根据权利要求1所述的方法,其特征在于,所述在所述基准数据库中检测所述第一运行结果和所述第二运行结果是否一致,包括:
在所述基准数据库中检测所述第一运行结果的条数和所述第二运行结果的条数是否一致;
若所述第一运行结果的条数和所述第二运行结果的条数一致,则检测所述第一运行结果的内容和所述第二运行结果的内容是否一致;
若所述第一运行结果的内容和所述第二运行结果的内容一致,则确定所述第一运行结果和所述第二运行结果一致。
5.根据权利要求1至4任一所述的方法,其特征在于,所述在所述目标数据库中运行样本SQL得到第一运行结果,并在所述基准数据库中运行所述样本SQL得到第二运行结果,包括:
对于每条样本SQL,获取所述样本SQL在所述目标数据库中所对应的第一结果集,将所述第一结果集按照预设顺序进行排序,将排序得到的第二结果集作为所述样本SQL在所述目标数据库中的所述第一运行结果;
对于所述每条样本SQL,获取所述样本SQL在所述基准数据库中所对应的第三结果集,将所述第三结果集按照所述预设顺序进行排序,将排序得到的第四结果集作为所述样本SQL在所述基准数据库中的所述第二运行结果。
6.根据权利要求1至4任一所述的方法,其特征在于,所述在所述目标数据库中运行样本SQL得到第一运行结果,并在所述基准数据库中运行所述样本SQL得到第二运行结果,包括:
通过一组线程在所述目标数据库中运行所述样本SQL得到所述第一运行结果;
通过另一组线程在所述基准数据库中运行所述样本SQL得到所述第二运行结果;
其中,每组线程中包括至少一个线程。
7.根据权利要求1至4任一所述的方法,其特征在于,
若检测结果为所述第一运行结果和所述第二运行结果不一致,则获取所述第一运行结果和所述第二运行结果中不一致的内容;
发送获取到的内容至预设终端,所述预设终端展示接收到的内容。
8.根据权利要求1至4任一所述的方法,其特征在于,所述方法还包括:
获取所述样本SQL在所述目标数据库中运行时的第一运行时长以及在所述基准数据库中运行时的第二运行时长;
发送所述第一运行时长和所述第二运行时长至预设终端,所述预设终端展示所述第一运行时长和所述第二运行时长。
9.一种数据库校验装置,其特征在于,所述装置包括:
转换模块,用于转换目标数据库,得到关系型数据库管理系统MySQL所支持的基准数据库;
第一获取模块,用于在所述目标数据库中运行样本SQL得到第一运行结果,并在所述基准数据库中运行所述样本SQL得到第二运行结果;
拷贝模块,用于拷贝所述第一运行结果至所述基准数据库;
检测模块,用于在所述基准数据库中检测所述第一运行结果和所述第二运行结果是否一致;
确定模块,用于在所述检测模块的检测结果为所述第一运行结果和所述第二运行结果一致时,确定对所述目标数据库校验成功;
所述样本SQL中包括至少一条样本SQL语句,所述第一获取模块,还用于对于所述目标数据库或者所述基准数据库,查询是否存在还未被执行的样本SQL语句,若存在,则取出还未被执行的第一条样本SQL语句,在所述目标数据库或者所述基准数据库中运行取出的样本SQL语句,并在开始运行时,将所述样本SQL语句的状态信息更新为正在执行,并在执行完毕后,将所述样本SQL语句的状态信息更新为已执行完毕。
10.根据权利要求9所述的装置,其特征在于,
所述转换模块,还用于通过SQL转换工具转换所述目标数据库,得到所述基准数据库,所述SQL转换工具为根据所述目标数据库与MySQL数据库之间的差异训练得到的工具。
11.根据权利要求9所述的装置,其特征在于,
所述第一获取模块,还用于在所述样本SQL为MySQL所支持的SQL时,将所述样本SQL转换成所述目标数据库所支持的目标样本SQL,并在所述目标数据库中运行所述目标样本SQL得到所述第一运行结果;在所述样本SQL为所述目标数据库所支持的SQL时,将所述样本SQL转换成MySQL所支持的基准样本SQL,并在所述基准数据库中运行所述基准样本SQL得到所述第二运行结果。
12.根据权利要求9所述的装置,其特征在于,所述检测模块,包括:
第一检测单元,用于在所述基准数据库中检测所述第一运行结果的条数和所述第二运行结果的条数是否一致;
第二检测单元,用于在所述第一检测单元的检测结果为所述第一运行结果的条数和所述第二运行结果的条数一致时,检测所述第一运行结果的内容和所述第二运行结果的内容是否一致;
确定单元,用于在所述第二检测单元的检测结果为所述第一运行结果的内容和所述第二运行结果的内容一致时,确定所述第一运行结果和所述第二运行结果一致。
13.根据权利要求9至12任一所述的装置,其特征在于,所述第一获取模块,还用于:
对于每条样本SQL,获取所述样本SQL在所述目标数据库中所对应的第一结果集,将所述第一结果集按照预设顺序进行排序,将排序得到的第二结果集作为所述样本SQL在所述目标数据库中的所述第一运行结果;
对于所述每条样本SQL,获取所述样本SQL在所述基准数据库中所对应的第三结果集,将所述第三结果集按照所述预设顺序进行排序,将排序得到的第四结果集作为所述样本SQL在所述基准数据库中的所述第二运行结果。
14.根据权利要求9至12任一所述的装置,其特征在于,所述第一获取模块,还用于:
通过一组线程在所述目标数据库中运行所述样本SQL得到所述第一运行结果;
通过另一组线程在所述基准数据库中运行所述样本SQL得到所述第二运行结果;
其中,每组线程中包括至少一个线程。
15.根据权利要求9至12任一所述的装置,其特征在于,
第二获取模块,用于在所述检测模块的检测结果为所述第一运行结果和所述第二运行结果不一致时,获取所述第一运行结果和所述第二运行结果中不一致的内容;
第一发送模块,用于发送获取到的内容至预设终端,所述预设终端展示接收到的内容。
16.根据权利要求9至12任一所述的装置,其特征在于,所述装置还包括:
第三获取模块,用于获取所述样本SQL在所述目标数据库中运行时的第一运行时长以及在所述基准数据库中运行时的第二运行时长;
第二发送模块,用于发送所述第一运行时长和所述第二运行时长至预设终端,所述预设终端展示所述第一运行时长和所述第二运行时长。
17.一种服务器,其特征在于,所述服务器包括处理器和存储器,所述存储器中存储有至少一个程序,所述至少一个程序由所述处理器用来执行如权利要求1至8任一所述的数据库校验方法。
18.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有至少一个程序,所述至少一个程序由至少一个处理器用来执行如权利要求1至8任一所述的数据库校验方法。
CN201710099090.8A 2017-02-23 2017-02-23 数据库校验方法及装置 Active CN108509328B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710099090.8A CN108509328B (zh) 2017-02-23 2017-02-23 数据库校验方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710099090.8A CN108509328B (zh) 2017-02-23 2017-02-23 数据库校验方法及装置

Publications (2)

Publication Number Publication Date
CN108509328A CN108509328A (zh) 2018-09-07
CN108509328B true CN108509328B (zh) 2021-03-19

Family

ID=63373574

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710099090.8A Active CN108509328B (zh) 2017-02-23 2017-02-23 数据库校验方法及装置

Country Status (1)

Country Link
CN (1) CN108509328B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101706810A (zh) * 2009-11-23 2010-05-12 北京中创信测科技股份有限公司 一种数据库查询方法及装置
CN102508929A (zh) * 2011-12-01 2012-06-20 浪潮(北京)电子信息产业有限公司 实现异构数据库数据迁移的系统、装置及方法
CN103793424A (zh) * 2012-10-31 2014-05-14 阿里巴巴集团控股有限公司 数据库数据迁移方法及系统
CN105989044A (zh) * 2015-02-04 2016-10-05 阿里巴巴集团控股有限公司 一种数据库校验方法及系统

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080320054A1 (en) * 2003-04-09 2008-12-25 Cindy Howard Database and Software Conversion System and Method
CN105512017A (zh) * 2014-09-22 2016-04-20 阿里巴巴集团控股有限公司 一种数据库兼容性检测方法及设备
CN106202111B (zh) * 2015-05-06 2019-10-29 阿里巴巴集团控股有限公司 数据库数据的校验方法和装置
CN104965735B (zh) * 2015-06-18 2018-10-19 北京京东尚科信息技术有限公司 用于生成升级sql脚本的装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101706810A (zh) * 2009-11-23 2010-05-12 北京中创信测科技股份有限公司 一种数据库查询方法及装置
CN102508929A (zh) * 2011-12-01 2012-06-20 浪潮(北京)电子信息产业有限公司 实现异构数据库数据迁移的系统、装置及方法
CN103793424A (zh) * 2012-10-31 2014-05-14 阿里巴巴集团控股有限公司 数据库数据迁移方法及系统
CN105989044A (zh) * 2015-02-04 2016-10-05 阿里巴巴集团控股有限公司 一种数据库校验方法及系统

Also Published As

Publication number Publication date
CN108509328A (zh) 2018-09-07

Similar Documents

Publication Publication Date Title
CN107453960B (zh) 一种在服务测试中处理测试数据的方法、装置和系统
WO2018120721A1 (zh) 用户界面的测试方法、系统、电子装置及计算机可读存储介质
CN106874281B (zh) 实现数据库读写分离的方法和装置
CN108536745B (zh) 基于Shell的数据表提取方法、终端、设备及存储介质
US20160098390A1 (en) Command history analysis apparatus and command history analysis method
CN109002472B (zh) 一种数据库差异的识别方法及装置
CN110704381A (zh) 数据解析方法、装置及存储介质
CN108319711A (zh) 数据库的事务一致性测试方法、装置、存储介质及设备
CN113448862B (zh) 软件版本测试方法、装置及计算机设备
CN111694612A (zh) 配置检查方法、装置、计算机系统及存储介质
CN114996288A (zh) 数据比对方法及装置、计算机存储介质、电子设备
CN110688305A (zh) 测试环境同步方法、装置、介质、电子设备
CN111694684A (zh) 存储设备的异常构造方法、装置、电子设备及存储介质
US11163801B2 (en) Execution of queries in relational databases
CN112486532A (zh) 配置文件的管理方法、装置、电子设备及存储介质
CN108509328B (zh) 数据库校验方法及装置
CN112100070A (zh) 版本缺陷的检测方法、装置、服务器及存储介质
CN111078671A (zh) 数据表字段的修改方法、装置、设备和介质
CN113051171B (zh) 接口测试方法、装置、设备及存储介质
CN112395119B (zh) 异常数据处理方法、装置、服务器及存储介质
CN110807037B (zh) 一种数据修改方法、装置、电子设备及存储介质
CN114238349A (zh) 数据校验方法、装置、设备及介质
CN114153830B (zh) 数据验证方法及其装置、计算机存储介质、电子设备
CN114595159B (zh) 测试数据生成方法、装置、设备及存储介质
CN113626409B (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
TR01 Transfer of patent right

Effective date of registration: 20231009

Address after: 518057 Tencent Building, No. 1 High-tech Zone, Nanshan District, Shenzhen City, Guangdong Province, 35 floors

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

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

Address before: 518057 Tencent Building, No. 1 High-tech Zone, Nanshan District, Shenzhen City, Guangdong Province, 35 floors

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

TR01 Transfer of patent right