掌桥专利:专业的专利平台
掌桥专利
首页

一种自动关联的SQL查询语句处理方法、装置和电子设备

文献发布时间:2023-06-19 12:22:51


一种自动关联的SQL查询语句处理方法、装置和电子设备

技术领域

本申请涉及计算机领域,尤其涉及一种自动关联的SQL查询语句处理方法、装置和电子设备。

背景技术

数据的处理依托于对利用SQL查询语句对数据表进行处理,目前建立SQL查询语句的方式,多是人工进行,通过人为分析数据库表的查询关系来构造SQ L查询语句,以便后续提供数据处理服务。然而这种处理方式需要消耗大量人力,尤其在涉及多级数据表查询关系的情况下更是如此。

因此,有必要提供一种新的方法,以提高SQL查询语句处理效率。

对现有技术进行分析发现,在构造SQL查询语句时,需要开发人员选取待多个对象,根据多个对象之间的函数关系及各自所处的位置来构建索语句。如果在用户选取对象后,后台能够自动形成相应的SQL查询语句,则能够大大提高处理效率。

发明内容

本说明书实施例提供一种自动关联的SQL查询语句处理方法、装置和电子设备,用以提高处理效率。

本说明书实施例提供一种自动关联的SQL查询语句处理方法,包括

通过批量数据同步的方式将多源系统的执行日志信息采集到对象关联系统中;

利用血缘关系解析模块对所述执行日志信息中的对象进行血缘关系的解析,根据解析出的血缘关系搭建语法树;

按照语法树的结构将其中的对象存储到图数据库中,图数据库中存储有对象节点和节点间血缘关系;

向用户提供自动关联模块,确定用户选取的待关联的对象,在图数据库中查询待关联的对象之间的血缘关系,生成SQL查询语句。

可选地,所述执行日志信息,包括:

多源系统的系统日志、数据库中SQL执行日志、SQL查询语句脚本;

还包括,采集多源系统数据库中的元数据和业务数据。

可选地,所述利用血缘关系解析模块对所述执行日志信息中的对象进行血缘关系的解析,包括:

抽取日志中的SQL片段,生成数据访问者,遍历抓取SQL片段中的字段及字段别名,多线程并行获取抓取到的字段所属源表的表名及表别名集合;

获取非独立表名集合,进行别名替换,以替换表名后SQL片段记录血缘关系。

可选地,所述进行别名替换,包括:

若抓取出的字段为关联查询或子查询,则根据查询层级关系按照层级查找目标字段,对目标字段进行别名替换。

可选地,还包括:

利用预先构建的自然语言处理规则验证待关联的对象之间的匹配度和血缘关系。

可选地,所述对象包括表中字段。

可选地,所述血缘关系包括父子关系。

可选地,还包括:

将生成SQL查询语句提交至数据库,接收到查询指令时进行查询。

可选地,所述根据解析出的血缘关系搭建语法树,包括:

在相邻层级搭建语法树节点,所述待关联的对象跨越语法树的多个层级。

本说明书实施例还提供一种自动关联的SQL查询语句处理模块,包括

采集模块,通过批量数据同步的方式将多源系统的执行日志信息采集到对象关联系统中;

解析模块,利用血缘关系解析模块对所述执行日志信息中的对象进行血缘关系的解析,根据解析出的血缘关系搭建语法树;

存储模块,按照语法树的结构将其中的对象存储到图数据库中,图数据库中存储有对象节点和节点间血缘关系;

自动关联模块,向用户提供自动关联模块,确定用户选取的待关联的对象,在图数据库中查询待关联的对象之间的血缘关系,生成SQL查询语句。

本说明书实施例还提供一种电子设备,其中,该电子设备包括:

处理器;以及,

存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行上述任一项方法。

本说明书实施例还提供一种计算机可读存储介质,其中,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被处理器执行时,实现上述任一项方法。

本说明书实施例提供的各种技术方案通过批量数据同步的方式将多源系统的执行日志信息采集到对象关联系统中,对执行日志信息中的对象进行血缘关系的解析,根据解析出的血缘关系搭建语法树,按照语法树的结构将其中的对象存储到图数据库中,图数据库中存储有对象节点和节点间血缘关系,向用户提供自动关联模块,确定用户选取的待关联的对象,在图数据库中查询待关联的对象之间的血缘关系,生成SQL查询语句。由于能够借助利用执行日志解析出的表关系自动查询待关联的对象之间的血缘关系,自动关联生成SQL查询语句,减少了数据库开发人员的分析工作,自动根据开发人员的选择生成所需的SQL开发脚本,提高了处理效率,降低了错误率。

附图说明

此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:

图1为本说明书实施例提供的一种自动关联的SQL查询语句处理方法的原理示意图;

图2为本说明书实施例提供的一种自动关联的SQL查询语句处理装置的结构示意图;

图3为本说明书实施例提供的一种电子设备的结构示意图;

图4为本说明书实施例提供的一种计算机可读介质的原理示意图。

具体实施方式

现在将参考附图更全面地描述本发明的示例性实施例。然而,示例性实施例能够以多种形式实施,且不应被理解为本发明仅限于在此阐述的实施例。相反,提供这些示例性实施例能够使得本发明更加全面和完整,更加便于将发明构思全面地传达给本领域的技术人员。在图中相同的附图标记表示相同或类似的元件、组件或部分,因而将省略对它们的重复描述。

在符合本发明的技术构思的前提下,在某个特定的实施例中描述的特征、结构、特性或其他细节不排除可以以合适的方式结合在一个或更多其他的实施例中。

在对于具体实施例的描述中,本发明描述的特征、结构、特性或其他细节是为了使本领域的技术人员对实施例进行充分理解。但是,并不排除本领域技术人员可以实践本发明的技术方案而没有特定特征、结构、特性或其他细节的一个或更多。

附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。

附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。

术语“和/或”或者“及/或”包括相关联的列出项目中的任一个或多者的所有组合。

图1为本说明书实施例提供的一种自动关联的SQL查询语句处理方法的原理示意图,该方法可以包括:

S101:通过批量数据同步的方式将多源系统的执行日志信息采集到对象关联系统中。

考虑到数据系统中已经有程序执行了查询更新操作,因而,如果能利用到这些现有的程序,在已有的表关系上识别新的表关系,便能够自动生成具有表关系的SQL查询语句。

然而直接获取这些程序意义不大,因为既然是新创建的SQL查询语句,那么肯定有所改动,但是这些程序背后所体现的表关系,如果加以利用,则能够用来生成新的SQL查询语句。

所以,我们需要还原出表关系。

我们可以通过分析这些现有程序的取数过程,对这些程序的数据查询过程进行跟踪分析,就能快速找出数据库表关系。

具体的,在本说明书实施例中,所述执行日志信息,包括:

多源系统的系统日志、数据库中SQL执行日志、SQL查询语句脚本;

还可以采集多源系统数据库中的元数据和业务数据。

SQL跟踪工具属于现有技术在此不再进行详细阐述。

之后,便可以以跟踪到的SQL执行序列为线索,提取出数据库表关联关系。

S102:利用血缘关系解析模块对所述执行日志信息中的对象进行血缘关系的解析,根据解析出的血缘关系搭建语法树。

在本说明书实施例中,所述利用血缘关系解析模块对所述执行日志信息中的对象进行血缘关系的解析,包括:

抽取日志中的SQL片段,生成数据访问者,遍历抓取SQL片段中的字段及字段别名,多线程并行获取抓取到的字段所属源表的表名及表别名集合;

获取非独立表名集合,进行别名替换,以替换表名后SQL片段记录血缘关系。

其中非独立表名是指与其他数据表具有所以或被查询关系的数据表。

其中,数据访问者可以包括遍历指令和对应的数据存储空间,比如堆栈。

在本说明书实施例中,所述进行别名替换,包括:

若抓取出的字段为关联查询或子查询,则根据查询层级关系按照层级查找目标字段,对目标字段进行别名替换。

别名替换是指以真实表名替换别名。

在本说明书实施例中,还包括:

利用预先构建的自然语言处理规则验证待关联的对象之间的匹配度和血缘关系。

通过血缘分析算法有效的保证了对象(表)之间血缘关系的正确性,并通过NLP(自然语言处理规则)加以验证,能有效避免造成血缘关系的错误解析。

在本说明书实施例中,所述对象包括表中字段。

在本说明书实施例中,所述血缘关系可以包括父子关系。

在本说明书实施例中,所述根据解析出的血缘关系搭建语法树,包括:

在相邻层级搭建语法树节点,所述待关联的对象跨越语法树的多个层级。

在实际实施时,先获取日志中的SQL片段,生成抽象语法数据访问者,然后遍历(递归)抓取SQL语句中的字段及字段别名,再并行递归获取来源单表的表名及别名集合,之后进行判断,获取非独立表名集合,如果来源字段为复杂关联查询或子查询,则进入子查询层级关系集合中递归查找到最终目标字段后再进行别名替换,如果来源字段为最外层关联的独立单表表别名时就直接替换为真实表名,最终得到表、字段及表之间的血缘关系。

S103:按照语法树的结构将其中的对象存储到图数据库中,图数据库中存储有对象节点和节点间血缘关系。

在本说明书实施例中,我们可以仿照血缘的关系,对语法树中的节点进行命名,具有直接查询或被查询关系的节点的血缘关系为父子关系,具有间接查询或被查询关系的节点为祖孙关系,除了直系血缘关系,还可以具有旁系血缘关系,在此不做详细阐述。

执行日志中的SQL查询语句可能只涉及父子血缘关系,但是通过搭建语法树,我们就能够联合多个SQL查询语句形成祖孙血缘关系,进而直接生成关联方式为祖孙血缘关系的SQL查询语句。

可见,这种方式能够有效利用现有执行日志所体现的表关系,生成复杂关联的SQL查询语句。

S104:向用户提供自动关联模块,确定用户选取的待关联的对象,在图数据库中查询待关联的对象之间的血缘关系,生成SQL查询语句。

通过批量数据同步的方式将多源系统的执行日志信息采集到对象关联系统中,对执行日志信息中的对象进行血缘关系的解析,根据解析出的血缘关系搭建语法树,按照语法树的结构将其中的对象存储到图数据库中,图数据库中存储有对象节点和节点间血缘关系,向用户提供自动关联模块,确定用户选取的待关联的对象,在图数据库中查询待关联的对象之间的血缘关系,生成SQL查询语句。由于能够借助利用执行日志解析出的表关系自动查询待关联的对象之间的血缘关系,自动关联生成SQL查询语句,减少了数据库开发人员的分析工作,自动根据开发人员的选择生成所需的SQL开发脚本,提高了处理效率,降低了错误率。

当然,在本说明书实施例中,该方法还可以包括:

将生成SQL查询语句提交至数据库,接收到查询指令时进行查询。

图2为本说明书实施例提供的一种自动关联的SQL查询语句处理装置的结构示意图,该装置可以包括:

采集模块201,通过批量数据同步的方式将多源系统的执行日志信息采集到对象关联系统中;

解析模块202,利用血缘关系解析模块对所述执行日志信息中的对象进行血缘关系的解析,根据解析出的血缘关系搭建语法树;

存储模块203,按照语法树的结构将其中的对象存储到图数据库中,图数据库中存储有对象节点和节点间血缘关系;

自动关联模块204,向用户提供自动关联模块,确定用户选取的待关联的对象,在图数据库中查询待关联的对象之间的血缘关系,生成SQL查询语句。

在本说明书实施例中,所述执行日志信息,包括:

多源系统的系统日志、数据库中SQL执行日志、SQL查询语句脚本;

还包括,采集多源系统数据库中的元数据和业务数据。

在本说明书实施例中,所述利用血缘关系解析模块对所述执行日志信息中的对象进行血缘关系的解析,包括:

抽取日志中的SQL片段,生成数据访问者,遍历抓取SQL片段中的字段及字段别名,多线程并行获取抓取到的字段所属源表的表名及表别名集合;

获取非独立表名集合,进行别名替换,以替换表名后SQL片段记录血缘关系。

在本说明书实施例中,所述进行别名替换,包括:

若抓取出的字段为关联查询或子查询,则根据查询层级关系按照层级查找目标字段,对目标字段进行别名替换。

在本说明书实施例中,还包括:

利用预先构建的自然语言处理规则验证待关联的对象之间的匹配度和血缘关系。

在本说明书实施例中,所述对象包括表中字段。

在本说明书实施例中,所述血缘关系包括父子关系。

在本说明书实施例中,还包括:

将生成SQL查询语句提交至数据库,接收到查询指令时进行查询。

在本说明书实施例中,所述根据解析出的血缘关系搭建语法树,可以包括:

在相邻层级搭建语法树节点,所述待关联的对象跨越语法树的多个层级。

该装置通过批量数据同步的方式将多源系统的执行日志信息采集到对象关联系统中,对执行日志信息中的对象进行血缘关系的解析,根据解析出的血缘关系搭建语法树,按照语法树的结构将其中的对象存储到图数据库中,图数据库中存储有对象节点和节点间血缘关系,向用户提供自动关联模块,确定用户选取的待关联的对象,在图数据库中查询待关联的对象之间的血缘关系,生成SQL查询语句。由于能够借助利用执行日志解析出的表关系自动查询待关联的对象之间的血缘关系,自动关联生成SQL查询语句,减少了数据库开发人员的分析工作,自动根据开发人员的选择生成所需的SQL开发脚本,提高了处理效率,降低了错误率。

基于同一发明构思,本说明书实施例还提供一种电子设备。

下面描述本发明的电子设备实施例,该电子设备可以视为对于上述本发明的方法和装置实施例的具体实体实施方式。对于本发明电子设备实施例中描述的细节,应视为对于上述方法或装置实施例的补充;对于在本发明电子设备实施例中未披露的细节,可以参照上述方法或装置实施例来实现。

图3为本说明书实施例提供的一种电子设备的结构示意图。下面参照图3来描述根据本发明该实施例的电子设备300。图3显示的电子设备300仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。

如图3所示,电子设备300以通用计算设备的形式表现。电子设备300的组件可以包括但不限于:至少一个处理单元310、至少一个存储单元320、连接不同系统组件(包括存储单元320和处理单元310)的总线330、显示单元340等。

其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元310执行,使得所述处理单元310执行本说明书上述处理方法部分中描述的根据本发明各种示例性实施方式的步骤。例如,所述处理单元310可以执行如图1所示的步骤。

所述存储单元320可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)3201和/或高速缓存存储单元3202,还可以进一步包括只读存储单元(ROM)3203。

所述存储单元320还可以包括具有一组(至少一个)程序模块3205的程序/实用工具3204,这样的程序模块3205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。

总线330可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。

电子设备300也可以与一个或多个外部设备400(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备300交互的设备通信,和/或与使得该电子设备300能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口350进行。并且,电子设备300还可以通过网络适配器360与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。网络适配器360可以通过总线330与电子设备300的其它模块通信。应当明白,尽管图3中未示出,可以结合电子设备300使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAI D系统、磁带驱动器以及数据备份存储系统等。

通过以上的实施方式的描述,本领域的技术人员易于理解,本发明描述的示例性实施例可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本发明实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个计算机可读的存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、或者网络设备等)执行根据本发明的上述方法。当所述计算机程序被一个数据处理设备执行时,使得该计算机可读介质能够实现本发明的上述方法,即:如图1所示的方法。

图4为本说明书实施例提供的一种计算机可读介质的原理示意图。

实现图1所示方法的计算机程序可以存储于一个或多个计算机可读介质上。计算机可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。

所述计算机可读存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读存储介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。

可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。

综上所述,本发明可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)等通用数据处理设备来实现根据本发明实施例中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。

以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,应理解的是,本发明不与任何特定计算机、虚拟装置或者电子设备固有相关,各种通用装置也可以实现本发明。以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。

以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

相关技术
  • 一种自动关联的SQL查询语句处理方法、装置和电子设备
  • 一种MySQL慢查询语句自动优化方法、计算机设备和存储介质
技术分类

06120113270224