CN116401177B - 一种ddl正确性检测方法、设备及介质 - Google Patents

一种ddl正确性检测方法、设备及介质 Download PDF

Info

Publication number
CN116401177B
CN116401177B CN202310677907.0A CN202310677907A CN116401177B CN 116401177 B CN116401177 B CN 116401177B CN 202310677907 A CN202310677907 A CN 202310677907A CN 116401177 B CN116401177 B CN 116401177B
Authority
CN
China
Prior art keywords
check
sql
database object
task
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
Application number
CN202310677907.0A
Other languages
English (en)
Other versions
CN116401177A (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.)
Highgo Base Software Co ltd
Original Assignee
Highgo Base Software 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 Highgo Base Software Co ltd filed Critical Highgo Base Software Co ltd
Priority to CN202310677907.0A priority Critical patent/CN116401177B/zh
Publication of CN116401177A publication Critical patent/CN116401177A/zh
Application granted granted Critical
Publication of CN116401177B publication Critical patent/CN116401177B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/3604Software analysis for verifying properties of programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/235Update request formulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/2433Query languages
    • G06F16/2445Data retrieval commands; View definitions
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Debugging And Monitoring (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请实施例公开了一种DDL正确性检测方法、设备及介质。属于电数字数据处理技术领域。用于解决对DDL进行正确性判断时效率较低的问题。方法包括,确定出需要校验的数据库对象信息与校验类型;在预置校验点量化表中确定出相应的预置校验点设定信息以生成校验点;基于预置校验点设定信息生成第一sql语句,基于校验类型生成第二sql语句,将第一sql语句与第二sql语句进行拼装生成校验sql;基于历史校验sql数据集对校验sql进行验证;在验证通过的情况下,接收多个DDL语句,通过校验sql对多个DDL语句分别进行校验;若校验正确,对数据库对象信息以及校验sql进行存储,完成对DDL正确性检测。

Description

一种DDL正确性检测方法、设备及介质
技术领域
本申请涉及电数字数据处理技术领域,尤其涉及一种DDL正确性检测方法、设备及介质。
背景技术
DDL(Data Definition Language,数据库模式定义语言),是用于描述数据库中要存储的现实世界实体的语言。DDL限定的范围是对表、字段、约束、索引、序列这几种类型的新增、修改、删除三种数据处理方式。
DDL具有多样性、不稳定性、复杂性等特点。现有技术中,给定场景下在DDL提交后,需要人为对接收到的DDL进行正确性判断。例如在各高校数据库课程中,对于DDL类型问题答案进行正确性判断时,需要先确定出每个答案的语法关键词,再对每个语法关键词进行分析判定。其过程较为复杂,容易出错,且需要对每一个答案逐一进行拆分解析,效率较低。
发明内容
本申请实施例提供了一种DDL正确性检测方法、设备及介质,用于解决如下技术问题:现有技术中对于DDL类型问题答案进行正确性判断时,需要对每一个答案逐一进行解析拆分,效率较低。
本申请实施例采用下述技术方案:
本申请实施例提供一种DDL正确性检测方法。包括,基于当前任务确定出需要校验的数据库对象信息与校验类型;根据数据库对象信息,在预置校验点量化表中确定出相应的预置校验点设定信息,基于预置校验点设定信息生成校验点;基于校验点对应的预置校验点设定信息生成第一sql语句,以及基于校验点对应的校验类型生成第二sql语句,将第一sql语句与第二sql语句进行拼装,以生成校验sql;其中,第一sql语句用于对当前任务对应的数据库对象信息进行查询;第二sql语句用于确定出当前任务对应的数据库对象修改类别;基于历史校验sql数据集对校验sql进行验证;在校验sql验证通过的情况下,接收多个DDL语句,通过校验sql对多个DDL语句分别进行校验;其中,多个DDL语句均与当前任务对应的数据库对象更改情况相关;在校验正确的情况下,确定当前任务与历史任务信息之间的关联关系,基于关联关系对当前任务对应的数据库对象信息以及校验sql进行存储,以完成对DDL正确性检测。
本申请实施例通过第一sql语句与第二sql语句进行拼装,生成校验sql,通过生成校验sql的方式执行校验sql判断对错,提高效率。其次,在校验sql验证通过的情况下,接收多个DDL语句,通过校验sql对多个DDL语句分别进行校验。本申请实施例在接收到大量的DDL语句时,能够通过设置的校验点提取主要元素,根据提取信息生成校验sql,对于大量判定请求明显提高效率。本申请实施例中的校验sql是提取系统表相关信息,即,元数据信息生成的sql,与现有技术中根据解析拆分答案的方式判断对错相比具有简单、准确性高的特点。
在本申请的一种实现方式中,根据数据库对象信息,在预置校验点量化表中确定出相应的预置校验点设定信息,具体包括:基于数据库对象信息中的表名称,在预置校验点量化表中确定出表相关校验点设定信息;和/或,基于数据库对象信息中的字段信息,在预置校验点量化表中确定出字段相关校验点设定信息;和/或,基于数据库对象信息中的索引信息,在预置校验点量化表中确定出索引相关校验点设定信息;和/或,基于数据库对象信息中的约束信息,在预置校验点量化表中确定出约束相关校验点设定信息;和/或,基于数据库对象信息中的序列信息,在预置校验点量化表中确定出序列相关校验点设定信息。
在本申请的一种实现方式中,数据库对象信息中的表信息至少包括表名、表描述信息以及校验类型中的一项;数据库对象信息中的字段信息至少包括字段名、字段描述、字段类型、字段默认值以及校验类型中的一项;数据库对象信息中的索引信息至少包括索引名称、索引字段、索引类型以及校验类型中的一项;数据库对象信息中的约束信息至少包括约束名称、约束字段、约束类型以及校验类型中的一项;数据库对象信息中的序列信息至少包括序列名称、序列所属、序列步长、序列开始值、序列最大值、序列缓存、序列是否循环以及校验类型中的一项。
在本申请的一种实现方式中,基于历史校验sql数据集对校验sql进行验证,具体包括:基于校验点对应的预置校验点设定信息,获取第一历史校验sql数据集;基于校验点对应的校验类型,获取第二历史校验sql数据集;基于预置sql语句相似度度函数,在第一历史校验sql数据集中,确定出与校验sql之间的相似度度大于第一阈值的sql语句的第一数量;基于预置sql语句相似度函数,在第二历史校验sql数据集中,确定出与校验sql之间的相似度大于第二阈值的sql语句的第二数量;在第一数量与第二数量均符合要求的情况下,确定校验sql验证通过。
在本申请的一种实现方式中,基于校验点对应的预置校验点设定信息生成第一sql语句,以及基于校验点对应的校验类型生成第二sql语句,将第一sql语句与第二sql语句进行拼装,以生成校验sql,具体包括:创建参考sql函数;基于参考sql函数与校验点对应的预置校验点设定信息中的参数,生成第一sql语句;在当前任务对应的表存在的情况下,基于校验点对应的校验类型,在预置校验类型数据表中确定出第二sql语句;其中,预置校验类型数据表中包括多种校验类型,以及多种校验类型分别对应的校验sql语句;将第一sql语句、第二sql语句以及当前业务对应的数据库对象名称进行拼装,以得到校验sql。
在本申请的一种实现方式中,生成校验sql之后,方法还包括:基于数据库对象信息,将当前任务对应的多个校验sql划分为多个第一集群;基于校验类型,将每个第一集群进行二次划分,以得到每个第一集群分别对应的多个第二集群;将第一集群中的校验sql与第一集群对应的第二集群中的校验sql进行映射;基于映射规则对不同集群中的校验sql进行合并,并将合并后的校验sql进行存储。
在本申请的一种实现方式中,通过校验sql对多个DDL语句分别进行校验,具体包括:基于当前任务对应的数据库,新建数据库模式;通过校验sql,对多个DDL语句分别对应的任务完成内容进行校验;其中,任务完成内容至少包括对当前任务对应的数据库对象进行修改,修改内容至少包括对数据库对象进行创建表、修改表以及删除表中的一项;在DDL语句对应的任务完成内容与校验sql对应的数据库对象修改内容一致的情况下,确定DDL语句正确;将新建的数据库模式进行删除处理,以完成当前任务对应的DDL校验。
在本申请的一种实现方式中,确定当前任务与历史任务信息之间的关联关系,基于关联关系对当前任务对应的数据库对象信息、校验类型以及校验sql进行存储,具体包括:确定至少两个任务节点中,每个任务节点分别对应的任务数据库对象信息;其中,至少两个任务节点中包括一个当前任务节点;确定每个任务节点分别对应的任务数据库对象信息中分别包含的字段信息,并确定字段信息之间的相似度;根据相似度确定至少两个任务节点间的关联关系,基于关联关系将至少两个任务节点构成第一有向图,并将第一有向图作为任务节点对应的任务执行流程图;在任一数据库对象信息对应多个校验sql的情况下,基于时间戳确定出多个校验sql之间的关联关系,基于关联关系将多个校验sql构成有向图,并将有向图作为数据库对象信息对应的任务执行流程图;基于任务节点对应的任务执行流程图与数据库对象信息对应的任务执行流程图,对DDL正确性检测的任务数据进行存储。
本申请实施例提供一种DDL正确性检测设备,包括:至少一个处理器;以及,与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够:基于当前任务确定出需要校验的数据库对象信息与校验类型;根据数据库对象信息,在预置校验点量化表中确定出相应的预置校验点设定信息,基于预置校验点设定信息生成校验点;基于校验点对应的预置校验点设定信息生成第一sql语句,以及基于校验点对应的校验类型生成第二sql语句,将第一sql语句与第二sql语句进行拼装,以生成校验sql;其中,第一sql语句用于对当前任务对应的数据库对象信息进行查询;第二sql语句用于确定出当前任务对应的数据库对象修改类别;基于历史校验sql数据集对校验sql进行验证;在校验sql验证通过的情况下,接收多个DDL语句,通过校验sql对多个DDL语句分别进行校验;其中,多个DDL语句均与当前任务对应的数据库对象更改情况相关;在校验正确的情况下,确定当前任务与历史任务信息之间的关联关系,基于关联关系对当前任务对应的数据库对象信息以及校验sql进行存储,以完成对DDL正确性检测。
本申请实施例提供的一种非易失性计算机存储介质,存储有计算机可执行指令,计算机可执行指令设置为:基于当前任务确定出需要校验的数据库对象信息与校验类型;根据数据库对象信息,在预置校验点量化表中确定出相应的预置校验点设定信息,基于预置校验点设定信息生成校验点;基于校验点对应的预置校验点设定信息生成第一sql语句,以及基于校验点对应的校验类型生成第二sql语句,将第一sql语句与第二sql语句进行拼装,以生成校验sql;其中,第一sql语句用于对当前任务对应的数据库对象信息进行查询;第二sql语句用于确定出当前任务对应的数据库对象修改类别;基于历史校验sql数据集对校验sql进行验证;在校验sql验证通过的情况下,接收多个DDL语句,通过校验sql对多个DDL语句分别进行校验;其中,多个DDL语句均与当前任务对应的数据库对象更改情况相关;在校验正确的情况下,确定当前任务与历史任务信息之间的关联关系,基于关联关系对当前任务对应的数据库对象信息以及校验sql进行存储,以完成对DDL正确性检测。
本申请实施例采用的上述至少一个技术方案能够达到以下有益效果:本申请实施例通过第一sql语句与第二sql语句进行拼装,生成校验sql,通过生成校验sql的方式执行校验sql判断对错,提高效率。其次,在校验sql验证通过的情况下,接收多个DDL语句,通过校验sql对多个DDL语句分别进行校验。本申请实施例在接收到大量的DDL语句时,能够通过设置的校验点提取主要元素,根据提取信息生成校验sql,对于大量判定请求明显提高效率。本申请实施例中的校验sql是提取系统表相关信息,即,元数据信息生成的sql,与现有技术中根据解析拆分答案的方式判断对错相比具有简单、准确性高的特点。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1为本申请实施例提供的一种DDL正确性检测方法流程图;
图2为本申请实施例提供的一种DDL答案验证示意图;
图3为本申请实施例提供的一种DDL正确性检测设备的结构示意图;
附图标记:
200DDL正确性检测设备,201处理器,202存储器。
具体实施方式
本申请实施例提供一种DDL正确性检测方法、设备及介质。
为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本说明书实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
下面通过附图对本申请实施例提出的技术方案进行详细的说明。
图1为本申请实施例提供的一种DDL正确性检测方法流程图。如图1所示,DDL正确性检测方法包括如下步骤:
步骤101、基于当前任务确定出需要校验的数据库对象信息与校验类型。
在本申请的一个实施例中,获取当前任务请求,根据当前任务请求确定出需要校验的数据库对象信息与校验类型。其中,该数据库对象信息至少包括表、字段、约束、索引、序列中的一项,校验类型至少包括新增、修改以及删除中的一项。
步骤102、根据数据库对象信息,在预置校验点量化表中确定出相应的预置校验点设定信息,基于预置校验点设定信息生成校验点。
在本申请的一个实施例中,基于数据库对象信息中的表名称,在预置校验点量化表中确定出表相关校验点设定信息。和/或,基于数据库对象信息中的字段信息,在预置校验点量化表中确定出字段相关校验点设定信息。和/或,基于数据库对象信息中的索引信息,在预置校验点量化表中确定出索引相关校验点设定信息。和/或,基于数据库对象信息中的约束信息,在预置校验点量化表中确定出约束相关校验点设定信息。和/或,基于数据库对象信息中的序列信息,在预置校验点量化表中确定出序列相关校验点设定信息。
在本申请的一个实施例中,数据库对象信息中的表信息至少包括表名、表描述信息以及校验类型中的一项。数据库对象信息中的字段信息至少包括字段名、字段描述、字段类型、字段默认值以及校验类型中的一项。数据库对象信息中的索引信息至少包括索引名称、索引字段、索引类型以及校验类型中的一项。数据库对象信息中的约束信息至少包括约束名称、约束字段、约束类型以及校验类型中的一项。数据库对象信息中的序列信息至少包括序列名称、序列所属、序列步长、序列开始值、序列最大值、序列缓存、序列是否循环以及校验类型中的一项。
具体地,本申请实施例根据给定任务设定校验点,包括表、字段、索引、约束以及序列相关校验点。表相关DDL校验点分为新增表、修改表以及删除表三种类型,字段相关DDL校验点分为新增字段、修改字段以及删除字段类型,索引相关DDL校验点分为新增索引、修改索引以及删除索引类型,约束相关DDL校验点分为新增约束、修改约束以及删除约束类型,序列相关DDL校验点分为新增序列、修改序列以及删除序列类型。
进一步地,根据设定校验点解析出“表名、表描述、校验类型”并存储到数据表。通过查询预置校验点量化表判断有无表相关校验点设定,有相关校验点,则根据校验点类型新增、删除、修改生成相应的校验sql。
根据设定校验点解析出“字段名、字段描述、字段类型、字段默认值以及校验类型”并存储到数据表,通过查询预置校验点量化表判断有无字段相关校验点设定,有相关校验点,则根据校验点类型新增、删除、修改生成相应的校验sql。
根据设定校验点解析出“索引名称、索引字段、索引类型以及校验类型”并存储到数据表。通过查询预置校验点量化表判断有无索引相关校验点设定,有相关校验点,则根据校验点类型新增、删除、修改生成相应的校验sql。
根据设定校验点解析出“约束名称、约束字段、约束类型以及校验类型”并存储到数据表。通过查询预置校验点量化表判断有无约束相关校验点设定,有相关校验点,则根据校验点类型新增、删删、修改生成相应的校验sql。
根据设定校验点解析出“序列名称、序列所属、序列步长、序列开始值、序列最大值、序列缓存、序列是否循环以及校验类型”并存储到数据表。通过查询预置校验点量化表判断有无序列相关校验点设定,有相关校验点,则根据校验点类型新增、删除、修改生成相应的校验sql。
步骤103、基于校验点对应的预置校验点设定信息生成第一sql语句,以及基于校验点对应的校验类型生成第二sql语句,将第一sql语句与第二sql语句进行拼装,以生成校验sql。第一sql语句用于对当前任务对应的数据库对象信息进行查询;第二sql语句用于确定出当前任务对应的数据库对象修改类别。
在本申请的一个实施例中,创建参考sql函数。基于参考sql函数与校验点对应的预置校验点设定信息中的参数,生成第一sql语句。在当前任务对应的数据库存在的情况下,基于校验点对应的校验类型,在预置校验类型数据表中确定出第二sql语句;其中,预置校验类型数据表中包括多种校验类型,以及多种校验类型分别对应的校验sql语句。将第一sql语句、第二sql语句以及当前业务对应的数据库对象名称进行拼装,以得到校验sql。
具体地,首先创建 PostgreSQL SQL 函数,将校验点对应的预置校验点设定信息中的参数与该 PostgreSQL SQL 函数进行组合,生成第一sql语句。通过该第一sql语句确定出当前任务对的数据库对象是否为真实存在的。在当前任务对应的数据库对象为真实存在的情况下,基于接收到的的当前任务对应的校验类型,在预置校验类型数据表中确定出第二sql语句。该第二sql语句用于对接收到的DDL语句对应的数据库修改类型进行校验。通过将生成的第一sql语句与得到的第二sql语句进行拼装,即可得到该校验sql。
例如,以“表校验”为例说明校验sql的生成过程,首先创建 PostgreSQL SQL 函数,它接受两个参数:表名和表描述。该函数将检查数据库中是否已存在具有相同表名和表描述的表。如果存在,则返回正确值,否则,返回错误原因。基于当前任务类型,在预置校验类型数据表中确定出第二sql语句,该第二sql语句至少可以为创建表、修改表以及删除表中的一项。
本申请实施例通过对sql语句进行拼装,能够通过提取系统表相关信息,即,通过元数据信息生成相应的sql,确保生成的sql语句的准确性。其次,通过执行校验sql方式实现DDL的自动判定,提高对DDL语句检测的效率。与现有技术中通过解析拆分答案的方式判断对错相比具有简单、准确性高的特点。
步骤104、基于历史校验sql数据集对校验sql进行验证。
在本申请的一个实施例中,基于校验点对应的预置校验点设定信息,获取第一历史校验sql数据集,基于校验点对应的校验类型,获取第二历史校验sql数据集。基于预置sql语句相似度度函数,在第一历史校验sql数据集中,确定出与校验sql之间的相似度度大于第一阈值的sql语句的第一数量。基于预置sql语句相似度函数,在第二历史校验sql数据集中,确定出与校验sql之间的相似度大于第二阈值的sql语句的第二数量。在第一数量与第二数量均符合要求的情况下,确定校验sql验证通过。
具体地,在对第一sql语句与第二sql语句进行拼装的过程中,可能会存在拼装错误的情况,即,生成的校验sql存在错误,以致难以对接收到的DDL语句进行准确的检测。因此,在生成校验sql后,需要对生成的校验sql进行检验,当检验通过的情况下,说明该校验sql正确。特别是在接收到大量的DDL语句的情况下,通过验证通过的校验sql对接收到的大量DDL进行校验,能确保大批量数据检验的准确性,提高答案判定的准确性。
具体地,其对校验sql验证的过程为,基于当前校验点对应的预置校验点设定信息,在历史数据库中获取与当前校验点相对应的第一历史校验sql数据集。以及,基于当前任务对应的校验类型,在历史数据库中获取与当前校验点相对应的第二历史校验sql数据集。然后,将获取到的第一历史校验sql数据集中的数据与当前待验证的校验sql进行相似度计算,例如,可以通过余弦相似度计算函数确定出二者之间的相似度。在该第一历史校验sql数据集中,统计数相似度大于第一阈值的sql语句的第一数量。
进一步地,获取到的第二历史校验sql数据集中的数据与当前待验证的校验sql进行相似度计算,例如,可以通过余弦相似度计算函数确定出二者之间的相似度。在该第二历史校验sql数据集中,统计数相似度大于第二阈值的sql语句的第二数量。
进一步地,在该第一数量与该第二数量均符合当前相似度数量要求的情况下,确定当前生成的校验sql验证通过。
步骤105、在校验sql验证通过的情况下,接收多个DDL语句,通过校验sql对多个DDL语句分别进行校验;其中,多个DDL语句均与当前任务对应的数据库对象更改情况相关。
在本申请的一个实施例中,基于数据库对象信息,将当前任务对应的多个校验sql划分为多个第一集群。基于校验类型,将每个第一集群进行二次划分,以得到每个第一集群分别对应的多个第二集群。将第一集群中的校验sql与第一集群对应的第二集群中的校验sql进行映射。基于映射规则对不同集群中的校验sql进行合并,并将合并后的校验sql进行存储。
具体地,根据数据库对象信息,将当前任务对应的校验sql进行划分,以得到多个第一集群,例如,将表信息对应的校验sql划分到一个集群,将字段信息对应的校验sql划分至一个集群。其次,每个集群中的校验sql还对应不同的校验类型,基于校验类型的不同,将每个第一集群中的校验sql进行二次划分。例如,选定表信息对应的第一集群,将该第一集群中属于表删除类型的校验sql划分至一个集群,将属于表修改类型的校验sql划分至一个集群,从而得到该选定的第一集群所对应的一个或多个第二集群。将第一集群与该第一集群对应的一个或多个第二集群进行映射,并根据映射规则,以text类型将不同的校验sql进行映射存储。
在本申请的一个实施例中,基于当前任务对应的数据库,新建数据库模式。通过校验sql,对多个DDL语句分别对应的任务完成内容进行校验;其中,任务完成内容至少包括对当前任务对应的数据库对象进行修改,修改内容至少包括对数据库对象进行创建、修改以及删除中的一项。在DDL语句对应的任务完成内容与校验sql对应的数据库对象修改内容一致的情况下,确定DDL语句正确。将新建的数据库模式进行删除处理,以完成当前任务对应的DDL校验。
具体地,图2为本申请实施例提供的一种DDL答案验证示意图,如图2所示,在对接收到的批量DDL语句进行校验时,基于时间戳新建数据库模式,在该新建的数据库模式下,通过校验sql对收到的批量DDL语句进行校验。即,对当前接收到的DDL语句对应的数据库对象以及修改类型进行正确性检测。在DDL语句对应的数据库对象及修改类型,与当前校验sql对应的数据库对象及修改类型一致的情况下,确定当前检测的DDL语句这正确。此时将当前新建的数据库模式进行删除处理。
本申请实施例通过在新模式中执行sql,其数据均为隔离状态,在新建模式下执行sql可以保证数据不会被篡改,从而提高执行sql的安全性。
本申请实施例通过生成的校验sql对接收到的批量DDL语句进行检测,无需对每个DDL进行解析拆分,通过构建的校验sql批量式的对DDL语句进行检测,可以提高语句检测的效率。同时,还可以降低由于人工检测原因导致的及时性不高、正确率不稳定以及人力成本高的问题。
步骤106、在校验正确的情况下,确定当前任务与历史任务信息之间的关联关系,基于关联关系对当前任务对应的数据库对象信息以及校验sql进行存储,以完成对DDL正确性检测。
在本申请的一个实施例中,确定两个任务节点中,每个任务节点分别对应的任务数据库对象信息;其中,至少两个任务节点中包括一个当前任务节点。确定每个任务节点分别对应的任务数据库对象信息中分别包含的字段信息,并确定字段信息之间的相似度。根据相似度确定至少两个任务节点间的关联关系,基于关联关系将至少两个任务节点构成第一有向图,并将第一有向图作为任务节点对应的任务执行流程图。在任一数据库对象信息对应多个校验sql的情况下,基于时间戳确定出多个校验sql之间的关联关系,基于关联关系将多个校验sql构成有向图,并将有向图作为数据库对象信息对应的任务执行流程图。基于任务节点对应的任务执行流程图与数据库对象信息对应的任务执行流程图,对DDL正确性检测的任务数据进行存储。
具体地,在对当前任务对应的DDL进行检测后,为了便于后续任务对应的校验sql语句的生成,将当前已完成任务所对应的数据进行存储,在后续接收到相似的检测任务的情况下,可以基于该已完成的任务所对应的数据快速生成校验sql,从而提高DDL检测效率。
进一步地,其存储过程为,将当前任务作为一个任务节点,在已完成任务中确定出一个或多个节点。确定出当前任务对应的任务数据库对象信息,以及确定出选定的多个历史任务节点对应的任务数据库对象信息。将确定出的不同任务数据库中的字段信息进行相似度计算,基于相似度的高低确定出当前任务节点与历史任务节点之间的关联关系的高低。并基于该关联关系的高低对多个不同的任务节点构建第一有向图,以将该第一有向图作为任务节点对应的任务执行流程图。例如,将不同节点按相似度从高至低的方式对多个任务节点进行有向图构建。
进一步地,若当前任务节点对应的一个数据库对象对应有多个校验sql,则基于各个校验sql生成的时间戳先后顺序,构建该多个校验sql所对应的有向图,并将该有向图作为该数据库对象信息对应的任务执行流程图。
进一步地,基于当前任务节点对应的任务执行流程图与数据库对象信息对应的任务执行流程图,对DDL正确性检测的任务数据进行存储。
通过历史任务节点进行关联度计算,并基于该关联度进行存储,能够将关联度较高的任务节点所对应的数据存放至一起,从而在获取到该类型的检测任务的情况下,能够快速确定出相似的历史任务数据,进而快速生成相应的校验sql。
图3为本申请实施例提供的一种DDL正确性检测设备的结构示意图。如图3所示,DDL正确性检测设备200,包括:至少一个处理器201;以及,与至少一个处理器201通信连接的存储器202;其中,存储器202存储有可被至少一个处理器201执行的指令,指令被至少一个处理器201执行,以使至少一个处理器201能够:基于当前任务确定出需要校验的数据库对象信息与校验类型;根据数据库对象信息,在预置校验点量化表中确定出相应的预置校验点设定信息,基于预置校验点设定信息生成校验点;基于校验点对应的预置校验点设定信息生成第一sql语句,以及基于校验点对应的校验类型生成第二sql语句,将第一sql语句与第二sql语句进行拼装,以生成校验sql;其中,第一sql语句用于对当前任务对应的数据库对象信息进行查询;第二sql语句用于确定出当前任务对应的数据库对象修改类别;基于历史校验sql数据集对校验sql进行验证;在校验sql验证通过的情况下,接收多个DDL语句,通过校验sql对多个DDL语句分别进行校验;其中,多个DDL语句均与当前任务对应的数据库对象更改情况相关;在校验正确的情况下,确定当前任务与历史任务信息之间的关联关系,基于关联关系对当前任务对应的数据库对象信息以及校验sql进行存储,以完成对DDL正确性检测。
本申请实施例还提供一种非易失性计算机存储介质,存储有计算机可执行指令,计算机可执行指令设置为:基于当前任务确定出需要校验的数据库对象信息与校验类型;根据数据库对象信息,在预置校验点量化表中确定出相应的预置校验点设定信息,基于预置校验点设定信息生成校验点;基于校验点对应的预置校验点设定信息生成第一sql语句,以及基于校验点对应的校验类型生成第二sql语句,将第一sql语句与第二sql语句进行拼装,以生成校验sql;其中,第一sql语句用于对当前任务对应的数据库对象信息进行查询;第二sql语句用于确定出当前任务对应的数据库对象修改类别;基于历史校验sql数据集对校验sql进行验证;在校验sql验证通过的情况下,接收多个DDL语句,通过校验sql对多个DDL语句分别进行校验;其中,多个DDL语句均与当前任务对应的数据库对象更改情况相关;在校验正确的情况下,确定当前任务与历史任务信息之间的关联关系,基于关联关系对当前任务对应的数据库对象信息以及校验sql进行存储,以完成对DDL正确性检测。
本申请中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、设备、非易失性计算机存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请的实施例可以有各种更改和变化。而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

Claims (7)

1.一种DDL正确性检测方法,其特征在于,所述方法包括:
基于当前任务确定出需要校验的数据库对象信息与校验类型;其中,所述校验类型至少包括新增、修改以及删除中的一项;
根据所述数据库对象信息,在预置校验点量化表中确定出相应的预置校验点设定信息,基于所述预置校验点设定信息生成校验点;
基于校验点对应的所述预置校验点设定信息生成第一sql语句,以及基于所述校验点对应的校验类型生成第二sql语句,将所述第一sql语句与所述第二sql语句进行拼装,以生成校验sql;其中,所述第一sql语句用于对当前任务对应的数据库对象信息进行查询;所述第二sql语句用于确定出当前任务对应的数据库对象修改类别;
基于历史校验sql数据集对所述校验sql进行验证;
在所述校验sql验证通过的情况下,接收多个DDL语句,通过所述校验sql对所述多个DDL语句分别进行校验;其中,所述多个DDL语句均与当前任务对应的数据库对象更改情况相关;
在校验正确的情况下,确定当前任务与历史任务信息之间的关联关系,基于所述关联关系对当前任务对应的数据库对象信息以及校验sql进行存储,以完成对DDL正确性检测;
所述基于校验点对应的所述预置校验点设定信息生成第一sql语句,以及基于所述校验点对应的校验类型生成第二sql语句,将所述第一sql语句与所述第二sql语句进行拼装,以生成校验sql,具体包括:
创建参考sql函数;
基于所述参考sql函数与所述校验点对应的预置校验点设定信息中的参数,生成第一sql语句;
在所述当前任务对应的数据库存在的情况下,基于所述校验点对应的校验类型,在预置校验类型数据表中确定出第二sql语句;其中,所述预置校验类型数据表中包括多种校验类型,以及所述多种校验类型分别对应的校验sql语句;
将所述第一sql语句、所述第二sql语句以及当前业务对应的数据库对象名称进行拼装,以得到所述校验sql;
所述基于历史校验sql数据集对所述校验sql进行验证,具体包括:
基于校验点对应的所述预置校验点设定信息,获取第一历史校验sql数据集;
基于所述校验点对应的校验类型,获取第二历史校验sql数据集;
基于预置sql语句相似度度函数,在所述第一历史校验sql数据集中,确定出与所述校验sql之间的相似度度大于第一阈值的sql语句的第一数量;
基于预置sql语句相似度函数,在所述第二历史校验sql数据集中,确定出与所述校验sql之间的相似度大于第二阈值的sql语句的第二数量;
在所述第一数量与所述第二数量均符合要求的情况下,确定所述校验sql验证通过;
所述通过所述校验sql对所述多个DDL语句分别进行校验,具体包括:
基于当前任务对应的数据库,新建数据库模式;
通过所述校验sql,对多个所述DDL语句分别对应的任务完成内容进行校验;其中,所述任务完成内容至少包括对当前任务对应的数据库对象进行修改,修改内容至少包括对所述数据库对象进行创建、修改以及删除中的一项;
在所述DDL语句对应的任务完成内容与所述校验sql对应的数据库对象修改内容一致的情况下,确定所述DDL语句正确;
将新建的数据库模式进行删除处理,以完成当前任务对应的DDL校验。
2.根据权利要求1所述的一种DDL正确性检测方法,其特征在于,所述根据所述数据库对象信息,在预置校验点量化表中确定出相应的预置校验点设定信息,具体包括:
基于所述数据库对象信息中的表信息,在预置校验点量化表中确定出表相关校验点设定信息;
和/或,基于所述数据库对象信息中的字段信息,在预置校验点量化表中确定出字段相关校验点设定信息;
和/或,基于所述数据库对象信息中的索引信息,在预置校验点量化表中确定出索引相关校验点设定信息;
和/或,基于所述数据库对象信息中的约束信息,在预置校验点量化表中确定出约束相关校验点设定信息;
和/或,基于所述数据库对象信息中的序列信息,在预置校验点量化表中确定出序列相关校验点设定信息。
3.根据权利要求2所述的一种DDL正确性检测方法,其特征在于,所述数据库对象信息中的表信息至少包括表名、表描述信息以及校验类型中的一项;
所述数据库对象信息中的字段信息至少包括字段名、字段描述、字段类型、字段默认值以及校验类型中的一项;
所述数据库对象信息中的索引信息至少包括索引名称、索引字段、索引类型以及校验类型中的一项;
所述数据库对象信息中的约束信息至少包括约束名称、约束字段、约束类型以及校验类型中的一项;
所述数据库对象信息中的序列信息至少包括序列名称、序列所属、序列步长、序列开始值、序列最大值、序列缓存、序列是否循环以及校验类型中的一项。
4.根据权利要求1所述的一种DDL正确性检测方法,其特征在于,所述生成校验sql之后,所述方法还包括:
基于所述数据库对象信息,将当前任务对应的多个校验sql划分为多个第一集群;
基于所述校验类型,将每个所述第一集群进行二次划分,以得到每个所述第一集群分别对应的多个第二集群;
将所述第一集群中的校验sql与所述第一集群对应的第二集群中的校验sql进行映射;
基于映射规则对不同集群中的校验sql进行合并,并将合并后的校验sql进行存储。
5.根据权利要求1所述的一种DDL正确性检测方法,其特征在于,所述确定当前任务与历史任务信息之间的关联关系,基于所述关联关系对当前任务对应的数据库对象信息、校验类型以及校验sql进行存储,具体包括:
确定至少两个任务节点中,每个任务节点分别对应的任务数据库对象信息;其中,所述至少两个任务节点中包括一个当前任务节点;
确定所述每个任务节点分别对应的任务数据库对象信息中分别包含的字段信息,并确定所述字段信息之间的相似度;
根据所述相似度确定所述至少两个任务节点间的关联关系,基于所述关联关系将所述至少两个任务节点构成第一有向图,并将所述第一有向图作为任务节点对应的任务执行流程图;
在任一数据库对象信息对应多个校验sql的情况下,基于时间戳确定出所述多个校验sql之间的关联关系,基于所述关联关系将所述多个校验sql构成有向图,并将所述有向图作为所述数据库对象信息对应的任务执行流程图;
基于所述任务节点对应的任务执行流程图与所述数据库对象信息对应的任务执行流程图,对DDL正确性检测的任务数据进行存储。
6.一种DDL正确性检测设备,其特征在于,该设备包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发该设备执行权利要求1-5中的任一项所述的方法。
7.一种非易失性计算机存储介质,存储有计算机可执行指令,其特征在于,所述计算机可执行指令能够执行权利要求1-5任一项所述的方法。
CN202310677907.0A 2023-06-09 2023-06-09 一种ddl正确性检测方法、设备及介质 Active CN116401177B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310677907.0A CN116401177B (zh) 2023-06-09 2023-06-09 一种ddl正确性检测方法、设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310677907.0A CN116401177B (zh) 2023-06-09 2023-06-09 一种ddl正确性检测方法、设备及介质

Publications (2)

Publication Number Publication Date
CN116401177A CN116401177A (zh) 2023-07-07
CN116401177B true CN116401177B (zh) 2023-08-15

Family

ID=87014676

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310677907.0A Active CN116401177B (zh) 2023-06-09 2023-06-09 一种ddl正确性检测方法、设备及介质

Country Status (1)

Country Link
CN (1) CN116401177B (zh)

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107797916A (zh) * 2016-11-14 2018-03-13 平安科技(深圳)有限公司 Ddl语句审核方法和装置
CN111400297A (zh) * 2020-03-19 2020-07-10 上海德拓信息技术股份有限公司 基于Hadoop的海量数据数据质量校验方法
CN112328624A (zh) * 2020-11-06 2021-02-05 瀚高基础软件股份有限公司 一种sql转发方法、装置及可读存储介质
CN113051923A (zh) * 2021-04-22 2021-06-29 平安普惠企业管理有限公司 数据验证方法、装置、计算机设备和存储介质
CN113297028A (zh) * 2021-03-18 2021-08-24 中国平安人寿保险股份有限公司 一种脚本执行方法、装置、计算机设备及存储介质
CN114048227A (zh) * 2021-11-23 2022-02-15 北京天融信网络安全技术有限公司 Sql语句异常检测方法、装置、设备及存储介质
CN114153461A (zh) * 2021-12-07 2022-03-08 深圳前海微众银行股份有限公司 一种脚本处理方法、装置、电子设备及存储介质
CN114968346A (zh) * 2022-05-26 2022-08-30 平安普惠企业管理有限公司 Ddl脚本的字段注释检测方法、装置、设备及存储介质
CN115658731A (zh) * 2022-10-25 2023-01-31 广州文远知行科技有限公司 一种数据查询方法、装置、设备和存储介质
CN115840589A (zh) * 2022-11-21 2023-03-24 焦点科技股份有限公司 一种支持异构分布式数据库的发布方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8010522B2 (en) * 2007-12-07 2011-08-30 International Business Machines Corporation System, method and program product for detecting SQL queries injected into data fields of requests made to applications
CN102541966A (zh) * 2010-12-30 2012-07-04 国际商业机器公司 用于验证数据库系统正确性的方法和装置
US10331664B2 (en) * 2011-09-23 2019-06-25 Hartford Fire Insurance Company System and method of insurance database optimization using social networking

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107797916A (zh) * 2016-11-14 2018-03-13 平安科技(深圳)有限公司 Ddl语句审核方法和装置
CN111400297A (zh) * 2020-03-19 2020-07-10 上海德拓信息技术股份有限公司 基于Hadoop的海量数据数据质量校验方法
CN112328624A (zh) * 2020-11-06 2021-02-05 瀚高基础软件股份有限公司 一种sql转发方法、装置及可读存储介质
CN113297028A (zh) * 2021-03-18 2021-08-24 中国平安人寿保险股份有限公司 一种脚本执行方法、装置、计算机设备及存储介质
CN113051923A (zh) * 2021-04-22 2021-06-29 平安普惠企业管理有限公司 数据验证方法、装置、计算机设备和存储介质
CN114048227A (zh) * 2021-11-23 2022-02-15 北京天融信网络安全技术有限公司 Sql语句异常检测方法、装置、设备及存储介质
CN114153461A (zh) * 2021-12-07 2022-03-08 深圳前海微众银行股份有限公司 一种脚本处理方法、装置、电子设备及存储介质
CN114968346A (zh) * 2022-05-26 2022-08-30 平安普惠企业管理有限公司 Ddl脚本的字段注释检测方法、装置、设备及存储介质
CN115658731A (zh) * 2022-10-25 2023-01-31 广州文远知行科技有限公司 一种数据查询方法、装置、设备和存储介质
CN115840589A (zh) * 2022-11-21 2023-03-24 焦点科技股份有限公司 一种支持异构分布式数据库的发布方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
贾国芳 ; .通用数据接口装配件的设计与应用.计算机工程与设计.2009,(第21期),全文. *

Also Published As

Publication number Publication date
CN116401177A (zh) 2023-07-07

Similar Documents

Publication Publication Date Title
US20230281012A1 (en) Systems and methods for automating and monitoring software development operations
US20190197174A1 (en) Method and system for replicating data to heterogeneous database and detecting synchronization error of heterogeneous database through sql packet analysis
CN110569214B (zh) 用于日志文件的索引构建方法、装置及电子设备
US8904352B2 (en) Systems and methods for processing source code during debugging operations
CN111459698A (zh) 一种数据库集群故障自愈方法及装置
CN112416778A (zh) 测试用例推荐方法、装置和电子设备
CN112328499A (zh) 一种测试数据生成方法、装置、设备及介质
CN114185791A (zh) 一种数据映射文件的测试方法、装置、设备及存储介质
CN113312258A (zh) 一种接口测试方法、装置、设备及存储介质
CN116401177B (zh) 一种ddl正确性检测方法、设备及介质
CN109508204B (zh) 一种前端代码质量检测方法及装置
CN110580170A (zh) 软件性能风险的识别方法及装置
CN115422180A (zh) 数据校验方法及系统
CN114356454A (zh) 对账数据处理方法、设备、存储介质及程序产品
CN113377801A (zh) 数据检验方法、装置、电子设备及计算机存储介质
CN113868141A (zh) 数据测试方法、装置、电子设备及存储介质
CN113095794A (zh) 基于马尔科夫链的生产问题检查方法及装置
CN113901094B (zh) 一种数据处理方法、装置、设备及存储介质
CN116755684B (zh) OAS Schema的生成方法、装置、设备及介质
CN111221846B (zh) 一种sql语句的自动翻译方法及装置
US11347722B2 (en) Big data regression verification method and big data regression verification apparatus
CN114116729B (zh) 一种测试数据的处理方法和设备
CN108509328B (zh) 数据库校验方法及装置
Ardiansyah et al. Functional Correctness Analysis for Judiciary Office’s Case Administration Application using PHPUnit
CN115543836A (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