CN114547080A - 数据查询方法、系统、电子设备和存储介质 - Google Patents
数据查询方法、系统、电子设备和存储介质 Download PDFInfo
- Publication number
- CN114547080A CN114547080A CN202210172125.7A CN202210172125A CN114547080A CN 114547080 A CN114547080 A CN 114547080A CN 202210172125 A CN202210172125 A CN 202210172125A CN 114547080 A CN114547080 A CN 114547080A
- Authority
- CN
- China
- Prior art keywords
- target
- query
- data
- data source
- rule
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24564—Applying rules; Deductive queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/252—Integrating or interfacing systems involving database management systems between a Database Management System and a front-end application
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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
技术领域
本发明涉及数据处理领域,具体而言,涉及一种数据查询方法、系统、电子设备和存储介质。
背景技术
传统的应用软件RESTFUL接口开发基本都是采用硬编码来实现对数据库的访问,获取需要的业务数据。由于不同数据库的语言存在差异,导致开发和维护接口会耗费大量的时间和成本。
发明内容
有鉴于此,本发明的目的在于提供一种数据查询方法、系统、电子设备和存储介质。
为了实现上述目的,本发明实施例采用的技术方案如下:
第一方面,本发明提供一种数据查询方法,应用于电子设备,所述电子设备与客户端通信连接,所述电子设备预存有多种类型的数据源信息,每个所述数据源信息包括对应的数据库的信息和数据源标识;所述方法包括:
在监听到所述客户端的请求,解析所述请求,获得目标数据源标识和查询参数;所述目标数据源标识与目标数据库对应;所述查询参数表示查询条件;
根据所述目标数据源标识、所述查询参数和预设查询表达式,生成所述目标数据库对应的目标查询表达式;所述预设查询表达式表示与多种类型的数据库适配的预设查询规则;
根据所述目标查询表达式,从所述目标数据库中获取符合所述查询条件的目标数据;
根据所述目标数据得到查询结果并发送给所述客户端。
在可选的实施方式中,所述预设查询表达式包括数据库属性项和多个规则属性项,每个所述规则属性项均具有对应的规则参数,所述规则参数具有对应的数据结构类型;所述查询参数包括目标规则参数及其参数值;
所述根据所述目标数据源标识、所述查询参数和预设查询表达式,生成所述目标数据库对应的目标查询表达式的步骤,包括:
将所述目标规则参数的参数值转换为其对应的数据结构类型,获得目标对象;
将所述目标对象作为目标规则属性项的值,所述目标规则属性表示与所述目标规则参数对应的规则属性项;
将所述目标数据源标识作为所述数据库属性项的值,获得所述目标查询表达式。
在可选的实施方式中,所述多个规则属性项包括分页规则属性项;
所述根据所述目标查询表达式,从所述目标数据库中获取符合所述查询条件的目标数据的步骤,包括:
若所述目标规则属性项包含所述分页规则属性项,则根据所述目标查询表达式生成与所述目标数据库对应的分页总数查询语句和分页列表查询语句;
执行所述分页总数查询语句,从所述目标数据库中获取分页总数;
执行所述分页列表查询语句,从所述目标数据库中获取列表数据;
合并所述分页总数和所述列表数据,获得所述目标数据。
在可选的实施方式中,所述多个规则属性项包括分页规则属性项;
所述根据所述目标查询表达式,从所述目标数据库中获取符合所述查询条件的目标数据的步骤,包括:
若所述目标规则属性项不包含所述分页规则属性项,则根据所述目标查询表达式生成与所述目标数据库对应的非分页查询语句;
执行所述非分页查询语句,从所述目标数据库中获取所述目标数据。
在可选的实施方式中,所述电子设备还预存有数据源连接池,所述数据源连接池用于缓存访问所述数据库的数据源连接,每个所述数据源信息均包括每个所述数据库的连接信息;
所述执行所述非分页查询语句,从所述目标数据库中获取所述目标数据的步骤,包括:
若所述数据源连接池中存在访问所述目标数据库的目标数据源连接,则通过所述目标数据源连接访问所述目标数据库,执行所述非分页查询语句,获取所述目标数据;
若所述数据源连接池中不存在访问所述目标数据库的目标数据源连接,则根据所述目标数据库的连接信息创建所述目标数据源连接,并通过所述目标数据源连接访问所述目标数据库,执行所述非分页查询语句,获取所述目标数据。
在可选的实施方式中,所述目标数据包括数据类型;所述请求包括请求类型,所述请求类型包括同步类型和异步类型;
所述根据所述目标数据得到查询结果并发送给所述客户端的步骤,包括:
将所述目标数据的数据类型转换为预设数据类型,得到所述查询结果;
若所述请求中的请求类型为所述同步类型,则将所述查询结果发送给所述客户端;
若所述请求中的请求类型为所述异步类型,则所述请求还包括数据接收地址,按照所述数据接收地址将所述查询结果发送给所述客户端。
第二方面,本发明提供一种数据查询系统,所述数据查询系统包括:数据源管理模块和通用查询模块;
所述数据源管理模块,用于存储多种类型的数据源信息,每个所述数据源信息包括对应的数据库的信息和数据源标识;
所述通用查询模块,用于监听客户端应用的请求,解析所述请求,获得目标数据源标识和查询参数;所述目标数据源标识与目标数据库对应;所述查询参数表示查询条件;所述客户端应用是支持超文本传输协议的应用程序;
根据所述目标数据源标识、所述查询参数和预设查询表达式,生成所述目标数据库对应的目标查询表达式;所述预设查询表达式表示与多种类型的数据库适配的预设查询规则;
根据所述目标查询表达式,从所述目标数据库中获取符合所述查询条件的目标数据;
根据所述目标数据得到查询结果并发送给所述客户端应用。
在可选的实施方式中,所述预设查询表达式包括数据库属性项和多个规则属性项,每个所述规则属性项均具有对应的规则参数,所述规则参数具有对应的数据结构类型;所述查询参数包括目标规则参数及其参数值;所述通用查询模块具体用于:
将所述目标规则参数的参数值转换为其对应的数据结构类型,获得目标对象;
将所述目标对象作为目标规则属性项的值,所述目标规则属性表示与所述目标规则参数对应的规则属性项;
将所述目标数据源标识作为所述数据库属性项的值,获得所述目标查询表达式。
第三方面,本发明提供一种电子设备,包括处理器和存储器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时,实现前述实施方式中任一项所述的方法。
第四方面,本发明提供一种存储介质,所述存储介质上存储有计算机程序,该计算机程序被处理器执行时,实现前述实施方式中任一项所述的方法。
本发明实施例提供的数据查询方法、系统、电子设备和存储介质,电子设备中预存有多种类型的数据源信息,每个数据源信息包括对应的数据库的信息和数据源标识;电子设备在监听到客户端的请求,解析请求获得表示目标数据库的目标数据源标识和表示查询条件的查询参数;然后根据目标数据源标识、查询参数和预设查询表达式,该预设查询表达式表示与多种类型的数据库适配的预设查询规则,生成目标数据库对应的目标查询表达式;再根据目标查询表达式从目标数据库中获取符合查询条件的目标数据;最后根据目标数据得到查询结果并发送给客户端。通过查询表达式,屏蔽了不同数据库结构化查询语言的差异性,提升了接口的通用性和拓展性,降低了接口开发成本。并且相比于直接传入查询语句的方式,确保了数据的安全性。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本发明实施例提供的数据查询系统方框示意图;
图2示出了本发明实施例提供的通用查询模块方框示意图;
图3示出了本发明实施例提供的电子设备方框示意图;
图4示出了本发明实施例提供的数据查询方法的一种流程示意图;
图5示出了本发明实施例提供的数据查询方法的又一种流程示意图;
图6示出了本发明实施例提供的数据查询方法的又一种流程示意图;
图7示出了本发明实施例提供的数据查询方法的又一种流程示意图;
图8示出了本发明实施例提供的数据查询方法的又一种流程示意图;
图9示出了本发明实施例提供的数据查询方法的一个示例图。
图标:300-数据查询系统;310-数据源管理模块;330-通用查询模块;100-电子设备;110-总线;120-处理器;130-存储器;170-通信接口。
具体实施方式
下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,术语“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
传统的应用软件RESTFUL接口开发基本都是采用硬编码来实现对数据库的访问,获取需要的业务数据。由于不同数据库的语言存在差异,导致开发和维护接口会耗费大量的时间和成本。虽然目前也有采用接口直接传入数据库查询语句的方式,来减少接口开发成本,但是这种方式容易造成数据泄露和被非法篡改,降低了数据的安全性。进而,本发明实施例提供了一种数据查询方法,以解决上述问题。
请参照图1,本发明实施例提供的一种数据查询系统示意图。其中数据查询系统300包括数据源管理模块310和通用查询模块330。
数据源管理模块310,用于存储多种类型的数据源信息,每个数据源信息包括对应的数据库的信息和数据源标识;其可以提供数据源信息和敏感数据表信息配置查询功能。
可选地,数据库可以是关系型数据库如MySQL、PostgreSQL、Oracle、SQL Server等。关系型数据库(Relational database)是指建立在关系模型基础上的数据库,其借助于集合代数等数学概念和方法来处理数据。
通用查询模块330,用于监听客户端应用的请求,解析请求,获得目标数据源标识和查询参数;目标数据源标识与目标数据库对应;查询参数表示查询条件;根据目标数据源标识、查询参数和预设查询表达式,生成目标数据库对应的目标查询表达式;预设查询表达式表示与多种类型的数据库适配的预设查询规则;根据目标查询表达式,从目标数据库中获取符合查询条件的目标数据;根据目标数据得到查询结果并发送给客户端应用。
所述客户端应用是支持超文本传输协议的应用程序,其可以是WEB应用、APP应用或者其它应用。WEB应用是指基于浏览器开发的网络应用程序;APP应用是值基于各类移动端开发的应用程序;其它应用是指其它网络应用程序。
请参阅图2,通用查询模块包括HTTP接口控制单元、执行引擎单元、HTTP参数解析单元、SQL解析单元、SQL执行单元、数据转换单元和数据推送单元。
HTTP接口控制单元用于接收客户端的发送查询请求,并将查询请求传递给所述执行引擎单元;执行引擎单元用于控制其它单元执行对应的功能;HTTP参数解析单元用于解析客户端发送的查询请求;SQL解析单元用于将查询表达式转换为对应的数据库的查询语句;SQL执行单元用于向对应的数据库提交查询语句并获取执行结果;数据转换单元用于将执行结果的数据类型转换为JSON数据类型,同时将敏感数据的关键信息模糊化;数据推送单元用于异步执行时,将查询结果推送到客户端指定地址,该指定地址可以是HTTP接口、消息中间件、Web Socket等。
请参阅图3,是本发明实施例提供的一种电子设备的方框示意图。电子设备100包括总线110、处理器120、存储器130、通信接口170。
总线110可以是将上述元件相互连接并在上述元件之间传递通信(例如控制消息)的电路。
处理器120可以通过总线110从上述其它元件(例如存储器130、通信接口170等)接收命令,可以解释接收到的命令,并可以根据所解释的命令来执行计算或数据处理。
处理器120可能是一种集成电路芯片,具有信号处理能力。该处理器120可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(NetworkProcessor,NP)等;还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
存储器130可以存储从处理器120或其它元件(例如通信接口170等)接收的命令或数据或者由处理器120或其它元件产生的命令或数据。
存储器130可以是但不限于,随机存取存储器(Random Access Memory,RAM),只读存储器(Read Only Memory,ROM),可编程只读存储器(Programmable Read-Only Memory,PROM),可擦除只读存储器(Erasable Programmable Read-Only Memory,EPROM),电可擦除只读存储器(Electric Erasable Programmable Read-Only Memory,EEPROM)等。
通信接口170可用于与其他节点设备进行信令或数据的通信。
可以理解的是,图3所示的结构仅为电子设备100的结构示意图,电子设备100还可包括比图3中所示更多或者更少的组件,或者具有与图3所示不同的配置。图3中所示的各组件可以采用硬件、软件或其组合实现。
下面将以上述的电子设备100作为执行主体,执行本发明实施例提供的各个方法中的各个步骤,并实现对应技术效果。
请参阅图4,图4是本发明实施例提供的一种数据查询方法的流程示意图。
步骤S202,在监听到客户端的请求,解析请求,获得目标数据源标识和查询参数;
其中,目标数据源标识与目标数据库对应;查询参数表示查询条件。
在本实施例中,电子设备预存有多种类型的数据源信息,每个所述数据源信息包括对应的数据库的信息和数据源标识;
每个数据库均有对应的数据源标识,且每个数据库均存储有数据。
在电子设备监听到客户端的请求如HTTP(Hypertext Transfer Protocol,超文本传输协议)请求,则电子设备创建一个请求执行线程,用于处理客户端的请求。在执行这个请求执行线程过程中,解析请求,获取目标数据源标识和查询参数。
目标数据源标识所对应的数据库即目标数据库,其表示从该目标数据库中获取数据。查询参数表征查询条件,可以理解为获取符合该查询条件的数据。
步骤S204,根据目标数据源标识、查询参数和预设查询表达式,生成目标数据库对应的目标查询表达式;
其中,预设查询表达式表示与多种类型的数据库适配的预设查询规则;
在本实施例中,为了实现基于通用查询接口查询不同的数据库,则设置预设查询表达式,其表示与多种类型的数据库均适配的查询规则。
根据目标数据源标识、查询参数和预设查询表达式进行,可以生成目标查询表达式。可以理解为是数据查询的语义抽象,该目标查询表达式中包括目标数据库和查询条件的信息。
可选地,请求中包括请求类型,请求类型包括同步类型和异步类型。若请求类型是同步类型,则在当前的请求执行线程中继续执行下面的步骤。
若请求类型是异步类型,则在当前的请求执行线程中向该客户端返回已接收请求成功消息,并结束该请求执行线程,新建一个异步线程,通过异步线程执行下面的步骤。可见,对于异步类型的请求,通过异步线程进行后续步骤的处理,可以清除请求执行线程中内存临时数据,释放其占有的线程资源,从而有效地提高了数据查询的效率。
步骤S206,根据目标查询表达式,从目标数据库中获取符合查询条件的目标数据;
在本实施例中,根据目标查询表达式可以生成与该目标数据库对应的目标查询语句,执行目标查询语句,可以从目标数据库中获取符合查询条件的目标数据。
可以理解为,该目标查询表达式抽象出了此次数据查询的语义,然后基于该目标查询表达式生成目标查询语句,则是将语义转换为与目标数据库对应的语法,执行该目标查询语句就可以从目标数据库中获取到符合条件的数据即目标数据。可见通过目标查询表达式,可以屏蔽不同数据库结构化查询语言的差异性,从而提升接口的通用性和拓展性。
步骤S208,根据目标数据得到查询结果并发送给客户端;
在本实施例中,根据目标数据可以得到查询结果,然后将该查询结果发送给客户端,即完成数据查询。
可见上述步骤,电子设备在监听到客户端的请求,解析请求获得表示目标数据库的目标数据源标识和表示查询条件的查询参数;然后根据目标数据源标识、查询参数与预设查询表达式,该预设查询表达式表示与多种类型的数据库适配的预设查询规则,获得与目标数据库对应的目标查询表达式;再根据目标查询表达式从目标数据库中获取符合查询条件的目标数据;最后根据目标数据得到查询结果并发送给客户端。通过查询表达式,屏蔽了不同数据库结构化查询语言的差异性,提升了接口的通用性和拓展性,降低了接口开发成本。并且相比于直接传入查询语句的方式,确保了数据的安全性。
可选地,为了进一步保证数据的安全性,针对上述步骤S204,本发明实施例提供了一种可能的实现方式。请参阅图5,其中步骤S204包括以下步骤:
在介绍具体步骤之前,需要说明的是,本发明实施例提供的预设查询表达式包括数据库属性项和多个规则属性项,每个规则属性项均具有对应的规则参数。
可以理解的是,基于请求解析出的查询参数的结构可以是f_<rule>=<value>,其中f表示特定字符,rule表示规则参数,value表示规则参数的参数值。
其中,特定字符是为了过滤请求中的非法数据,即在解析请求参数时可以只获取以特定字符如“f”开头的参数,则可以得到规则参数,以确保数据的安全性。该特定字符可以按照实际应用设计,本发明实施例不作限定。
规则参数及其参数值用于表示查询条件,为了便于理解,本发明实施例给出了一个示例,如下表1所示:
表1
在上述表1中,“<>”表示动态必填参数,“[]”表示动态选填参数。
其中,参数table表示表名;参数column表示列名;参数alias表示别名;参数position表示对应规则位置,初始值为1,每个规则独立变化。
参数joinType表示关联类型,包含inner(内连接)、left(左连接)、right(右连接)、full(全连接)。
参数operator表示比较运算符,包含eq(等于)、neq(不等于)、gt(大于)、gteq(大于等于)、lt(小于)、lteq(小于等于)、in(包含)、nin(不包含)、btw(区间)。
function表示函数,支持数据库常见SQL函数。
参数aggregate表示聚合函数,包含count(统计)、sum(求和)、avg(平均)、min(最小值)、max(最大值)。
参数order表示排序,包含asc(升序)、desc(降序)。
参数start表示起始值;参数offset表示偏移量;参数object表示值可以为字符、数值、布尔。
在本实施例中,预设查询表达式可以用QueryExpression对象表示,数据库属性项可以用database表示,多个规则属性项包括:输出列规则属性项可以用items表示、查询主表及关联表规则属性项可以用from表示、过滤规则属性项可以用where表示、分组规则属性项可以用groupBy表示、分组筛选规则属性项可以用having表示、排序规则属性项可以用orderBy表示、分页规则属性项可以用limit表示。
基于上述给出规则参数和预设查询表达式,下面给出了一个构建出目标查询表达式的通用方式。
从请求中解析出来的目标数据源标识,将该目标数据源标识存入QueryExpression对象的数据库属性项database;
从请求中获取到“f_item_”开头的规则参数的参数值,得到输出列规则列表,将该输出列规则列表转换为List<QueryItem>对象,存入QueryExpression对象的输出列规则属性项items;
从请求中获取到“f_from_”、“f_join_”、“f_on_”开头的规则参数的参数值,将该参数值转换成单链表JoinExpresion对象,存入QueryExpression对象的查询主表及关联表规则属性项from;
从请求中获取到“f_where_”开头的规则参数的参数值,得到过滤规则列表,将过滤规则列表转换成双向链表ConditionExpression对象,存入QueryExpression对象的过滤规则属性项where;
从请求中获取到“f_gby_”开头的规则参数的参数值,得到分组规则列表,将分组规则列表转换成List<ColumnExpression>对象,存入QueryExpression对象的分组规则属性项groupBy;
从请求中获取到“f_hav_”开头的规则参数的参数值,得到分组筛选规则列表,将分组筛选规则列表转换成双向链表ConditionExpression对象,存入QueryExpression对象的分组筛选规则属性项having;
从请求中获取到“f_oby_”开头的规则参数的参数值,得到排序规则列表,将分组排序规则列表转换成List<OrderItem>对象,存入QueryExpression对象的排序规则属性项orderBy;
从请求中获取到“f_limit”开头的规则参数的参数值,得到分页规则,将分页规则参数转成Limit对象,存入所述QueryExpression对象的分页规则属性项limit。
为了便于理解,本发明实施例提供了一个示例,根据员工表(staff)和部门表(department)这两张表,查询员工类型为1、员工年龄在40-55岁之间的员工信息及所在部门信息,并基于年龄进行降序排序返回第一页数据。
员工表的主要字段如下表2所示:
表2
字段 | 类型 | 说明 |
number | long | 员工号 |
name | varchar | 姓名 |
age | int | 年龄 |
type | int | 员工类型 |
department | long | 所在部门 |
部门表的主要字段如下表3所示:
表3
步骤S204-1,将目标规则参数的参数值转换为其对应的数据结构类型,获得目标对象;
在本实施例中,解析请求得到的查询参数包括目标规则参数及其参数值。
例如,基于请求得到的目标规则参数及其参数值如下所示:
f_item_1=s.number_as_staff_num,
f_item_2=s.name_as_staff_name,
f_item_3=s.age,f_item_4=s.type,
f_item_5=d.number_as_dept_num,
f_item_6=d.name_as_dept_name,
f_from_1=staff_as_s,
f_join_1_left=department_as_d,
f_on_1_eq_s.department=d.number,
f_where_eq_s.type=1,
f_where_btw_s.age=40,55,
f_oby_1=s.age_desc,
f_limit=0,10
可以理解的是,若某一规则位置标记为1,则可以省略,如上述示例中f_from_1=staff_as_s可以简写成f_from=staff_as_s。上述示例仅作为解释本发明实施例的示例,其不对本发明构成限定。
将上述规则参数的参数值转换为对应的数据结构类型,得到目标对象。即基于规则参数item的参数值,得到目标对象即List<QueryItem>对象;基于规则参数from、join和on的参数值,得到目标对象即JoinExpresion对象;基于规则参数where的参数值,得到目标对象即ConditionExpression对象;基于规则参数oby的参数值,得到目标对象即List<OrderItem>对象;基于规则参数limit的参数值,得到目标对象即Limit对象。
步骤S204-3,将目标对象作为目标规则属性项的值,目标规则属性表示与目标规则参数对应的规则属性项;
步骤S204-5,将目标数据源标识作为数据库属性项的值,获得目标查询表达式。
在本实施例中,与目标规则参数对应的规则属性项即目标规则属性项包括输出列规则属性项items、查询主表及关联表规则属性项from、过滤规则属性项where、排序规则属性项orderBy和分页规则属性项limit。
将每个目标对象分别作为其对应的目标规则属性项的值。将List<QueryItem>对象存入输出列规则属性项items即作为输出列规则属性项items的值;将JoinExpresion对象作为查询主表及关联表规则属性项from的值;将ConditionExpression对象作为过滤规则属性项where的值;将List<OrderItem>对象作为排序规则属性项orderBy的值;将Limit对象作为分页规则属性项limit的值。
同时,将目标数据源标识作为数据库属性项database的值,则获得目标查询表达式。
可选地,针对上述步骤S206,本发明实施例提供了两种可能的实现方式,一种是非分页查询的实现方式,另一是分页查询的实现方式。下面先对非分页查询的实现方式进行说明,请参阅图6,其中步骤S206包括以下步骤:
步骤S206A-1,若目标规则属性项不包含分页规则属性项,则根据目标查询表达式生成与目标数据库对应的非分页查询语句;
在本实施例中,若目标查询表达式的目标规则属性项中未包括分页规则属性项,表示此次数据查询是非分页查询,则可以根据目标查询表达式,生成与目标数据库对应的非分页查询语句即非分页查询SQL语句。
步骤S206A-3,执行非分页查询语句,从目标数据库中获取目标数据。
在本实施例中,执行该非分页查询SQL语句,即将该非分页查询SQL语句提交到目标数据库并执行,得到执行结果,即从目标数据库中获取到符合查询条件的目标数据。
可选地,针对步骤S206A-3,本发明实施例提供了一种可能的实现方式。步骤S206A-3可以包括以下步骤:
S206A-3-1,若数据源连接池中存在访问目标数据库的目标数据源连接,则通过目标数据源连接访问目标数据库,执行非分页查询语句,获取目标数据;
需要说明的是,电子设备还预存有数据源连接池;数据源连接池用于缓存访问数据库的数据源连接;每个数据源信息均包括每个数据库的连接信息。
在本实施例中,若数据源连接池中存在访问目标数据库的目标数据源连接,则可以通过目标数据源连接访问目标数据库,执行该非分页查询SQL语句,获取到目标数据库的执行结果即目标数据。
S206A-3-3,若数据源连接池中不存在访问目标数据库的目标数据源连接,则根据目标数据库的连接信息创建目标数据源连接,并通过目标数据源连接访问目标数据库,执行非分页查询语句,获取目标数据。
在本实施例中,若数据源连接池中不存在访问目标数据库的目标数据源连接,则根据目标数据库的数据源信息创建目标数据源连接,可以理解为根据登录该目标数据库的连接信息创建目标数据源连接;然后将目标数据源连接存储到数据源连接池中,并通过该目标数据源连接访问目标数据库,执行该非分页查询SQL语句,获取到目标数据库的执行结果即目标数据。
下面将对分页查询的实现方式进行说明。请参阅图7,其中步骤S206包括以下步骤:
步骤S206B-1,若目标规则属性项包含分页规则属性项,则根据目标查询表达式生成与目标数据库对应的分页总数查询语句和分页列表查询语句;
在本发明实施例中,若目标查询表达式的目标规则属性项中包括分页规则属性项,表示此次数据查询是分页查询,则可以根据目标查询表达式,生成与目标数据库对应的分页总数查询语句即分页总数查询SQL语句,和分页列表查询语句即分页列表数据查询SQL语句。
步骤S206B-3,执行分页总数查询语句,从目标数据库中获取分页总数;
步骤S206B-5,执行分页列表查询语句,从目标数据库中获取列表数据;
在本实施例中,可以创建两个异步线程,分别执行分页总数查询语句和分页列表查询语句。
执行分页总数查询语句和分页列表查询语句的方式,与上述示例中执行非分页查询语句的方式类似。即确定数据源连接池是否存在目标数据源连接,若没有则需要基于目标数据库的连接信息创建目标数据源连接。
通过目标数据源连接访问目标数据库,执行分页总数查询语句即分页总数查询SQL语句,获取到目标数据库的执行结果,即从目标数据库中获取到分页总数。
通过目标数据源连接访问目标数据库,执行分页列表查询语句即分页列表数据查询SQL语句,获取到目标数据库的执行结果,即从目标数据库中获取到列表数据。
步骤S206B-7,合并分页总数和列表数据,获得目标数据。
在本实施例中,两个异步线程执行完成后,将获取到的分页总数和列表数据进行合并,可以获得目标数据。
可选地,针对上述步骤S208,本发明实施例提供了一种可能的实现方式,请参阅图8,其中步骤S208包括以下步骤:
步骤S208-1,将目标数据的数据类型转换为预设数据类型,得到查询结果;
可以理解的是,不同的数据库存储的数据的数据类型不同,该目标数据具有的数据类型与目标数据库对应。
在本实施例中,可以将目标数据的数据类型转换成预设数据类型如JSON数据类型,得到查询结果。
可选地,为了进一步确保数据的安全性,除了将目标数据的数据类型转换成JSON数据类型以外,还可以对配置有敏感标记的敏感数据的关键信息进行模糊化处理,得到查询结果。
步骤S208-3A,若请求中的请求类型为同步类型,则将查询结果发送给客户端;
步骤S208-3B,若请求中的请求类型为异步类型,则请求还包括数据接收地址,按照数据接收地址将查询结果发送给客户端。
在本实施例中,请求包括请求类型,请求类型包括同步类型和异步类型,若请求中的请求类型是同步类型,则将查询结果发送给客户端;若请求中的请求类型是异步类型,则该请求中还包括客户端提供的数据接收地址,将查询结果推送到该数据接收地址。
需要说明的是,本发明实施例提供的数据查询方法,也可以适应于非关系型数据库如Elasticsearch、mongodb数据库的数据查询,以及其它支持单表搜索场景的非关系型数据库。
可选地,本发明实施例还提供一个SQL表达式类的示例图,请参阅图9,其包含本发明实施例中QueryExpression、QueryItem、JoinExpresion、ColumnExpression、ConditionExpression、OrderItem、Limit等对象之间的关系。图中,空心箭头实线表示继承,尖型箭头实线表示依赖关系,空心箭头虚线表示接口实现。
SQLExpression为表达式顶级接口类,其直接子类有QueryExpression、TableExpression、JoinExpression、ConditionExpression、FunctionExpression、ValueExpression、Limit。
子类QueryExpression为查询表达式对象,属性database存储数据源标识,属性items存储查询数据表列信息,属性from存储查询主表信息及关联表信息,属性where存储查询条件,属性groupBy存储分组查询信息,属性having存储分组查询条件,属性orderBy存储结果排序信息,属性limit存储分页信息。
子类TableExpression为数据表表达式,属性schema存储表模式,属性tableName存储表名,属性tableAlias存储表别名,其直接子类有ColumnExpression,间接子类有OrderItem、QueryItem,ColumnExpression为数据表列表达式,继承TableExpression所有属性,其自身属性columnName存储列名,属性columnAlias存储列别名;OrderItem为排序表达式,继承ColumnExpression所有属性,其自身属性order存储排序方式,QueryItem为查询项表达式,继承ColumnExpression所有属性,其自身属性fun存储SQL函数信息,属性value存储SQL值。
子类JoinExpression为查询主表、关联表、关联条件表达式,使用单向链表存储关联表信息,属性type存储关联类型,属性on存储关联条件,属性table存储表信息,属性join存储其它关联表信息。
子类ConditionExpression为条件表达式抽象类,使用双向链表存储条件信息,其中属性left存储左边条件,属性right存储右边条件,其直接子类AndExpression、OrExpression、CompareExpression,均依赖于SQL操作符枚举类SQLOperator。AndExpression为与表达式,继承ConditionExpression所有属性,属性operation值为AND操作符;OrExpression为或表达式,继承ConditionExpression所有属性,属性operation值为OR操作符;CompareExpression为比较表达式,属性operation值为比较操作符,根据查询条件填充对应比较操作符,具体包含EQ(等于)、NEQ(不等于)、GT(大于)、GTEQ(大于等于)、LT(小于)、LTEQ(小于等于)、IN(包含)、NIN(不包含)、BTW(区间)。
子类FunctionExpression为函数表达式,属性name存储函数名称,属性params存储函数参数。
子类ValueExpression为值对象表达式,属性value存储值内容,属性type存储数据库值类型。
子类Limit为分页表达式,属性start存储查询起始数据位置,属性offset存储要获取的数据条数。
本发明实施例还提供了一种电子设备,包括处理器120和存储器130,存储器130存储有计算机程序,处理器执行计算机程序时,实现上述实施例揭示的数据查询方法。
本发明实施例还提供了一种存储介质,其上存储有计算机程序,该计算机程序被处理器120执行时实现本发明实施例揭示的数据查询方法。
综上所述,本发明实施例提供的数据查询方法、系统、电子设备和存储介质。电子设备预存有多种类型的数据源信息,每个数据源信息包括对应的数据库的信息和数据源标识;电子设备在监听到客户端的请求,解析请求获得表示目标数据库的目标数据源标识和表示查询条件的查询参数;然后根据目标数据源标识、查询参数和预设查询表达式,该预设查询表达式表示与多种类型的数据库适配的预设查询规则,生成目标数据库对应的目标查询表达式;再根据目标查询表达式从目标数据库中获取符合查询条件的目标数据;最后根据目标数据得到查询结果并发送给客户端。通过查询表达式,屏蔽了不同数据库语言的差异性,提升了接口的通用性和拓展性,降低了开发成本,确保了数据的安全性。
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种数据查询方法,其特征在于,应用于电子设备,所述电子设备与客户端通信连接,所述电子设备预存有多种类型的数据源信息,每个所述数据源信息包括对应的数据库的信息和数据源标识;所述方法包括:
在监听到所述客户端的请求,解析所述请求,获得目标数据源标识和查询参数;所述目标数据源标识与目标数据库对应;所述查询参数表示查询条件;
根据所述目标数据源标识、所述查询参数和预设查询表达式,生成所述目标数据库对应的目标查询表达式;所述预设查询表达式表示与多种类型的数据库适配的预设查询规则;
根据所述目标查询表达式,从所述目标数据库中获取符合所述查询条件的目标数据;
根据所述目标数据得到查询结果并发送给所述客户端。
2.根据权利要求1所述的方法,其特征在于,所述预设查询表达式包括数据库属性项和多个规则属性项,每个所述规则属性项均具有对应的规则参数,所述规则参数具有对应的数据结构类型;所述查询参数包括目标规则参数及其参数值;
所述根据所述目标数据源标识、所述查询参数和预设查询表达式,生成所述目标数据库对应的目标查询表达式的步骤,包括:
将所述目标规则参数的参数值转换为其对应的数据结构类型,获得目标对象;
将所述目标对象作为目标规则属性项的值,所述目标规则属性表示与所述目标规则参数对应的规则属性项;
将所述目标数据源标识作为所述数据库属性项的值,获得所述目标查询表达式。
3.根据权利要求2所述的方法,其特征在于,所述多个规则属性项包括分页规则属性项;
所述根据所述目标查询表达式,从所述目标数据库中获取符合所述查询条件的目标数据的步骤,包括:
若所述目标规则属性项包含所述分页规则属性项,则根据所述目标查询表达式生成与所述目标数据库对应的分页总数查询语句和分页列表查询语句;
执行所述分页总数查询语句,从所述目标数据库中获取分页总数;
执行所述分页列表查询语句,从所述目标数据库中获取列表数据;
合并所述分页总数和所述列表数据,获得所述目标数据。
4.根据权利要求2所述的方法,其特征在于,所述多个规则属性项包括分页规则属性项;
所述根据所述目标查询表达式,从所述目标数据库中获取符合所述查询条件的目标数据的步骤,包括:
若所述目标规则属性项不包含所述分页规则属性项,则根据所述目标查询表达式生成与所述目标数据库对应的非分页查询语句;
执行所述非分页查询语句,从所述目标数据库中获取所述目标数据。
5.根据权利要求4所述的方法,其特征在于,所述电子设备还预存有数据源连接池,所述数据源连接池用于缓存访问所述数据库的数据源连接,每个所述数据源信息均包括每个所述数据库的连接信息;
所述执行所述非分页查询语句,从所述目标数据库中获取所述目标数据的步骤,包括:
若所述数据源连接池中存在访问所述目标数据库的目标数据源连接,则通过所述目标数据源连接访问所述目标数据库,执行所述非分页查询语句,获取所述目标数据;
若所述数据源连接池中不存在访问所述目标数据库的目标数据源连接,则根据所述目标数据库的连接信息创建所述目标数据源连接,并通过所述目标数据源连接访问所述目标数据库,执行所述非分页查询语句,获取所述目标数据。
6.根据权利要求1所述的方法,其特征在于,所述目标数据包括数据类型;所述请求包括请求类型,所述请求类型包括同步类型和异步类型;
所述根据所述目标数据得到查询结果并发送给所述客户端的步骤,包括:
将所述目标数据的数据类型转换为预设数据类型,得到所述查询结果;
若所述请求中的请求类型为所述同步类型,则将所述查询结果发送给所述客户端;
若所述请求中的请求类型为所述异步类型,则所述请求还包括数据接收地址,按照所述数据接收地址将所述查询结果发送给所述客户端。
7.一种数据查询系统,其特征在于,所述数据查询系统包括:数据源管理模块和通用查询模块;
所述数据源管理模块,用于存储多种类型的数据源信息,每个所述数据源信息包括对应的数据库的信息和数据源标识;
所述通用查询模块,用于监听客户端应用的请求,解析所述请求,获得目标数据源标识和查询参数;所述目标数据源标识与目标数据库对应;所述查询参数表示查询条件;所述客户端应用是支持超文本传输协议的应用程序;
根据所述目标数据源标识、所述查询参数和预设查询表达式,生成所述目标数据库对应的目标查询表达式;所述预设查询表达式表示与多种类型的数据库适配的预设查询规则;
根据所述目标查询表达式,从所述目标数据库中获取符合所述查询条件的目标数据;
根据所述目标数据得到查询结果并发送给所述客户端应用。
8.根据权利要求7所述的系统,其特征在于,所述预设查询表达式包括数据库属性项和多个规则属性项,每个所述规则属性项均具有对应的规则参数,所述规则参数具有对应的数据结构类型;所述查询参数包括目标规则参数及其参数值;所述通用查询模块具体用于:
将所述目标规则参数的参数值转换为其对应的数据结构类型,获得目标对象;
将所述目标对象作为目标规则属性项的值,所述目标规则属性表示与所述目标规则参数对应的规则属性项;
将所述目标数据源标识作为所述数据库属性项的值,获得所述目标查询表达式。
9.一种电子设备,其特征在于,包括处理器和存储器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时,实现权利要求1至6中任一项所述的方法。
10.一种存储介质,其特征在于,所述存储介质上存储有计算机程序,该计算机程序被处理器执行时,实现权利要求1至6中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210172125.7A CN114547080A (zh) | 2022-02-24 | 2022-02-24 | 数据查询方法、系统、电子设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210172125.7A CN114547080A (zh) | 2022-02-24 | 2022-02-24 | 数据查询方法、系统、电子设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114547080A true CN114547080A (zh) | 2022-05-27 |
Family
ID=81677316
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210172125.7A Pending CN114547080A (zh) | 2022-02-24 | 2022-02-24 | 数据查询方法、系统、电子设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114547080A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115185999A (zh) * | 2022-09-13 | 2022-10-14 | 北京达佳互联信息技术有限公司 | 数据处理方法及装置 |
CN115658794A (zh) * | 2022-12-09 | 2023-01-31 | 深圳高灯计算机科技有限公司 | 数据查询方法、装置、计算机设备和存储介质 |
CN115954108A (zh) * | 2023-03-10 | 2023-04-11 | 成都数之联科技股份有限公司 | 一种数据分析异步处理方法及系统及装置及介质 |
-
2022
- 2022-02-24 CN CN202210172125.7A patent/CN114547080A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115185999A (zh) * | 2022-09-13 | 2022-10-14 | 北京达佳互联信息技术有限公司 | 数据处理方法及装置 |
CN115658794A (zh) * | 2022-12-09 | 2023-01-31 | 深圳高灯计算机科技有限公司 | 数据查询方法、装置、计算机设备和存储介质 |
CN115658794B (zh) * | 2022-12-09 | 2023-05-12 | 深圳高灯计算机科技有限公司 | 数据查询方法、装置、计算机设备和存储介质 |
CN115954108A (zh) * | 2023-03-10 | 2023-04-11 | 成都数之联科技股份有限公司 | 一种数据分析异步处理方法及系统及装置及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114547080A (zh) | 数据查询方法、系统、电子设备和存储介质 | |
CN109388637B (zh) | 数据仓库信息处理方法、装置、系统、介质 | |
JP6213247B2 (ja) | データ記憶システム、データ記憶システムで実行されるプログラム及び方法 | |
US7243093B2 (en) | Federated query management | |
CN109582691B (zh) | 用于控制数据查询的方法和装置 | |
US10318752B2 (en) | Techniques for efficient access control in a database system | |
US9098558B2 (en) | Enhanced flexibility for users to transform XML data to a desired format | |
TWI564737B (zh) | Web search methods and devices | |
US9229967B2 (en) | Efficient processing of path related operations on data organized hierarchically in an RDBMS | |
WO2003077142A1 (en) | Method, apparatus, and system for data modeling and processing | |
US8843473B2 (en) | Method and server for handling database queries | |
US7461057B2 (en) | Query plan execution by implementation of plan operations forming a join graph | |
CN110990447A (zh) | 一种数据探查方法、装置、设备及存储介质 | |
CN112860730A (zh) | Sql语句的处理方法、装置、电子设备及可读存储介质 | |
US10417058B1 (en) | Method and system for executing application programming interface (API) requests based on parent-child object relationships | |
US7882089B1 (en) | Caching database information | |
CN114969441A (zh) | 基于图数据库的知识挖掘引擎系统 | |
EP3168791A1 (en) | Method and system for data validation in knowledge extraction apparatus | |
US8676787B2 (en) | Distributed multi-step abstract queries | |
US10635646B2 (en) | Generating a view for a schema including information on indication to transform recursive types to non-recursive structure in the schema | |
US20060101045A1 (en) | Methods and apparatus for interval query indexing | |
CN113853597A (zh) | 一种用于查询工业数据的方法以及查询模块 | |
US20230145069A1 (en) | Automated data health reasoning | |
KR20010055959A (ko) | 문서관리 시스템에서의 정보 재사용을 위한에스지엠엘/엑스엠엘 엔티티의 저장/복원 장치 및 그 방법 | |
Abatal et al. | SQL2SPARQL4RDF: Automatic SQL to SPARQL conversion for RDF querying |
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 |