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

一种数据查询方法、装置、电子设备及机器可读存储介质

文献发布时间:2023-06-19 11:45:49


一种数据查询方法、装置、电子设备及机器可读存储介质

技术领域

本申请涉及数据库技术领域,尤其涉及一种数据查询方法、装置、电子设备及机器可读存储介质。

背景技术

数据库,是可以按照相同数据结构来组织、存储和管理数据的数据仓库。客户端通常搭载有与某种类型的数据库对应的DBMS(Database Management System,数据库管理系统),以使用户可以通过DBMS,对某种类型的某一数据库中的数据进行增加、查询、更新、删除等操作。

在实际应用中,用户对某一数据库中的数据进行增删改查等操作之前,需要先确定该数据库的数据库类型,进而确定与该数据库类型对应的数据库引擎和数据库操作语法;后续,可以加载与该数据库类型对应的数据库引擎,以使客户端连接至该数据库,并且可以根据对应的数据库操作语法输入数据操作语句,实现访问该数据库中的数据。

另外,在实际应用中,当用户需要访问另一数据库中的数据时,如果另一数据库的数据库类型与上述数据库不同,则用户需要先手动修改客户端的数据库配置信息,从而可以重新加载与另一数据库的数据库类型对应的数据库引擎,以使客户端连接至另一数据库;并且可以根据与另一数据库对应的数据库操作语法输入数据操作语句,实现访问另一数据库中的数据。

发明内容

本申请提供一种数据查询方法,应用于服务端,所述方法包括:

接收客户端发起的数据查询请求;其中,所述数据查询请求包括待查询资源的资源信息;

响应于所述数据查询请求,基于所述资源信息确定与所述待查询资源对应的数据源信息;

加载与所述数据源信息对应的数据库引擎,并基于所述数据库引擎生成与所述数据查询请求对应的数据查询语句;

调用所述数据库引擎执行所述数据查询语句,获取与所述待查询资源对应的目标数据。

可选的,所述基于所述资源信息确定与所述待查询资源对应的数据源信息,包括:

在预设的资源映射表中,查找与所述资源信息匹配的数据源信息;其中,所述资源映射表用于指示资源信息与数据源信息之间的映射关系;

如果查找到与所述资源信息匹配的数据源信息,则将所述匹配的数据源信息确定为与所述待查询资源对应的数据源信息。

可选的,所述资源信息至少包括数据项标识和与所述数据项标识对应的资源标识;

所述在预设的资源映射表中,查找与所述资源信息匹配的数据源信息,包括:

在所述资源映射表中,查找与所述资源标识和所述数据项标识均匹配的资源映射表项;

如果查找到与所述资源标识和所述数据项标识均匹配的资源映射表项,则将所述匹配的资源映射表项中的数据源信息确定为与所述资源信息匹配的数据源信息;

其中,当所述匹配的资源映射表项中的数据库类型为关系型数据库时,所述资源标识与所述匹配的资源映射表项中的表标识相对应,所述数据项标识与所述匹配的资源映射表项中的列标识相对应;当所述匹配的资源映射表项中的数据库类型为非关系型数据库时,所述资源标识与所述匹配的资源映射表项中的库标识相对应,所述数据项标识与所述匹配的资源映射表项中的键标识相对应。

可选的,所述加载与所述数据源信息对应的数据库引擎,包括:

启动与所述匹配的数据源信息中的数据库类型对应的数据库引擎,并基于所述数据库引擎,与所述匹配的数据源信息对应的数据库建立数据库连接。

可选的,所述基于所述数据库引擎生成与所述数据查询请求对应的数据查询语句,包括:

基于与所述数据库引擎对应的预设语法格式,生成与所述数据查询请求对应的数据查询语句;

其中,当所述数据库类型为关系型数据库时,所述数据查询语句中包括与所述资源标识对应的所述表标识和与所述数据项标识对应的所述列标识;当所述数据库类型为非关系型数据库时,所述数据查询语句中包括与所述资源标识对应的所述库标识和与所述数据项标识对应的所述键标识。

可选的,在加载与所述数据源信息对应的数据库引擎之前,还包括:

基于所述资源信息确定与所述待查询资源对应的排序配置信息;

所述基于所述数据库引擎生成与所述数据查询请求对应的数据查询语句,包括:

基于所述数据库引擎,生成与所述数据查询请求和所述排序配置信息对应的数据查询语句。

本申请还提供一种数据查询装置,应用于服务端,所述装置包括:

接收单元,用于接收客户端发起的数据查询请求;其中,所述数据查询请求包括待查询资源的资源信息;

确定单元,用于响应于所述数据查询请求,基于所述资源信息确定与所述待查询资源对应的数据源信息;

生成单元,用于加载与所述数据源信息对应的数据库引擎,并基于所述数据库引擎生成与所述数据查询请求对应的数据查询语句;

获取单元,用于调用所述数据库引擎执行所述数据查询语句,获取与所述待查询资源对应的目标数据。

可选的,所述确定单元,具体用于:

在预设的资源映射表中,查找与所述资源信息匹配的数据源信息;其中,所述资源映射表用于指示资源信息与数据源信息之间的映射关系;

如果查找到与所述资源信息匹配的数据源信息,则将所述匹配的数据源信息确定为与所述待查询资源对应的数据源信息。

可选的,所述资源信息至少包括数据项标识和与所述数据项标识对应的资源标识;

所述确定单元,具体用于:

在所述资源映射表中,查找与所述资源标识和所述数据项标识均匹配的资源映射表项;

如果查找到与所述资源标识和所述数据项标识均匹配的资源映射表项,则将所述匹配的资源映射表项中的数据源信息确定为与所述资源信息匹配的数据源信息;

其中,当所述匹配的资源映射表项中的数据库类型为关系型数据库时,所述资源标识与所述匹配的资源映射表项中的表标识相对应,所述数据项标识与所述匹配的资源映射表项中的列标识相对应;当所述匹配的资源映射表项中的数据库类型为非关系型数据库时,所述资源标识与所述匹配的资源映射表项中的库标识相对应,所述数据项标识与所述匹配的资源映射表项中的键标识相对应。

可选的,所述生成单元,具体用于:

启动与所述匹配的数据源信息中的数据库类型对应的数据库引擎,并基于所述数据库引擎,与所述匹配的数据源信息对应的数据库建立数据库连接。

可选的,所述生成单元,具体用于:

基于与所述数据库引擎对应的预设语法格式,生成与所述数据查询请求对应的数据查询语句;

其中,当所述数据库类型为关系型数据库时,所述数据查询语句中包括与所述资源标识对应的所述表标识和与所述数据项标识对应的所述列标识;当所述数据库类型为非关系型数据库时,所述数据查询语句中包括与所述资源标识对应的所述库标识和与所述数据项标识对应的所述键标识。

可选的,所述确定单元,还用于基于所述资源信息确定与所述待查询资源对应的排序配置信息;

所述生成单元,具体用于:

基于所述数据库引擎,生成与所述数据查询请求和所述排序配置信息对应的数据查询语句。

本申请还提供一种电子设备,包括通信接口、处理器、存储器和总线,所述通信接口、所述处理器和所述存储器之间通过总线相互连接;

所述存储器中存储机器可读指令,所述处理器通过调用所述机器可读指令,执行上述方法。

本申请还提供一种机器可读存储介质,所述机器可读存储介质存储有机器可读指令,所述机器可读指令在被处理器调用和执行时,实现上述方法。

通过以上实施例,一方面,服务端可以基于数据查询请求中的资源信息确定与待查询资源对应的数据源信息,因此,数据使用方无需了解与待查询资源对应的目标数据实际所在的数据库以及该数据库的数据库类型,只需要通过客户端输入待查询资源的资源信息,以使客户端发起数据查询请求,就可以获取到与待查询资源对应的目标数据,从而提升数据查询系统的易用性。

另一方面,当数据使用方需要跨不同类型的数据库进行数据查询时,数据使用方无需手动修改客户端的数据库配置信息,也无需采用其他数据库操作语法输入数据查询语句,服务端可以自动地加载与目标数据所在的数据库对应的数据库引擎,并且可以自动地生成与数据查询请求对应的、且符合对应的数据库操作语法的数据查询语句;换言之,上述服务端可以作为中间件,为客户端屏蔽不同类型的数据库之间的数据库引擎差异以及数据库操作语法差异,从而降低维护客户端的数据库配置信息的难度,改善用户跨数据库进行数据查询的体验。

附图说明

图1是一示例性的实施例示出的一种数据查询的系统架构示意图;

图2是一示例性的实施例示出的一种数据查询方法的流程图;

图3是一示例性的实施例示出的一种数据查询装置所在电子设备的硬件结构图;

图4是一示例性的实施例示出的一种数据查询装置的框图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。

需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。

为了使本技术领域的人员更好地理解本说明书实施例中的技术方案,下面先对本说明书实施例涉及的数据查询的相关技术,进行简要说明。

请参见图1,图1是一示例性的实施例示出的一种数据查询的系统架构示意图。

其中,客户端101、客户端102可以维护分别与不同数据库对应的数据库引擎;客户端101、客户端102可以向服务端103发起数据查询请求;服务端103可以基于与目标数据所在的数据库对应的数据库引擎,生成与接收到的数据查询请求对应的数据查询语句,并执行上述数据查询语句;数据库端104、数据库端105可以存储各种数据,并可以响应于上述数据查询语句,向服务端103返回对应的目标数据。

在实际应用中,上述客户端101、客户端102可以为数据使用方提供数据查询页面,以使数据使用方可以通过上述数据查询页面录入与数据库对应的真实IP地址、用户信息等数据库连接信息,实现客户端和数据库之间的数据库连接;进而数据使用方可以在上述数据查询页面中进行数据查询操作;上述客户端响应于数据使用方的数据查询操作,可以向服务端103发起对应的数据查询请求。

需要说明的是,上述数据库引擎,也可以被称作数据库连接驱动、数据库驱动等,可以用于建立和对应的数据库之间的数据库连接,本说明书不作限定。

在实际应用中,上述服务端103可以包括一台服务器,也可以包括多台服务器形成的服务器集群。应当理解的是,在C/S(Client/Server)架构中,上述服务器端相对于上述客户端而言,是Server端;而上述客户端或上述服务端相对于上述数据库端而言,是Client端。

在实际应用中,上述数据库端104、数据库端105可以包括不同数据库类型的数据库;具体的,可以包括关系型数据库,如Oracle、MySQL、Microsoft SQL Server、PostgreSQL等;还可以包括非关系型数据库,如Redis、MongoDB、Cassandra等。

其中,关系型数据库是指采用关系模型来组织数据的数据库,通常遵循ACID(Atomicity、Consistency、Isolation、Durability)原则;关系型数据库可以按照结构化的方法存储数据,即需要预先定义好数据表的结构,再根据表的结构存储数据。数据使用方访问关系型数据库中的数据时,通常可以采用SQL(Structured Query Language,结构化查询语言)语句,对关系型数据库进行增加、查询、更新、删除等操作。

而非关系型数据库(NoSQL)是指非关系型的、分布式的、通常不保证遵循ACID原则的数据存储系统。非关系型数据库通常可以按照键值对的形式存储数据,并且存储结构不是固定的;按照存储结构分类,非关系型数据库具体可以包括键值存储数据库、文档型数据库、图形数据库和列存储数据库。数据使用方访问非关系型数据库中的数据时,通常需要采用与数据库的种类对应的数据库操作语法。

应当理解的是,关于ACID原则、SQL语句以及与不同种类的非关系型数据库对应的数据库操作语法,请参见相关技术,在此不再赘述。

例如,数据库端104包括MySQL数据库db1,数据库端105包括Redis数据库db2;当数据使用方需要通过客户端101对数据库db1中的数据进行查询时,需要先在客户端101上手动配置与上述数据库db1对应的数据库连接信息,以使客户端101加载与MySQL数据库对应的数据库引擎,和数据库db1建立数据库连接;然后,可以向数据库db1发送采用SQL语法的数据查询语句,如select子句、from子句等;还可以向上述MySQL数据库发送用于指示对返回的目标数据进行排序的查询条件语句,如order by子句等;数据库端104接收到上述数据查询语句和查询条件语句时,可以先校验是否符合SQL语法规则,如果符合,则根据上述语句中携带的表名、列名等数据源信息,获取对应的目标数据,如字段值等,并返回给客户端101。

在一种相关技术方案中,当数据使用方需要访问不同类型的数据库中的数据时,需要先手动修改客户端的数据库配置信息,来重新加载与其他数据库的数据库类型对应的数据库引擎;并且需要采用与该数据库的数据库类型对应的数据库操作语法来发送数据查询语句。

例如,当数据使用方需要通过客户端101对Redis数据库db2中的数据进行查询时,需要先手动修改客户端101的数据库配置信息,重新配置为与上述数据库db2对应的数据库连接信息,以使客户端101可以加载与Redis数据库对应的数据库引擎,和数据库db2建立数据库连接;然后,可以向数据库db2发送采用与Redis对应的数据库操作语法的数据查询语句;数据库端105接收到上述数据查询语句时,可以先校验是否符合与Redis对应的数据库操作语法的语法规则,如果符合,则根据上述语句中携带的库名、键名等数据源信息,获取对应的目标数据,如键值等,并返回给客户端101。

但是,在上述相关技术方案中,一方面,由于待查询的目标数据可能分布在多个不同类型的数据库中,数据使用方需要先确定目标数据所位于的数据库、所位于的数据表以及该数据库的类型,再分别根据与不同类型的数据库对应的数据库操作语法,输入和发送数据查询语句,因此,数据使用方难以在海量的数据源信息中,快速地确定目标数据所位于的数据库、数据表或键值对,还需要掌握与不同类型的数据库对应的数据库操作语法,对于普通用户而言,进行跨数据库数据查询的难度大;另一方面,在对其他类型的数据库进行数据查询之前,数据使用方需要先手动修改客户端的数据库配置信息,以切换至与其他数据库对应的数据库引擎,实现和其他数据库的数据库连接,导致数据使用方无法通过在客户端上进行一次数据查询操作,就实现跨不同类型数据库的数据查询,还导致维护客户端的数据库配置信息的难度较大。

有鉴于此,本说明书旨在提出一种服务端基于数据查询请求中的资源信息确定与待查询资源对应的数据源信息,并自动加载与数据源信息对应的数据库引擎,自动生成与数据查询请求对应的数据查询语句,来实现数据查询的技术方案。

在实现时,服务端接收客户端发起的数据查询请求;其中,上述数据查询请求包括待查询资源的资源信息;

进一步地,响应于上述数据查询请求,基于上述资源信息确定与上述待查询资源对应的数据源信息;

进一步地,加载与上述数据源信息对应的数据库引擎,并基于上述数据库引擎生成与上述数据查询请求对应的数据查询语句;

进一步地,调用上述数据库引擎执行上述数据查询语句,获取与上述待查询资源对应的目标数据。

由此可见,在本说明书中的技术方案中,一方面,由于服务端可以基于数据查询请求中的资源信息确定与待查询资源对应的数据源信息,因此,数据使用方无需了解与待查询资源对应的目标数据实际所在的数据库以及该数据库的数据库类型,只需要通过客户端输入待查询资源的资源信息,以使客户端向服务端发起数据查询请求,就可以获取到目标数据,从而提升数据查询系统的易用性。

另一方面,当数据使用方需要跨不同类型的数据库进行数据查询时,数据使用方无需手动修改客户端的数据库配置信息,也无需采用其他对应的数据库操作语法输入数据查询语句,服务端可以自动地加载与目标数据所在的数据库对应的数据库引擎,并且可以自动地生成与数据查询请求对应的、且符合对应的数据库操作语法的数据查询语句;换言之,上述服务端可以作为中间件,为客户端屏蔽不同类型的数据库之间的数据库引擎差异以及数据库操作语法差异,从而降低维护客户端的数据库配置信息的难度,改善用户跨数据库进行数据查询的体验。

下面通过具体实施例,并结合具体的应用场景对本申请进行描述。

请参见图2,图2是一示例性的实施例示出的一种数据查询方法的流程图,上述方法应用于服务端,上述方法执行以下步骤:

步骤202:接收客户端发起的数据查询请求;其中,上述数据查询请求包括待查询资源的资源信息;

步骤204:响应于上述数据查询请求,基于上述资源信息确定与上述待查询资源对应的数据源信息;

步骤206:加载与上述数据源信息对应的数据库引擎,并基于上述数据库引擎生成与上述数据查询请求对应的数据查询语句;

步骤208:调用上述数据库引擎执行上述数据查询语句,获取与上述待查询资源对应的目标数据。

在本说明书中,数据使用方可以预先创建资源池。

在实际应用中,上述客户端可以为数据使用方提供可视的资源管理界面;数据使用方可以通过上述资源管理界面,根据实际需求创建资源池;其中,上述资源池可以包括若干资源的集合,可以用于保存资源信息与数据源信息之间的映射关系。

其中,创建上述资源池的具体过程,可以包括:数据使用方可以在上述资源管理界面中录入与需要使用的数据对应的数据库连接信息,如数据库名、数据库类型、数据库真实地址等;上述客户端可以响应于用户录入的数据源信息,向上述服务端发起资源创建请求;上述服务端可以加载与上述数据库类型对应的数据库引擎,以使客户端与数据库之间建立数据库连接,并调用上述数据库引擎获取与上述数据库连接信息对应的数据源信息;上述客户端可以通过上述资源管理页面展示获取到的数据源信息,以使数据使用方可以进一步确认待创建资源信息;创建并保存与上述待创建资源信息对应的资源信息。其中,上述待创建资源信息,至少可以包括数据使用方通过上述资源管理页面确定的与待创建资源对应的数据源信息。

例如:用户在客户端提供的资源管理页面中,录入数据库db1和db2的数据库连接信息;其中,数据库db1的数据库类型为MySQL,数据库真实地址为IP1;数据库db2的数据库类型为Redis,数据库真实地址为IP2;服务端可以通过API层对该用户进行权限校验,如果权限校验通过,则加载与MySQL对应的数据库引擎,建立与数据库db1的数据库连接,并获取数据库db1中的所有表标识,如table1、table2等;以及,加载与Redis对应的数据库引擎,建立与数据库db2的数据库连接,并获取数据库db2中的所有键标识,如key1、key2等;上述客户端还可以通过上述资源管理页面,向用户展示获取到的所有表标识和键标识,以使用户可以进一步地从所有表标识和键标识中,确认与待创建资源的资源标识对应的表标识或键标识,如table1、table2或key1;服务端可以通过API层对该用户进行权限校验,如果权限校验通过,则获取table1中的所有列标识,如row1、row2等,以及获取table2中的所有列标识,如row3、row4等;用户可以通过上述资源管理页面,从所有的列标识中,确认与待创建资源的资源信息对应的列标识,填写资源信息并保存,如与table1、table2、db2对应的资源标识分别为R1、R2、R3,与row1、row2、row3、key1对应的数据项标识分别为D1、D2、D3、D4。

需要说明的是,在以上示出的实施方式中,创建上述资源池时,上述资源信息中的资源名称、数据项名称与上述数据源信息中的表标识、列标识或键标识,可以设置为不同的名称,从而用户可以将多个不同的数据库中对于同一类数据的不同标识方法,统一为相同或相似的名称,便于用户针对上述资源池中的资源进行查询。

在本说明书中,上述数据使用方通过上述客户端,可以对上述资源池中的资源进行数据查询。

在实际应用中,上述客户端可以基于RESTful API为数据使用方提供统一查询入口,并且可以预先设置上述统一查询入口的参数结构,以使数据使用方可以在客户端输入符合预设参数结构的查询参数;其中,上述查询参数至少可以包括资源名称和数据项名称;数据使用方在输入查询参数时,还可以预先设置针对返回的目标数据的条目数量限制、格式要求等条件参数。

例如,客户端101可以在上述数据查询页面为用户提供统一查询入口,上述统一查询入口用于针对上述资源池中的资源进行查询,上述查询参数的结构可以被预设为:(资源名称,数据项名称);用户通过条件参数选项,可以确定上述客户端获取的目标数据的格式,还可以确定上述客户端向用户展示返回的目标数据时界面中的条目数量限制和具体显示方式等。

需要说明的是,在以上示出的实施方式中,通过提供基于RESTful API的统一查询入口,数据使用方无需通过与不同类型数据库对应的DBMS(Database Management System,数据库管理系统),分别对位于不同类型数据库中的数据进行查询,而只需要通过上述统一查询入口对预设资源池中的资源进行查询,就可以实现跨数据库的数据查询,从而提升改善用户体验。关于输入查询参数和条件参数的具体实现方式,以上仅仅是示例性的描述,并不对本说明书做限制;关于基于RESTful API实现上述统一查询入口的具体方式,请参见相关技术,在此不再赘述。

在本说明书中,上述服务端接收上述客户端发起的数据查询请求。

在实际应用中,上述客户端可以响应于数据使用方的数据查询操作,向上述服务端发起与上述查询参数对应的数据查询请求,还可以向上述服务端发起与上述查询参数和上述条件参数对应的数据查询请求;其中,上述数据查询操作,可以包括点击“查询”按钮、点击“确定”按钮、输入查询指令等操作。

例如,用户通过上述统一查询入口输入的查询参数为(R1,D1),响应于用户点击“查询”按钮的操作,客户端101可以向服务端103发出与上述查询参数对应的数据查询请求;上述数据查询请求示例如下:

又例如,用户在输入查询参数时,还设置了条件参数,要求返回的目标数据不超过5条,返回的数据只在1页上显示,并且该页上最多只显示10条数据,则与上述条件参数对应的数据查询请求示例如下:

需要说明的是,在本说明书中,上述数据查询请求,可以包括一个或多个资源信息;上述资源信息,至少可以包括资源标识和数据项标识;其中,上述资源标识和数据项标识,可以用于唯一标识资源信息,具体可以包括资源名称或资源ID、数据项名称或数据项ID等资源信息。

例如,用户输入的查询参数中,资源名称ResourceName可以为R1,数据项名称DataItems可以为D1和D2,则客户端101可以响应于用户的数据查询操作,向服务端103发起与(R1,D1)和(R1,D2)对应的数据查询请求。

又例如,用户输入的查询参数中,资源名称ResourceName可以为R1、R3,数据项名称DataItems可以为D1、D4,则客户端101可以响应于用户的数据查询操作,向服务端103发起与(R1,D1)和(R3,D4)对应的数据查询请求。

另外,需要说明的是,在以上示出的实施方式中,数据使用方通过客户端输入查询参数时,还可以设置条件参数,进而客户端向服务端发起的数据查询请求中可以携带有与上述条件参数对应的查询条件信息,后续可以进一步的将上述查询条件信息解析为对应的、且符合与数据源信息对应的数据库操作语法的查询条件语句,如limit子句、where子句等。

在本说明书中,服务端响应于上述数据查询请求,基于上述资源信息确定与上述待查询资源对应的数据源信息。

在实际应用中,上述服务端可以根据预先创建的资源池,确定与接收到的数据查询请求中携带的资源信息对应的数据源信息;其中,上述数据源信息可以包括数据源的数据库类型、数据库中的数据结构等。

例如,上述服务端接收到与(R1,D1)、(R1,D2)和(R2,D3)对应的数据查询请求,可以确定与资源R1和R2对应的数据源的数据库类型均为关系型数据库MySQL,在数据库db1中,与资源(R1,D1)、(R1,D2)和(R2,D3)对应的数据分别为table1中的row1、row2和table2中的row3中的字段值;另外,上述服务端还可以确定数据库db1的真实IP地址为IP1,即数据库db1位于上述数据库端104。

又例如,上述服务端接收到与(R1,D1)和(R3,D4)对应的数据查询请求,可以确定与资源R1和R3对应的数据源的数据库类型分别为关系型数据库MySQL、非关系型数据库Redis,在数据库db1中,与资源(R1,D1)对应的数据为table1中的row1中的数据,以及在数据库db2中,与资源(R3,D4)对应的数据为key1中的键值。

需要说明的是,在本说明书中,由于上述数据查询请求可以包括一个或多个资源信息,因此,相较于相关技术方案,数据使用方通过一次查询操作,除了可以针对单库单表进行数据查询,还可以实现针对单库多表的联合查询,也可以实现针对跨不同类型数据库的数据查询。

在示出的一种实施方式中,上述服务端基于上述资源信息确定与上述待查询资源对应的数据源信息的过程,可以包括:在预设的资源映射表中,查找与上述资源信息匹配的数据源信息;其中,上述资源映射表用于指示资源信息与数据源信息之间的映射关系;如果查找到与上述资源信息匹配的数据源信息,则将上述匹配的数据源信息确定为与上述待查询资源对应的数据源信息。

在实际应用中,创建上述资源池的具体方式,可以包括创建资源映射表,上述资源映射表用于保存资源信息与数据源信息之间的映射关系;上述资源映射表的表结构请参见表1所示例。

表1

例如,服务端接收到与(R1,D1)和(R3,D4)对应的数据查询请求,在如表1所示的资源映射表中,可以查找到与资源信息(R1,D1)和(R3,D4)匹配的资源映射表项,则可以将上述匹配的资源映射表项中的数据源信息,确定为与待查询资源(R1,D1)和(R3,D4)对应的数据源信息。

需要说明的是,在以上示出的实施方式中,通过创建并维护资源映射表,可以实现将不同类型的数据库、以及不同数据表中的数据标识映射为资源信息,可以直接由数据提供方管理各自数据库中的数据,数据使用方只需要针对上述资源映射表中的资源信息统一进行管理和维护,无需利用与不同类型数据库对应的DBMS,对其中的数据分别进行管理和维护,从而可以降低数据使用方维护数据库的难度,改善用户跨数据库进行查询数据的体验。

另外,需要说明的是,相关技术中,当上述客户端应用于不同的业务场景中时,数据使用方需要针对每个业务场景分别录入需要访问的数据源信息,导致某些数据源信息需要被多次录入;而在以上示出的实施方式中,数据使用方可以将位于不同数据库中的数据作为资源,录入并保存在上述资源映射表中,后续数据使用方直接对上述资源映射表中的资源信息进行查询,可以间接地实现对位于不同数据库中的数据进行查询,从而数据使用方只需要在创建资源映射表时录入一次数据源信息,就可以多次利用上述资源映射表进行数据查询等操作。

在示出的一种实施方式中,上述资源信息至少包括数据项标识和与上述数据项标识对应的资源标识;上述服务端在预设的资源映射表中,查找与上述资源信息匹配的数据源信息的过程,可以包括:在上述资源映射表中,查找与上述资源标识和上述数据项标识均匹配的资源映射表项;如果查找到,则将上述匹配的资源映射表项中的数据源信息确定为与上述资源信息匹配的数据源信息。

在实际应用中,上述资源映射表项中的数据库类型可以包括关系型数据库和非关系型数据库;其中,当上述数据库类型为关系型数据库时,上述资源映射表项中数据源信息,至少可以包括数据库类型、表标识和列标识;当上述数据库类型为非关系型数据库时,上述资源映射表项中的数据源信息,至少可以包括数据库类型、库标识和键标识。上述资源映射表的表结构请参见表2所示例。

表2

在示出的一种实施方式中,当上述匹配的资源映射表项中的数据库类型为关系型数据库时,上述资源标识与上述匹配的资源映射表项中的表标识相对应,上述数据项标识与上述匹配的资源映射表项中的列标识相对应。

例如,服务端接收到与(R1,D1)对应的数据查询请求,根据如表2所示的资源映射表,可以查找到与资源标识R1和数据项标识D1均匹配的资源映射表项,上述匹配的资源映射表项中的数据库类型为关系型数据库;上述服务端可以进一步的在上述匹配的资源映射表项中,查找到与资源标识R1匹配的表标识为table1,与数据项标识D1匹配的列标识为row1。

在示出的另一种实施方式中,当上述匹配的资源映射表项中的数据库类型为非关系型数据库时,上述资源标识与上述匹配的资源映射表项中的库标识相对应,上述数据项标识与上述匹配的资源映射表项中的键标识相对应。

例如,服务端接收到与(R3,D4)对应的数据查询请求,根据如表2所示的资源映射表,可以查找到与资源标识R3和数据项标识D4均匹配的资源映射表项,上述匹配的资源映射表项中的数据库类型为非关系型数据库;上述服务端可以进一步的在上述匹配的资源映射表项中,查找到与资源标识R3匹配的表标识为db2,与数据项标识D4匹配的键标识为key1。

在示出的一种实施方式中,上述数据源信息还可以包括权限配置信息。

在实际应用中,上述权限配置信息可以用于在数据查询、创建资源池等过程中,实现权限控制、审计日志等功能。数据提供方可以为不同的数据使用方,授予不同的操作权限;其中,上述操作权限可以包括查询权限、删除权限、更新权限等,上述操作权限可以针对数据库、表、列、行或键等分别进行设置,本说明书不做限制。

例如,数据提供方可以通过SQL语句“grant select(row1)on db1.table1touser1”,为数据使用方user1授予针对数据库db1中表table1的列(字段)row1的查询权限;在上述资源池中创建与db1.table1中的数据对应的资源R1时,上述资源池可以记录上述针对user1的权限配置信息。

在示出的一种实施方式中,当上述数据源信息还包括权限配置信息时,上述服务端加载与上述数据源信息对应的数据库引擎之前,还可以包括:根据上述权限配置信息对上述数据查询请求中携带的用户信息进行解析,以确定上述数据使用方是否具有与待查询资源对应的查询权限;如果有,则继续进行数据查询;否则,中断当前的数据查询,并向客户端返回用于指示数据使用方不具备待查询资源的查询权限的提示消息。

例如,当上述服务端接收到的客户端发起的针对(R1,D1)的数据查询请求后,可以对其中携带的用户信息进行权限校验;如果确定上述数据查询请求中携带的用户信息与user1的用户信息相匹配,则允许user1继续针对上述待查询资源进行数据查询。

又例如,如果数据提供方将数据库中某些行的数据预先设置为不可查询,则当数据使用方可以获取与列对应的目标数据时,也无法获取到上述已设置为不可查询的行中的数据,具体实现方式请参见本说明书中的其他示例,在此不再赘述。

需要说明的是,在以上示出的实施方式中,通过为不同的数据使用方授予不同的操作权限,可以进一步实现对数据使用方的权限校验,保证只允许具有权限的数据使用方对数据库中的数据进行访问;相较于相关技术中,仅针对数据库、表设置操作权限的技术方案,本说明书中的技术方案还可以针对数据库中的行、列或键设置操作权限,从而实现更细粒度的操作权限管理。

另外,需要说明的是,在以上示出的实施方式中,除了可以针对上述数据源信息设置操作权限,还可以针对上述资源信息设置操作权限,具体实现方式与上述实施例类似,在此不再赘述。

在本说明书中,上述服务端加载与上述数据源信息对应的数据库引擎,并基于上述数据库引擎生成与上述数据查询请求对应的数据查询语句。

在实际应用中,上述客户端可以维护与不同类型的数据库对应的数据库引擎,上述数据库引擎可以维护与其数据库类型对应的数据库操作语法模板,用于生成与上述数据查询请求对应的、采用与上述数据库类型对应的数据库操作语法的数据查询语句。

例如,上述服务端接收到与(R1,D1)、(R1,D2)和(R2,D3)对应的数据查询请求,可以确定与资源R1、R2对应的数据源的数据库类型均为关系型数据库MySQL;上述服务端可以加载与MySQL对应的数据库引擎,其中,上述与MySQL对应的数据库引擎可以维护有与SQL语法对应的数据库操作语法模板;上述服务端可以基于上述与MySQL对应的数据库引擎,生成与上述数据查询请求对应的采用SQL语法的数据查询语句,

select table1.row1,table1.row2,table2.row3

from table1;

left join table2 on table1.row1=table2.row3;

生成的与上述数据查询请求对应的数据查询语句,请参见上述示例。

又例如,上述服务端接收到与(R1,D1)和(R3,D4)对应的数据查询请求,可以确定与资源R1、R2对应的数据源的数据库类型分别为关系型数据库MySQL、非关系型数据库Redis;上述服务端可以加载与MySQL对应的数据库引擎和与Redis对应的数据库引擎,其中,上述与MySQL对应的数据库引擎可以维护有与SQL语法对应的数据库操作语法模板,上述与Redis对应的数据库引擎可以维护有与Redis对应的数据库操作语法模板;上述服务端可以基于上述与MySQL对应的数据库引擎和与Redis对应的数据库引擎,分别生成与上述数据查询请求中的查询参数对应的数据查询语句,

select row1 from table1;

redis-cli-p redis-port-a redis-password-n db2 hgetall key1;

生成的与上述数据查询请求对应的的数据查询语句,请参见上述示例。

在示出的一种实施方式中,上述服务器加载与上述数据源信息对应的数据库引擎的过程,可以包括:启动与上述匹配的数据源信息中的数据库类型对应的数据库引擎,并基于上述数据库引擎,与上述匹配的数据源信息对应的数据库建立数据库连接。

例如,如表1所示,服务端103查找到的与资源信息(R1,D1)和(R3,D4)匹配的数据源信息分别为“(table1,row1),MySQL”和“(db2,key1),Redis”,上述服务端可以启动与MySQL对应的数据库引擎和与Redis对应的数据库引擎,并基于上述多个数据库引擎,分别与位于数据库端104的数据库db1和位于数据库端105的数据库db2建立数据库连接。

需要说明的是,在以上示出的实施方式中,通过启动与上述数据库类型对应的数据库引擎,当数据使用方需要跨不同类型的数据库进行数据查询时(比如:同时查询位于关系数据库中和非关系数据库中的多种目标数据),数据使用方无需手动修改客户端的数据库配置信息,服务端可以自动地加载与目标数据所在的数据库对应的多个数据库引擎,从而实现为客户端屏蔽不同类型的数据库之间的数据库引擎差异。

在示出的一种实施方式中,上述服务器基于上述数据库引擎生成与上述数据查询请求对应的数据查询语句的过程,可以包括:基于与上述数据库引擎对应的预设语法格式,生成与上述数据查询请求对应的数据查询语句;其中,当上述数据库类型为关系型数据库时,上述数据查询语句中包括与上述资源标识对应的上述表标识和与上述数据项标识对应的上述列标识;当上述数据库类型为非关系型数据库时,上述数据查询语句中包括与上述资源标识对应的上述库标识和与上述数据项标识对应的上述键标识。

在实际应用中,上述数据库引擎,可以维护有与其数据库类型对应的预设语法格式;上述服务端可以基于上述预设语法格式,生成与数据查询请求中携带的资源信息对应的数据查询语句,并且上述数据查询语句符合与数据库类型对应的数据库操作语法。

例如,服务端接收到的数据查询请求中携带的资源信息为(R1,D1),可以确定数据库类型为关系型数据库MySQL,与上述资源标识R1匹配的表标识为table1,与上述数据项标识D1匹配的列标识为row1;进一步地,可以基于与MySQL对应的数据库引擎所维护的预设语法格式,生成与上述数据查询请求对应的数据查询语句“select row1 from table1”。

又例如,服务端接收到的数据查询请求中携带的资源信息为(R3,D4),可以确定数据库类型为非关系型数据库Redis,与上述资源标识R3匹配的库标识为db2,与上述数据项标识D4匹配的键标识为key1;进一步地,可以基于与Redis对应的数据库引擎所维护的预设语法格式,生成与上述数据查询请求对应的数据查询语句“hgetall key1”。

需要说明的是,在以上示出的实施方式中,通过基于与上述数据库引擎对应的预设语法格式,生成与上述数据查询请求对应的数据查询语句,当数据使用方需要跨不同类型的数据库进行数据查询时,数据使用方无需采用其他数据库操作语法输入数据查询语句,服务端可以自动地生成与数据查询请求对应的、且符合对应的数据库操作语法的数据查询语句,从而实现为客户端屏蔽不同类型的数据库之间的数据库操作语法差异。

在示出的另一种实施方式中,上述服务器基于上述数据库引擎生成与上述数据查询请求对应的数据查询语句之前,还可以包括:基于上述资源信息确定与上述待查询资源对应的排序配置信息。

在实际应用中,上述资源信息还可以包括与上述资源信息对应的排序配置信息,具体可以包括升序排列或降序排列等。数据使用方可以在创建上述资源池的过程中,针对上述资源信息设置对应的排序配置信息,并将上述排序配置信息一起保存在上述资源池中。

例如,用户针对资源(R1,D1)预先设置的排序配置信息为“降序排列”,并将上述排序配置信息保存在上述资源池中。

在示出的另一种实施方式中,上述服务器基于上述数据库引擎生成与上述数据查询请求对应的数据查询语句的过程,可以包括:基于上述数据库引擎,生成与上述数据查询请求和上述排序配置信息对应的数据查询语句。

例如,针对资源信息(R1,D1)预先设置的排序配置信息为“降序”;当服务端接收到与(R1,D1)对应的数据查询请求时,可以确定与(R1,D1)对应的排序配置信息为“降序排列”;然后,上述服务端可以基于与MySQL对应的数据库引擎,将上述数据查询请求和上述排序配置信息解析为“select row1 from table1 order by row1 desc”;后续上述服务端基于与MySQL对应的数据库引擎执行上述查询语句,可以获取到已经默认降序排列的目标数据。

需要说明的是,在以上示出的实施方式中,通过在创建资源池的过程中,预先针对资源信息设置排序配置信息,数据使用方通过客户端输入数据查询请求,无需输入对应的排序请求,服务端可以生成与上述数据查询请求和上述已保存的排序配置信息对应的数据查询语句,从而实现对返回的目标数据进行默认排序,改善数据使用方进行数据查询的体验。

在本说明书中,上述服务端调用上述数据库引擎执行上述数据查询语句,获取与上述待查询资源对应的目标数据。

在实际应用中,上述服务端可以调用上述数据库引擎,分别执行与各自的数据源信息对应的数据查询语句,分别获取与上述数据查询语句对应的数据;上述与待查询资源对应的目标数据,可以包括上述与不同数据源信息对应的数据库引擎分别获得的数据集合。

例如,如果生成的数据查询语句为“select table1.row1,table1.row2,table2.row3 from table1;left join table2 on table1.row1=table2.row3;”,上述与MySQL对应的数据库引擎可以执行上述数据查询语句,并从数据库db1的table1和table2中,进一步地,从table1的row1、row2和table2的row3中,获取上述各个数据列中的字段值;还可以根据上述查询请求中的条件参数,对获取到的字段值筛选后再返回给上述客户端。

又例如,如果生成的数据查询语句为“select row1 from table1;hgetallkey1;”,上述与MySQL对应的数据库引擎可以执行“select row1 from table1”,从数据库db1的table1中,进一步地,可以从table1的row1中获取字段值;上述与Redis对应的数据库引擎可以执行“hgetall key1”,从数据库db2的key1中获取键值(value);上述服务端获取到的与上述待查询资源对应的目标数据可以包括上述与MySQL对应的数据库引擎和与Redis对应的数据库引擎分别获得的字段值和键值。

通过以上技术方案可知,一方面,由于服务端可以基于数据查询请求中的资源信息确定与待查询资源对应的数据源信息,因此,数据使用方无需了解与待查询资源对应的目标数据实际所在的数据库以及该数据库的数据库类型,只需要通过客户端输入待查询资源的资源信息,以使客户端发起数据查询请求,就可以获取到与待查询资源对应的目标数据,从而提升数据查询系统的易用性。

另一方面,当数据使用方需要跨不同类型的数据库进行数据查询时,数据使用方无需手动修改客户端的数据库配置信息,也无需采用其他数据库操作语法输入数据查询语句,服务端可以自动地加载与目标数据所在的数据库对应的数据库引擎,并且可以自动地生成与数据查询请求对应的、且符合对应的数据库操作语法的数据查询语句;换言之,上述服务端可以作为中间件,为客户端屏蔽不同类型的数据库之间的数据库引擎差异以及数据库操作语法差异,从而降低维护客户端的数据库配置信息的难度,改善用户跨数据库进行查询数据的体验。

与上述数据查询方法的实施例对应的,本说明书还提供了一种数据查询装置的实施例。

本说明书的数据查询装置的实施例可以应用在电子设备上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在电子设备的处理器,将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,请参见图3,图3是一示例性的实施例示出的一种数据查询装置所在电子设备的硬件结构图,除了图3所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的电子设备通常根据该电子设备的实际功能,还可以包括其他硬件,对此不再赘述。

请参见图4,图4是一示例性的实施例示出的一种数据查询装置的框图。该数据查询装置可以应用于图3所示的电子设备;上述数据查询装置可以包括:

接收单元401,用于接收客户端发起的数据查询请求;其中,上述数据查询请求包括待查询资源的资源信息;

确定单元402,用于响应于上述数据查询请求,基于上述资源信息确定与上述待查询资源对应的数据源信息;

生成单元403,用于加载与上述数据源信息对应的数据库引擎,并基于上述数据库引擎生成与上述数据查询请求对应的数据查询语句;

获取单元404,用于调用上述数据库引擎执行上述数据查询语句,获取与上述待查询资源对应的目标数据。

在本实施例中,上述确定单元402,具体用于:

在预设的资源映射表中,查找与上述资源信息匹配的数据源信息;其中,上述资源映射表用于指示资源信息与数据源信息之间的映射关系;

如果查找到与上述资源信息匹配的数据源信息,则将上述匹配的数据源信息确定为与上述待查询资源对应的数据源信息。

在本实施例中,上述资源信息至少包括数据项标识和与上述数据项标识对应的资源标识;

上述确定单元402,具体用于:

在上述资源映射表中,查找与上述资源标识和上述数据项标识均匹配的资源映射表项;

如果查找到与上述资源标识和上述数据项标识均匹配的资源映射表项,则将上述匹配的资源映射表项中的数据源信息确定为与上述资源信息匹配的数据源信息;

其中,当上述匹配的资源映射表项中的数据库类型为关系型数据库时,上述资源标识与上述匹配的资源映射表项中的表标识相对应,上述数据项标识与上述匹配的资源映射表项中的列标识相对应;当上述匹配的资源映射表项中的数据库类型为非关系型数据库时,上述资源标识与上述匹配的资源映射表项中的库标识相对应,上述数据项标识与上述匹配的资源映射表项中的键标识相对应。

在本实施例中,上述生成单元403,具体用于:

启动与上述匹配的数据源信息中的数据库类型对应的数据库引擎,并基于上述数据库引擎,与上述匹配的数据源信息对应的数据库建立数据库连接。

在本实施例中,上述生成单元403,具体用于:

基于与上述数据库引擎对应的预设语法格式,生成与上述数据查询请求对应的数据查询语句;

其中,当上述数据库类型为关系型数据库时,上述数据查询语句中包括与上述资源标识对应的上述表标识和与上述数据项标识对应的上述列标识;当上述数据库类型为非关系型数据库时,上述数据查询语句中包括与上述资源标识对应的上述库标识和与上述数据项标识对应的上述键标识。

在本实施例中,上述确定单元402,还用于基于上述资源信息确定与上述待查询资源对应的排序配置信息;

上述生成单元403,具体用于:

基于上述数据库引擎,生成与上述数据查询请求和上述排序配置信息对应的数据查询语句。

上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。

对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例只是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本说明书方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。

在一个典型的配置中,计算机包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。

内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。

上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。

在本说明书一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本说明书一个或多个实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。

相关技术
  • 一种数据查询方法、装置、电子设备及机器可读存储介质
  • 一种数据查询方法及装置、电子设备、计算机可读存储介质
技术分类

06120113047636