CN116166700A - 查询方法、装置、系统、电子设备及存储介质 - Google Patents

查询方法、装置、系统、电子设备及存储介质 Download PDF

Info

Publication number
CN116166700A
CN116166700A CN202310127733.0A CN202310127733A CN116166700A CN 116166700 A CN116166700 A CN 116166700A CN 202310127733 A CN202310127733 A CN 202310127733A CN 116166700 A CN116166700 A CN 116166700A
Authority
CN
China
Prior art keywords
source
database
query statement
target
query
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
Application number
CN202310127733.0A
Other languages
English (en)
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.)
Alibaba Cloud Computing Ltd
Original Assignee
Alibaba Cloud Computing 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 Alibaba Cloud Computing Ltd filed Critical Alibaba Cloud Computing Ltd
Priority to CN202310127733.0A priority Critical patent/CN116166700A/zh
Publication of CN116166700A publication Critical patent/CN116166700A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • 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
    • G06F16/214Database migration support
    • 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

Landscapes

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

Abstract

本申请提供了一种查询方法、装置、系统、电子设备及存储介质,涉及数据库迁移技术领域。方法包括:基于第一通信协议从源应用程序获取源查询语句,其中,第一通信协议与目标数据库适配,源应用程序与源数据库适配;根据源查询语句,确定与目标数据库适配的目标查询语句;基于第一通信协议向目标数据库发送目标查询语句,以使目标数据库执行目标查询语句生成第一查询结果;基于第一通信协议,向源应用程序返回目标数据库返回的第一查询结果。根据本申请的技术方案,可以在源应用程序无需做任何修改的情况下,提供应用服务端访问目标数据库的应用代理服务,从而实现异构数据库迁移的零感知应用改造,让应用改造更简洁和智能。

Description

查询方法、装置、系统、电子设备及存储介质
技术领域
本申请涉及数据库迁移技术领域,尤其涉及一种查询方法、装置、系统、电子设备及存储介质。
背景技术
随着国产数据库的崛起和云计算的发展,越来越多的企业选择将自己的线下传统数据库替换到云上,如此就需要做数据库迁移。在数据库迁移领域,数据库本身的迁移技术(包括数据迁移和异构数据库结构迁移)已经非常成熟,但是在迁移异构数据库时,数据库之间的结构化查询语言(Structured Query Language,SQL)的语法和语义均存在较大的差异,导致迁移过后需要应用服务端的应用程序(Application,APP)作很多的适配,包括数据库驱动适配和语法差异适配等。
发明内容
本申请实施例提供一种查询方法、装置、系统、电子设备及存储介质,以提供一种用于数据库迁移的零代码应用改造方法。
第一方面,本申请实施例提供了一种查询方法,包括:基于第一通信协议从源应用程序获取源查询语句,其中,所述第一通信协议与目标数据库适配,所述源应用程序与源数据库适配;根据所述源查询语句,确定与所述目标数据库适配的目标查询语句;基于所述第一通信协议向所述目标数据库发送所述目标查询语句,以使所述目标数据库执行所述目标查询语句生成第一查询结果;基于所述第一通信协议,向所述源应用程序返回所述目标数据库返回的第一查询结果。
第二方面,本申请实施例提供了一种查询装置,包括:源查询语句获取模块,用于基于第一通信协议从源应用程序获取源查询语句,其中,所述第一通信协议与目标数据库适配,所述源应用程序与源数据库适配;目标查询语句确定模块,用于根据所述源查询语句,确定与所述目标数据库适配的目标查询语句;目标查询语句发送模块,用于基于所述第一通信协议向所述目标数据库发送所述目标查询语句,以使所述目标数据库执行所述目标查询语句生成第一查询结果;第一查询结果返回模块,用于基于所述第一通信协议,向所述源应用程序返回所述目标数据库返回的第一查询结果。
第三方面,本申请实施例提供一种查询系统,包括:应用服务端,安装有源应用程序,所述源应用程序与源数据库适配;数据库代理服务端,用于实现本申请任一实施例提供的方法,以向源应用程序返回第一查询结果;目标数据库,执行数据库代理服务端返回的目标查询语句,以生成第一查询结果,并向数据库代理服务端返回第一查询结果。
第四方面,本申请实施例提供一种电子设备,包括存储器、处理器及存储在存储器上的计算机程序,处理器在执行计算机程序时实现本申请任一实施例提供的方法。
第五方面,本申请实施例提供一种计算机可读存储介质,计算机可读存储介质内存储有计算机程序,计算机程序被处理器执行时实现本申请任一实施例提供的方法。
与现有技术相比,本申请实施例的技术方案具有如下优点:在完成数据迁移和结构迁移过后,源应用程序无需做任何修改,其可以按照数据迁移和结构迁移之前的请求方式,发送数据库查询请求,由数据库代理服务端执行通信协议适配、查询语句的语法适配等处理,从而提供应用服务端访问目标数据库的应用代理服务,进而实现异构数据库迁移的零感知应用改造,让应用改造更简洁和智能。进一步地,数据库代理服务端还可以提供双写验证场景,即在完成数据迁移和结构迁移过后,帮助用户查看异构数据库迁移带来的性能问题。
上述概述仅仅是为了说明书的目的,并不意图以任何方式进行限制。除上述描述的示意性的方面、实施方式和特征之外,通过参考附图和以下的详细描述,本申请进一步的方面、实施方式和特征将会是容易明白的。
附图说明
在附图中,除非另外规定,否则贯穿多个附图相同的附图标记表示相同或相似的部件或元素。这些附图不一定是按照比例绘制的。应该理解,这些附图仅描绘了根据本申请公开的一些实施方式,而不应将其视为是对本申请范围的限制。
图1为本申请实施例一提供的查询方法的系统架构的示意图;
图2为本申请实施例一提供的查询方法的流程图;
图3为本申请实施例一提供的查询方法的示例图;
图4为本申请实施例二提供的查询方法的流程图;
图5为本申请实施例二提供的双写验证的示例图;
图6为本申请实施例二提供的双写验证的示例图;
图7为本申请实施例二提供的查询方法的应用示例图;
图8为本申请实施例三提供的查询装置的框图;
图9为本申请实施例三提供的电子设备的框图。
具体实施方式
在下文中,仅简单地描述了某些示例性实施例。正如本领域技术人员可认识到的那样,在不脱离本申请的精神或范围的情况下,可通过各种不同方式修改所描述的实施例。因此,附图和描述被认为本质上是示例性的而非限制性的。
为便于理解本申请实施例的技术方案,以下对本申请实施例的相关技术进行说明,以下相关技术作为可选方案与本申请实施例的技术方案可以进行任意结合,其均属于本申请实施例的保护范围。
在本文中使用以下术语
数据库迁移:从源数据库到目标数据库所进行的任意形式的数据移动,包括数据迁移和异构数据库结构迁移。
异构数据库迁移:进行数据库迁移的源数据库和目标数据库的种类和数据库结构不同。
源数据库:在数据库迁移场景中,待迁移的数据库称为源数据库。
目标数据库:在数据库迁移场景中,数据被迁移到的数据库称为目标数据库。
源应用程序:通过应用服务端上安装的应用程序(Application,APP),应用服务端可以访问数据库。在数据库迁移场景中,该应用程序与源数据库适配,即该应用程序的通信协议、驱动程序、SQL语法语义等与源数据库适配,因此,在数据库迁移场景中,应用服务端上所安装的应用程序可以叫做源应用程序,用于访问源数据库,通过应用改造,可实现应用服务端基于源应用程序访问目标数据库。
应用改造:即应用程序改造。在迁移异构数据库时,源数据库和目标数据库之间的结构化查询语言(Structured Query Language,SQL)的语法以及数据库驱动均存在较大的差异。因此,在数据迁移和结构迁移过后需要对应用服务端的源应用程序进行应用改造,包括数据库驱动适配和语法差异适配等,使应用服务端通过其上安装的源应用程序能够顺利访问目标数据库。
数据库代理:提供数据库和应用服务端之间的网络代理服务,用于代理应用服务端访问数据库时的所有请求。
系统和应用场景
图1示出根据本申请实施例提供的查询系统的架构图。如图1所示,该系统可以包括应用服务端101、数据库代理服务端102和目标数据库103。
应用服务端101用于提供访问数据库的应用服务。应用服务端101可以部署在包括一独立主机的物理服务器上,也可以部署在主机集群承载的虚拟服务器(如云服务器)上,本申请实施例对此不进行限制。
应用服务端101上安装有应用程序,用于向数据库发送请求,并向用户返回请求结果。在数据库迁移场景中,该系统还包括源数据库104。应用服务端101上所安装的应用程序与源数据库104适配,即该应用程序的通信协议、驱动程序、SQL语法语义与源数据库103适配,因此,该应用服务端101上所安装的应用程序也可以叫做源应用程序。在完成数据迁移和结构迁移过后,由于目标数据库103与应用服务端101上的源应用程序可能出现不适配的情况,如源应用程序的数据库驱动无法适配目标数据库103,或者,源应用程序发送的查询请求中的SQL语法与目标数据库103不兼容,从而导致应用服务端101基于源应用程序可能无法访问目标数据库103。
数据库代理服务端102可以部署在包括一独立主机的物理服务器上,也可以部署在主机集群承载的虚拟服务器(如云服务器)上,本申请实施例对此不进行限制。
数据库代理服务端102位于数据库(包括源数据库104和目标数据库103)和应用服务端101之间,用于执行本申请实施例提供的查询方法,包括:基于与目标数据库适配的第一通信协议,从源应用程序获取源查询语句,并根据源查询语句确定与目标数据库适配的目标查询语句,进一步地,基于第一通信协议向目标数据库发送目标查询语句,以使目标数据库执行目标查询语句生成第一查询结果,并向源应用程序返回目标数据库返回的第一查询结果。
因此,在数据库迁移场景中,在数据库代理服务端102作为应用服务端101与目标数据库103之间的中间件,可以在源应用程序无需做任何修改的情况下,提供应用服务端101访问目标数据库103的应用代理服务,从而实现异构数据库迁移的零感知应用改造,让应用改造更简洁和智能。
实施例一
图2示出根据本申请实施例的查询方法的流程图。该查询方法可以应用于数据库代理服务端102。示例性地,数据库代理服务端102可以通过启动进程或实例执行本申请实施例的方法。
如图2所示,该查询方法包括:
步骤S201:基于第一通信协议从源应用程序获取源查询语句,其中,第一通信协议与目标数据库适配,源应用程序与源数据库适配。
如前述,在数据库迁移场景中,源应用程序与源数据库适配,例如源应用程序的通信协议、驱动程序、SQL语法语义与源数据库适配。
进一步地,第一通信协议与目标数据库适配,从而能够与目标数据库正常通信。也就是说,第一通信协议可根据目标数据库的种类确定。例如:目标数据库为关系型数据库MySQL,第一通信协议可以为MySQL网络协议;又如:目标数据库为开源关系型数据库PostgreSQL,第一通信协议可以为PostgreSQL网络协议(简称PG协议)。本申请实施例对第一通信协议的类型不作限定,只要第一通信协议与目标数据库适配即可。
在数据库迁移场景中,在完成数据迁移和结构迁移过后,源应用程序可以不作任何修改,即按照访问源数据库的方式,发送查询请求。数据库代理服务端可以与源应用程序通信,并基于第一通信协议解析源应用程序发送的查询请求,得到源查询语句,如源SQL。
步骤S202:根据源查询语句,确定与目标数据库适配的目标查询语句。
需要说明的是,由于源应用程序是与源数据库适配,且未作修改,因此,基于源应用程序得到的源查询语句是与源数据库兼容的,但源查询语句可能与目标数据库不兼容。
示例性地,在源查询语句与目标数据库兼容的情况下,数据库代理服务端可以直接将源查询语句作为目标查询语句,进而转发给目标数据库,相当于将源查询语句复制转发给目标数据库。在源查询语句与目标数据库不兼容的情况下,数据库代理服务端对源查询语句进行转换后,得到目标查询语句,再将目标查询语句转发给目标数据库。
步骤S203:基于第一通信协议向目标数据库发送目标查询语句,以使目标数据库执行目标查询语句生成第一查询结果。
由于第一通信协议与目标查询语句均与目标数据库适配或兼容,因此,目标数据库从数据库代理服务端接收到目标查询语句后执行,并将执行目标查询语句后生成的第一查询结果返回给数据库代理服务端。
步骤S204:基于第一通信协议,向源应用程序返回目标数据库返回的第一查询结果。
即数据库代理服务端将从目标数据库接收到的第一查询结果,发送给源应用程序。由此,源应用程序可以在不作修改的情况下,基于自己的查询请求得到目标数据库返回的查询结果。
根据本申请实施例的技术方案,在完成数据迁移和结构迁移过后,源应用程序无需做任何修改,其可以按照数据迁移和结构迁移之前的请求方式,发送数据库查询请求,由数据库代理服务端执行通信协议适配、查询语句的语法适配等处理,从而提供源应用程序访问目标数据库的应用代理服务,进而实现异构数据库迁移的零感知应用改造,让应用改造更简洁和智能。
在一种实施方式中,在步骤S201中,基于第一通信协议从源应用程序获取源查询语句,可以包括:基于第一通信协议,从源应用程序获取第一查询请求;根据第一通信协议解析第一查询请求,得到源查询语句。
本申请实施例中,第一通信协议与目标数据库适配,即第一通信协议属于数据库网络协议,如MySQL网络协议或PostgreSQL网络协议。网络协议是通信双方必须遵守的一组约定,包括语法、语义和时序三个要素,其中,其中语法规定数据和信息的组织结构;语义定义数据传递的信息内容,以及控制信息的执行和响应方式;时序规范数据和信息的发送顺序。数据库网络协议一般都包含消息、握手和查询的规则。
因此,基于第一通信协议中约定的规则,数据库代理服务端可以从源应用程序获取第一查询请求,并基于第一通信协议中约定的规则,解析第一查询请求,得到源查询语句,并进一步基于第一通信协议中约定的规则,将目标数据库返回的与第一查询请求对应的第一查询结果,发送给源应用程序。
需要说明的是,解析第一查询请求,除了可以得到源查询语句,如源SQL,还可以得到相对应的请求参数信息,如标识、查询位置等变量参数。
示例性地,如图3所示,数据库代理服务端提供套接字(SOCKET),以提供数据库代理服务端利用第一通信协议与源应用程序(APP)进行交互通信的接口。进一步地,数据库代理服务端可以通过第一通信协议数据流(stream)与目标数据库建立连接,进而将目标查询语句第一通信协议数据流的形式发送给目标数据库,并通过第一通信协议数据流接收目标数据库返回的第一查询结果。以目标数据库为PostgreSQL数据库,第一通信协议为PostgreSQL网络协议为例,数据库代理服务端可以通过PG流(Postgre Stream)与目标数据库建立连接,进而将目标查询语句发送给目标数据库,并通过PG流接收目标数据库返回的第一查询结果。
基于此,在完成数据迁移和结构迁移过后,源应用程序无需做任何修改,其可以按照数据迁移和结构迁移之前的请求方式,发送第一查询请求,由数据库代理服务端执行通信协议适配的处理,实现源应用程序与目标数据库的通信。
在一种实施方式中,在步骤S202中,根据源查询语句,确定与目标数据库适配的目标查询语句,可以包括:在目标数据库兼容源查询语句的情况下,将源查询语句作为目标查询语句;或,在目标数据库不兼容源查询语句的情况下,解析源查询语句,并将源查询语句转换为目标查询语句。
示例性地,对于源查询语句,数据库代理服务端可以先进行兼容性判断,即判断源查询语句是否与目标数据库兼容,如源SQL的语法是否与目标数据库兼容;然后,根据判断结果确定是否需要对源查询语句进行转换。如图3所示,在源查询语句(如源SQL)与目标数据库兼容的情况下,如在源查询语句与目标数据库语法相同时,数据库代理服务端可以直接将源查询语句作为目标查询语句,转发给目标数据库,相当于将源查询语句复制后转发给目标数据库。在源查询语句与目标数据库不兼容的情况下,数据库代理服务端对源查询语句进行转换后,得到目标查询语句,再将目标查询语句转发给目标数据库。
基于此,对于与目标数据库语法相同的源查询语句,不重复进行语法转换,从而可以提升查询语句的转换效率。
示例性地,如图3所示,可以基于二级缓存来进一步提升转换效率,包括通过协议解析得到源查询语句(如源SQL)的缓存以及对源查询语句格式化缓存。其中,协议解析可以理解为:基于第一通信协议,从源应用程序获取第一查询请求;根据第一通信协议解析第一查询请求,得到源查询语句。
在一种实施方式中,解析源查询语句,并将源查询语句转换为目标查询语句,可以包括:对源查询语句进行语法解析,以得到对应的抽象语法树;基于抽象语法树对源查询语句进行语义分析,得到具有语义标记的抽象语法树;根据具有语义标记的抽象语法树,将源查询语句转换为目标查询语句。
即数据库代理服务端通过独有的查询语句(如SQL)解析程序,实时构建抽象语法树,并根据语法解析和语义解析进行语法转换,将原本不兼容的源查询语句转换成目标数据库可执行的目标查询语句。
基于此,在完成数据迁移和结构迁移过后,源应用程序无需修改,由数据库代理服务端执行查询语句语法适配的处理,实现源应用程序对目标数据库的正常访问。
在一种实施方式中,解析源查询语句,并将源查询语句转换为目标查询语句,可以包括:根据配置的转换规则,将源查询语句转换为目标查询语句。
即数据库代理服务端内置了人工定制功能,用户可以通过手动方式,动态配置查询语句的自定义转换规则,使语法转换更灵活。
示例性地,如图3所示,数据库代理服务端可以提供查询语句映射(Mapping)服务,如自动捕捉目标数据库侧不符合目标数据库语法规范的SQL,即错误的SQL,并自动完成SQL智能语法转换(将错误的SQL映射为正确的SQL),若存在不能智能转换的SQL,还可以通过手动配置自定义转换规则的方式转换SQL,避免错误SQL影响返回正确查询结果。进一步地,语法转换后的目标查询语句,通过协议重构,如基于第一通信协议进行消息格式转换,然后通过第一通信协议数据流转发给目标数据库。
通过本申请实施例提供的技术方案,针对异构数据库迁移场景,可以自动转发99%以上的SQL。
实施例二
本申请实施例提供一种查询方法,该查询方法可以应用于数据库代理服务端102。示例性地,数据库代理服务端102可以通过启动进程或实例执行本申请实施例的方法。其中,实施例一中的技术方案可以部分或全部地引入至本申请实施例中。
如图4所示,该查询方法可以包括:
步骤S401:基于第一通信协议从源应用程序获取源查询语句,其中,第一通信协议与目标数据库适配,源应用程序与源数据库适配;
步骤S402:根据源查询语句,确定与目标数据库适配的目标查询语句;
步骤S403:基于第一通信协议向目标数据库发送目标查询语句,以使目标数据库执行目标查询语句生成第一查询结果;
步骤S404:基于第二通信协议向源数据库发送源查询语句,以使源数据库执行源查询语句生成查询结果,其中,第二通信协议与源数据库适配;
步骤S405:利用第一通信协议和第二通信协议之间的转换规则,解析源数据库返回的查询结果,得到第二查询结果;
步骤S406:对比验证第一查询结果和第二查询结果。
其中,步骤S401可以采用与步骤S201相同或相类似的实施方式,步骤S402可以采用与步骤S202相同或相类似的实施方式,步骤S403可以采用与步骤S203相同或相类似的实施方式。另外,步骤S403与步骤S404~步骤S405的执行顺序,本申请实施例不作限定。例如:可以先执行步骤S403,再执行步骤S404~步骤S405;或者,可以先执行步骤S404~步骤S405步骤S403,再执行步骤S403;或者,步骤S403与步骤S404~步骤S405可以并行执行。
进一步地,第二通信协议与源数据库适配。由此,数据库代理服务端还可以提供源应用程序访问源数据库的代理服务。源数据库收到源查询语句(如源SQL)后,执行源查询语句,并将生成的查询结果返回给数据库代理服务端。数据库代理服务端利用第一通信协议和第二通信协议之间的转换规则,解析源数据库返回的查询结果,得到第二查询结果,并通过对比第一查询结果和第二查询结果,进而验证第一查询结果。
需要说明的是,根据用户需求,数据库代理服务端可以将源数据库返回的查询结果返回给源应用程序,本申请实施例对此不作限定。
根据本申请实施例的技术方案,数据库代理服务端可以通过双写验证场景,即通过通信协议转换,将源查询语句发送给源数据库,并利用源数据库执行源查询语句而生成查询结果,验证目标数据库返回的查询结果(第一查询结果),进而验证应用改造的性能,即在完成数据迁移和结构迁移过后以及源应用程序没有任何修改的情况下,验证数据库代理服务端提供应用代理服务的性能,以快速帮助用户查看异构数据库迁移带来的性能问题。
在一种实施方式中,在步骤S404中,基于第二通信协议向源数据库发送源查询语句,可以包括:利用第一通信协议和第二通信协议之间的转换规则,将源查询语句转换为数据库接口可执行的第二查询请求;通过模拟数据库接口,向源数据库发送第二查询请求,以使源数据库基于第二通信协议解析第二查询请求得到源查询语句。
其中,该数据库接口与源应用程序适配,即模拟数据库接口可以模拟源应用程序的驱动。示例性地,如果源应用程序为java应用,则该数据接口可以为java数据库接口(Java Database Connectivity,JDBC);如果源应用程序为c/c#应用,则该数据接口可以为开源数据库接口(Open Database Connectivity,ODBC)。
通过模拟数据库接口,数据库代理服务端可以模拟源应用程序访问源数据库的驱动,从而提供源应用程序访问源数据库的代理服务,进而能够基于源数据库的查询结果验证目标数据库的查询结果,并检验应用改造的性能。
示例性地,如图5所示,通过协议解析,如执行步骤S201或步骤S401,得到源查询语句,由于第一通信协议与源数据库不兼容,因此,需要通过协议转换,即利用第一通信协议和第二通信协议之间的转换规则,将源查询语句转换为所模拟的数据库接口可执行的第二查询请求,如JDBC可执行SQL,进而通过该数据接口(如JDBC)发送给源数据库,以使源数据库基于第二通信协议解析第二查询请求得到源查询语句,并生成查询结果返回给该数据库接口。该数据库接口(如JDBC)对源数据库返回的查询结果进行解析(解析结果),并对解析结果进行消息重构,得到第二查询结果,进而第二查询结果与第一查询结果具有相同格式,便于对比验证。其中,与图3相同的部分已在实施例一中进行了介绍,在此不再赘述。
下面结合图6和图7给出本申请实施例提供的双写验证场景的应用示例。在该应用示例中,源数据库为关系型数据库MySQL数据库,目标数据库为关系型数据库PostgreSQL数据库。如图6和图7所示,数据库代理服务端基于与源应用程序的通信,得到源查询语句MySQL。由于源查询语句MySQL与目标数据库PostgreSQL数据库不兼容,因此需要数据库代理服务端进行语法转换,即SQL转换,将源查询语句MySQL转换为目标查询语句PostgreSQL,并转发给目标数据库PostgreSQL数据库,目标数据库PostgreSQL对应的查询结果为第一查询结果。进一步地,根据第一通信协议PG协议与第二通信协议MySQL网络协议之间的转换规则,进行协议转换,将源查询语句MySQL转换为模拟数据库接口JDBC可执行的查询语句,并通过JDBC转发给源数据库MySQL数据库。源数据库MySQL数据库对应的查询结果为第一查询结果。进而通过对比验证第一查询结果和第二查询结果,检验数据库代理服务端的应用代理服务的性能。
需要说明的是,可以基于二级缓存(Statement cache)来进一步提升转换效率,包括通过协议解析得到源查询语句(如源SQL)的缓存以及对源查询语句格式化缓存,即图7中的SQL缓存。另外,在SQL转换过程中,当源查询语句与目标查询语句不兼容时,通过配置的规则可以进行交互式订正,且该规则可以有用户进行修改(规则修改)。另外,服务过程中的信息记录会被抓取,以供用户实时查看服务转换内容。另外,数据库代理服务端还可以提供压力测试服务,如在应用代理服务过程中,评估数据库接口和硬件性能对服务的影响。
根据本申请实施例一和二的技术方案,通过提供数据库代理服务端作为应用服务端与数据库之间的应用代理,提供通信协议适配和语法适配,进而达到在不修改应用服务端源应用程序的情况下,使源应用程序兼容目标数据库,进而使应用服务端正常访问目标数据库,帮助用于快速解决数据库迁移的零代码应用改造。
实施例三
与本申请实施例提供的方法相对应地,本申请实施例还提供一种查询装置,该查询装置可以部署在数据库代理服务端102。
如图8所示,该查询装置可以包括:源查询语句获取模块801,用于基于第一通信协议从源应用程序获取源查询语句,其中,所述第一通信协议与目标数据库适配,所述源应用程序与源数据库适配;目标查询语句确定模块802,用于根据所述源查询语句,确定与所述目标数据库适配的目标查询语句;目标查询语句发送模块803,用于基于所述第一通信协议向所述目标数据库发送所述目标查询语句,以使所述目标数据库执行所述目标查询语句生成第一查询结果;第一查询结果返回模块804,用于基于所述第一通信协议,向所述源应用程序返回所述目标数据库返回的第一查询结果。
在一种实施方式中,目标查询语句确定模块802具体用于:在所述目标数据库兼容所述源查询语句的情况下,将所述源查询语句作为所述目标查询语句;或,在所述目标数据库不兼容所述源查询语句的情况下,解析所述源查询语句,并将所述源查询语句转换为所述目标查询语句。
在一种实施方式中,目标查询语句确定模块802具体用于:对所述源查询语句进行语法解析,以得到对应的抽象语法树;基于所述抽象语法树对所述源查询语句进行语义分析,得到具有语义标记的抽象语法树;根据所述具有语义标记的抽象语法树,将所述源查询语句转换为所述目标查询语句。
在一种实施方式中,目标查询语句确定模块802具体用于:根据配置的转换规则,将所述源查询语句转换为所述目标查询语句。
在一种实施方式中,源查询语句获取模块801具体用于:基于所述第一通信协议,从所述源应用程序获取第一查询请求;根据所述第一通信协议解析所述第一查询请求,得到所述源查询语句。
在一种实施方式中,本申请实施例的查询装置还包括:源查询语句发送模块,用于基于第二通信协议向所述源数据库发送所述源查询语句,以使所述源数据库执行所述源查询语句生成查询结果,其中,所述第二通信协议与所述源数据库适配;第二查询结果确定模块,用于利用所述第一通信协议和所述第二通信协议之间的转换规则,解析所述源数据库返回的查询结果,得到第二查询结果;对比验证模块,用于对比验证所述第一查询结果和所述第二查询结果。
在一种实施方式中,源查询语句发送模块具体用于:利用所述第一通信协议和所述第二通信协议之间的转换规则,将所述源查询语句转换为数据库接口可执行的第二查询请求,其中,所述数据库接口与所述源应用程序适配;通过模拟所述数据库接口,向所述源数据库发送所述第二查询请求,以使所述源数据库基于所述第二通信协议解析所述第二查询请求得到所述源查询语句。
本申请实施例各装置中的各模块的功能可以参见上述方法中的对应描述,并具备相应的有益效果,在此不再赘述。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息、用户操作信息等)和数据(包括但不限于用于处理的数据、分析的数据、存储的数据、展示的数据等)等,均为经用户授权或者经过各方充分授权的信息和数据,并且相关信息和数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。
图9为用来实现本申请实施例的电子设备的框图。如图9所示,该电子设备包括:存储器901和处理器902,存储器901内存储有可在处理器902上运行的计算机程序。处理器902执行该计算机程序时实现上述实施例中的方法。存储器901和处理器902的数量可以为一个或多个。
该电子设备还包括:通信接口903,用于与外界设备进行通信,进行数据交互传输。
如果存储器901、处理器902和通信接口903独立实现,则存储器901、处理器902和通信接口903可以通过总线相互连接并完成相互间的通信。该总线可以是工业标准体系结构(Industry Standard Architecture,ISA)总线、外部设备互连(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准体系结构(Extended Industry StandardArchitecture,EISA)总线等。该总线可以分为地址总线、数据总线、控制总线等。为便于表示,图9中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
可选地,在具体实现上,如果存储器901、处理器902及通信接口903集成在一块芯片上,则存储器901、处理器902及通信接口903可以通过内部接口完成相互间的通信。
本申请实施例提供了一种计算机可读存储介质,其存储有计算机程序,该程序被处理器执行时实现本申请任一实施例中提供的方法。
本申请实施例还提供了一种芯片,该芯片包括,包括处理器,用于从存储器中调用并运行存储器中存储的指令,使得安装有芯片的通信设备执行本申请任一实施例提供的方法。
本申请实施例还提供了一种芯片,包括:输入接口、输出接口、处理器和存储器,输入接口、输出接口、处理器以及存储器之间通过内部连接通路相连,处理器用于执行存储器中的代码,当代码被执行时,处理器用于执行申请任一实施例提供的方法。
应理解的是,上述处理器可以是中央处理器(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(FieldProgrammable gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者是任何常规的处理器等。值得说明的是,处理器可以是支持进阶精简指令集机器(Advanced RISC Machines,ARM)架构的处理器。
可选地,上述存储器可以包括只读存储器和随机存取存储器,还可以包括非易失性随机存取存储器。该存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以包括只读存储器(Read-Only Memory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(ErasablePROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存。易失性存储器可以包括随机存取存储器(Random Access Memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用。例如:静态随机存取存储器(StaticRAM,SRAM)、动态随机存取存储器(Dynamic Random Access Memory,DRAM)、同步动态随机存取存储器(Synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(DoubleData Rate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(Sync Link DRAM,SLDRAM)和直接内存总线随机存取存储器(Direct Rambus RAM,DRRAM)。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本申请的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包括于本申请的至少一个实施例或示例中。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或隐含地包括至少一个该特征。在本申请的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分。并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如:可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。
应理解的是,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。上述实施例方法的全部或部分步骤是可以通过程序来指令相关的硬件完成,该程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本申请各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。上述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读存储介质中。该存储介质可以是只读存储器,磁盘或光盘等。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到其各种变化或替换,这些都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。

Claims (11)

1.一种查询方法,包括:
基于第一通信协议从源应用程序获取源查询语句,其中,所述第一通信协议与目标数据库适配,所述源应用程序与源数据库适配;
根据所述源查询语句,确定与所述目标数据库适配的目标查询语句;
基于所述第一通信协议向所述目标数据库发送所述目标查询语句,以使所述目标数据库执行所述目标查询语句生成第一查询结果;
基于所述第一通信协议,向所述源应用程序返回所述目标数据库返回的第一查询结果。
2.根据权利要求1所述的方法,其中,根据所述源查询语句,确定与所述目标数据库适配的目标查询语句,包括:
在所述目标数据库兼容所述源查询语句的情况下,将所述源查询语句作为所述目标查询语句;或,
在所述目标数据库不兼容所述源查询语句的情况下,解析所述源查询语句,并将所述源查询语句转换为所述目标查询语句。
3.根据权利要求2所述的方法,其中,解析所述源查询语句,并将所述源查询语句转换为所述目标查询语句,包括:
对所述源查询语句进行语法解析,以得到对应的抽象语法树;
基于所述抽象语法树对所述源查询语句进行语义分析,得到具有语义标记的抽象语法树;
根据所述具有语义标记的抽象语法树,将所述源查询语句转换为所述目标查询语句。
4.根据权利要求2所述的方法,其中,将所述源查询语句转换为所述目标查询语句,包括:
根据配置的转换规则,将所述源查询语句转换为所述目标查询语句。
5.根据权利要求1所述的方法,其中,基于第一通信协议从应用服务端的源应用程序获取源查询语句,包括:
基于所述第一通信协议,从所述源应用程序获取第一查询请求;
根据所述第一通信协议解析所述第一查询请求,得到所述源查询语句。
6.根据权利要求1至5任一项所述的方法,还包括:
基于第二通信协议向所述源数据库发送所述源查询语句,以使所述源数据库执行所述源查询语句生成查询结果,其中,所述第二通信协议与所述源数据库适配;
利用所述第一通信协议和所述第二通信协议之间的转换规则,解析所述源数据库返回的查询结果,得到第二查询结果;
对比验证所述第一查询结果和所述第二查询结果。
7.根据权利要求6所述的方法,其中,基于第二通信协议向所述源数据库发送所述源查询语句,包括:
利用所述第一通信协议和所述第二通信协议之间的转换规则,将所述源查询语句转换为数据库接口可执行的第二查询请求,其中,所述数据库接口与所述源应用程序适配;
通过模拟所述数据库接口,向所述源数据库发送所述第二查询请求,以使所述源数据库基于所述第二通信协议解析所述第二查询请求得到所述源查询语句。
8.一种查询装置,包括:
源查询语句获取模块,用于基于第一通信协议从源应用程序获取源查询语句,其中,所述第一通信协议与目标数据库适配,所述源应用程序与源数据库适配;
目标查询语句确定模块,用于根据所述源查询语句,确定与所述目标数据库适配的目标查询语句;
目标查询语句发送模块,用于基于所述第一通信协议向所述目标数据库发送所述目标查询语句,以使所述目标数据库执行所述目标查询语句生成第一查询结果;
第一查询结果返回模块,用于基于所述第一通信协议,向所述源应用程序返回所述目标数据库返回的第一查询结果。
9.一种查询系统,包括:
应用服务端,安装有源应用程序,所述源应用程序与源数据库适配;
数据库代理服务端,用于实现权利要求1-7中任一项所述的方法,以向所述源应用程序返回第一查询结果;
目标数据库,执行所述数据库代理服务端返回的目标查询语句,以生成所述第一查询结果,并向所述数据库代理服务端返回所述第一查询结果。
10.一种电子设备,包括存储器、处理器及存储在存储器上的计算机程序,所述处理器在执行所述计算机程序时实现权利要求1-7中任一项所述的方法。
11.一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-7中任一项所述的方法。
CN202310127733.0A 2023-02-01 2023-02-01 查询方法、装置、系统、电子设备及存储介质 Pending CN116166700A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310127733.0A CN116166700A (zh) 2023-02-01 2023-02-01 查询方法、装置、系统、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310127733.0A CN116166700A (zh) 2023-02-01 2023-02-01 查询方法、装置、系统、电子设备及存储介质

Publications (1)

Publication Number Publication Date
CN116166700A true CN116166700A (zh) 2023-05-26

Family

ID=86421564

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310127733.0A Pending CN116166700A (zh) 2023-02-01 2023-02-01 查询方法、装置、系统、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN116166700A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116578585A (zh) * 2023-07-13 2023-08-11 北京原点数安科技有限公司 数据查询方法、装置、电子设备及存储介质
CN117112540A (zh) * 2023-10-24 2023-11-24 荣耀终端有限公司 数据库性能测试方法和装置

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116578585A (zh) * 2023-07-13 2023-08-11 北京原点数安科技有限公司 数据查询方法、装置、电子设备及存储介质
CN116578585B (zh) * 2023-07-13 2023-09-19 北京原点数安科技有限公司 数据查询方法、装置、电子设备及存储介质
CN117112540A (zh) * 2023-10-24 2023-11-24 荣耀终端有限公司 数据库性能测试方法和装置

Similar Documents

Publication Publication Date Title
WO2020000706A1 (zh) 基于数据库比对的接口测试方法、系统、设备和存储介质
CN116166700A (zh) 查询方法、装置、系统、电子设备及存储介质
CN108228166B (zh) 一种基于模板的后端代码生成方法及系统
CN111782330B (zh) 一种基于Web应用的页面数据获取方法、装置及设备
WO2020233369A1 (zh) 基于模拟端口改进软件集成系统的方法及相关设备
US8255410B2 (en) Translating queries to representational state transfer (REST)
US10310828B2 (en) System and method for providing and executing a domain-specific language for cloud services infrastructure
CN113360519B (zh) 数据处理方法、装置、设备和存储介质
CN111597110B (zh) 页面测试方法、装置、电子设备及存储介质
WO2020192141A1 (zh) 接口模拟方法、装置、计算机设备和存储介质
CN106940695A (zh) 数据源信息的校验方法及装置
CN111694846B (zh) 一种基于Type 2 JDBC驱动的分离模式分布式存储过程实现方法
CN111309751A (zh) 大数据处理方法及装置
CN113901083A (zh) 基于多解析器的异构数据源操作资源解析定位方法和设备
CN112783867A (zh) 为满足实时大数据业务需求的数据库优化方法及云服务器
CN110674205B (zh) 单表查询方法、装置、终端及可读存储介质
CN112905620A (zh) 数据查询方法及装置、电子设备、存储介质
CN111046245A (zh) 多源异构数据源融合计算方法、系统、设备和存储介质
CN112671574B (zh) 前后端联调方法、装置、代理设备及存储介质
WO2024098746A1 (zh) 测试方法、装置及相关设备
CN117032646A (zh) 指标配置方法、指标执行方法及系统
CN113342353B (zh) 一种mock数据生成方法和装置
CN115757098A (zh) 一种数据库兼容性测试方法及装置
CN113742359A (zh) 一种即席查询方法、装置、电子设备及存储介质
CN112711602B (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