CN111611276A - 数据查询方法、装置及存储介质 - Google Patents

数据查询方法、装置及存储介质 Download PDF

Info

Publication number
CN111611276A
CN111611276A CN202010508086.4A CN202010508086A CN111611276A CN 111611276 A CN111611276 A CN 111611276A CN 202010508086 A CN202010508086 A CN 202010508086A CN 111611276 A CN111611276 A CN 111611276A
Authority
CN
China
Prior art keywords
filtering
data
query
data segment
sorting
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
CN202010508086.4A
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.)
Tencent Cloud Computing Beijing Co Ltd
Original Assignee
Tencent Technology Shenzhen 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202010508086.4A priority Critical patent/CN111611276A/zh
Publication of CN111611276A publication Critical patent/CN111611276A/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/2453Query optimisation
    • 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/25Integrating or interfacing systems involving database management systems

Landscapes

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

Abstract

本申请公开了一种数据查询方法、装置及存储介质,属于数据库技术领域。在本申请实施例中,数据查询请求中可以携带有过滤参数,该过滤参数可以包括一个或多个过滤数据段,每个过滤数据段可以包括一个搜索过滤字段、操作符和操作符参数值。服务器可以根据过滤数据段的数据结构对每个过滤数据段进行处理,进而得到处理结果,之后,可以根据该处理结果生成查询语句进行数据查询。也即,本申请实施例中,开发人员只需根据过滤数据段的数据结构来进行查询接口的设计即可。如果需要增加字段,客户端只需在过滤参数中增加一个过滤数据段即可,而无需对查询接口进行重新编码,减少了开发人员的重复编码工作。

Description

数据查询方法、装置及存储介质
技术领域
本申请涉及互联网技术领域,特别涉及一种数据查询方法、装置及存储介质。
背景技术
当前,为web浏览器提供后台数据库查询服务的服务器通常所采用的查询接口为表述型状态转移(Representational State Transfer,RESTful)形式的接口。开发人员在设计此类查询接口时,需要为该查询接口对应的一个或多个搜索过滤字段中的每个搜索过滤字段设置参数映射关系,从而得到该查询接口的接口代码。这样,后续服务器在接收到数据查询请求时,可以将相应搜索过滤字段根据上述参数映射关系进行参数映射,从而得到查询语句,进而通过查询语句来实现数据库查询。然而,在某些场景中,针对某个查询接口,可能需要增加搜索过滤字段,在这种情况下,开发人员即需要根据增加的搜索过滤字段和之前的搜索过滤字段重新编写接口代码,费时费力。
发明内容
本申请实施例提供了一种数据查询方法、装置及存储介质,可以减少开发人员在设计查询接口时的代码量。所述技术方案如下:
一方面,提供了一种数据查询方法,所述方法包括:
接收数据查询请求,所述数据查询请求携带过滤参数,所述过滤参数包括一个或多个过滤数据段,所述过滤数据段用于指示一个搜索过滤字段;
根据存储的过滤数据段的数据结构,对所述过滤参数包括的过滤数据段进行处理,得到处理结果;
根据所述处理结果生成查询语句;
根据所述查询语句进行数据查询。
另一方面,提供了一种数据查询装置,所述装置包括:
接收模块,用于接收数据查询请求,所述数据查询请求携带过滤参数,所述过滤参数包括一个或多个过滤数据段,所述过滤数据段用于指示一个搜索过滤字段;
处理模块,用于根据存储的过滤数据段的数据结构,对所述过滤参数包括的过滤数据段进行处理,得到处理结果;
生成模块,用于根据所述处理结果生成查询语句;
查询模块,用于根据所述查询语句进行数据查询。
另一方面,提供了一种数据查询装置,所述装置包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器执行所述存储器中的可执行指令来执行上述数据查询方法。
另一方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或所述指令集由处理器加载并执行以实现如权利要求1至6任一所述的数据查询方法。
本申请实施例提供的技术方案带来的有益效果至少包括:
在本申请实施例中,数据查询请求中可以携带有过滤参数,该过滤参数可以包括一个或多个过滤数据段,每个过滤数据段可以包括一个搜索过滤字段。服务器可以根据过滤数据段的数据结构对每个过滤数据段进行处理,进而得到处理结果,之后,可以根据该处理结果生成查询语句进行数据查询。也即,本申请实施例中,开发人员只需根据过滤数据段的数据结构来进行查询接口的设计即可。如果需要增加字段,客户端只需在过滤参数中增加一个过滤数据段即可,而无需对查询接口进行重新编码,减少了开发人员的重复编码工作。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种数据查询***的***架构图;
图2是本申请实施例提供的一种服务器的框架架构图;
图3是本申请实施例提供的一种数据查询方法的流程图;
图4是本申请实施例提供的一种查询流程的示意图;
图5是本申请实施例提供的一种数据查询装置的结构示意图;
图6是本申请实施例提供的一种用于数据查询的服务器的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
在对本申请实施例进行详细的解释说明之前,先对本申请实施例涉及的应用场景进行介绍。
数据库(Database),简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增、查询、更新、删除等操作。所谓“数据库”是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。
数据库管理***(英语:Database Management System,简称DBMS)是为管理数据库而设计的电脑软件***,一般具有存储、截取、安全保障、备份等基础功能。数据库管理***可以依据它所支持的数据库模型来作分类,例如关系式、XML(Extensible MarkupLanguage,即可扩展标记语言);或依据所支持的计算机类型来作分类,例如服务器群集、移动电话;或依据所用查询语言来作分类,例如SQL(结构化查询语言(Structured QueryLanguage)、XQuery;或依据性能冲量重点来作分类,例如最大规模、最高运行速度;亦或其他的分类方式。不论使用哪种分类方式,一些DBMS能够跨类别,例如,同时支持多种查询语言。
当前,对于web浏览器、移动设备等客户端,为其提供数据库查询服务的查询接口通常均为RESTful形式的。这些查询接口可能会涉及到多个搜索过滤字段的组合查询,例如,对于购物网站的网页,用户可能同时需要通过商品名称、商品属性、商品价格等多个搜索过滤字段来进行组合查询。在这种情况下,在设计查询接口时,开发人员通常的做法是为每个搜索过滤字段设置一个结构为key-value的映射,以此来编写接口代码。在此基础上,如果网页需要新增一个搜索过滤字段时,例如,当需要新增商品产地这一搜索过滤字段时,开发人员需要重新为新增的搜索过滤字段设置key-value的映射,进而根据重新设置的映射重新进行编码。由此可见,目前查询接口每增加一个字段,开发人员就需要进行一次重复编码,工作量较大。而且,不同的查询接口对应有自己的接口代码,根据编写接口代码的人员的风格的不同,不同的查询接口的代码的分割也会不同,增加了代码维护成本。本申请实施例提供的数据查询方法即可以应用于上述web浏览器或者是移动设备等客户端进行数据库查询的场景中,以解决前述相关技术中存在的开发人员重复编码工作量大以及代码维护成本高的问题。
接下来对本申请实施例所涉及的***架构进行介绍。
图1是本申请实施例提供的一种数据查询***的示意图。如图1所示,该数据查询***包括终端设备101和服务器102。其中,终端101可以与服务器102通信。
需要说明的是,终端设备101中可以安装有web浏览器,或者是终端设备101可以为安装有各种客户端应用的移动终端设备。终端设备101可以向服务器102发送查询请求,该查询请求中可以携带过滤参数,该过滤参数可以包括一个或多个过滤数据段,每个过滤数据段可以包括一个搜索过滤字段、字段参数和操作符等。
服务器102可以接收终端设备101发送的查询请求,并根据本申请实施例提供的数据查询方法对该查询请求进行处理,从而得到查询数据,向终端设备101返回最终的查询数据。
其中,参见图2,服务器102上的框架架构可以包括web框架1021、查询框架1022、ORM(Object Relational Mapping,对象关系映射)层1023和数据库层1024。
其中,web框架1021作为接入层,可以用于接收终端设备101发送的请求,并对接收到的请求进行解析。其中,接收到的请求可以为查询get请求、新增post请求、更新put请求、删除delete请求。Web框架可以为诸如Gin,Beego等go语言中的web框架,本申请实施例对此不做限定。
查询框架1022可以根据本申请实施例提供的数据查询方法,对web框架接收到的请求中的参数进行校验处理。需要说明的是,在本申请实施例中,查询框架1022可以根据本申请实施例提供的过滤数据段的结构、排序数据段的结构等进行设计,这样,后续即使需要增加字段,只需客户端在请求中按照过滤数据段的结构增加对应的过滤数据段即可,查询框架无需进行重新编码。
ORM层1023可以以插件的形式引入到查询框架1022中,用于在查询框架对请求中的参数进行校验处理之后,生成查询语句。其中,ORM层1023可以封装各个数据库实现的差异性,以实现对不同的数据库的查询。示例性地,ORM层1023可以为使用Go语言开发的GORM,也可以为XORM。本申请实施例对此不作限定。
数据库层1024可以包括多种数据库,例如MySQL、SQLite、PostgreSQL和SQLServer等,ORM层1023在生成查询语句之后,可以执行该查询语句,从而实现对某个数据库的数据查询。
需要说明的是,上述的服务器102可以为一台服务器,也可以为一个服务器集群,相应地,上述介绍的web框架1021、查询框架1022、ORM层1023和数据库层1024可以部署在一台服务器上,也可以分布部署于一个服务器集群中,本申请实施例对此不作限定。
接下来对本申请实施例提供的数据查询方法进行介绍。
图3是本申请实施例提供的一种数据查询方法。该方法可以应用于服务器中,例如,可以应用于图1和图2所示的服务器中。如图3所示,该方法包括以下步骤:
步骤301:接收数据查询请求,该数据查询请求携带过滤参数,该过滤参数包括一个或多个过滤数据段,每个过滤数据段用于指示一个搜索过滤字段。
在本申请实施例中,当用户需要进行数据查询时,可以通过客户端向服务器发送数据查询请求,相应地,服务器可以接收该数据查询请求,该数据查询请求可以为get请求。
其中,该数据查询请求中可以携带有过滤参数。该过滤参数可以包括一个或多个过滤数据段,每个过滤数据段可以包括一个搜索过滤字段、该搜索过滤字段对应的操作符和操作符参数值,可选地,还可以包括操作符参数值对应的数据类型。
需要说明的是,每个过滤数据段的数据结构均是相同的,且每个过滤数据段都包含一个搜索过滤字段,通过将多个过滤数据段进行与或组合得到过滤参数,可以实现对多个搜索过滤字段的组合查询。
示例性地,该过滤数据段的结构可以为:{“name”:<fieldname>,“op”:<operatorname>,“type”:<datatype>,“values”:<arguments>},其中,name字段即为搜索过滤字段。op字段表示操作符,其中,操作符可以为in”、”>=”、“<=”、”==”、”!=”等常用操作符。Values字段为操作符所要操作的参数值,也即操作符参数值,Type字段表示values字段中的数据类型,也即操作符参数值的数据类型。
当用户需要根据多个搜索过滤字段进行查询时,可以按照上述过滤数据段的数据结构得到包含有多个搜索过滤字段的过滤数据段,将多个过滤数据段组合为过滤参数。
可选地,数据查询请求中还可以携带有排序参数,该排序参数可以包括一个或多个排序数据段,每个排序数据段包括排序字段和排序方式。同样的,各个排序数据段的数据结构也是一样的,这样,通过该多个排序数据段进行与或组合得到排序参数,根据该排序参数即可以实现多个字段的组合排序。
示例性地,排序数据段的数据结构可以为:{“name”:<fieldname>,“order_by”:<ordertype>}。其中,name字段是指排序字段,order_by字段是指排序方式。其中,排序方式可以包括升序排序方式和降序排序方式。
可选地,在本申请实施例中,数据查询请求中还可以携带分页参数,该分页参数可以用于指示返回的每组查询结果的个数。示例性地,该分页参数可以为10,则返回的每组查询结果的个数可以为10,客户端可以以10个查询结果为一页进行显示。
可选地,该数据查询请求中还可以携带有分页偏移值offset,该分页偏移值是根据分页参数确定的,用于指示每页的下一页的偏移值,例如,假设前述的分页参数为10,也即每页的查询结果为10个,则第二页的偏移即为11,也即,第二页的第一个查询结果为第11个查询结果。
步骤302:根据存储的过滤数据段的数据结构,对过滤参数包括的每个过滤数据段进行处理,得到处理结果。
服务器在接收到数据查询请求之后,可以对数据查询请求中携带的参数进行处理。
示例性地,服务器可以首先根据存储的过滤数据段的数据结构来对过滤参数中的每个过滤数据段进行解析,从而得到每个过滤数据段包括的搜索过滤字段、操作符和操作符参数值,可选地,还可以包括操作符参数值的数据类型。之后,对每个过滤数据段包括的搜索过滤字段、操作符和操作符参数值进行校验。如果校验通过,则可以根据每个过滤数据段包括的操作符对相应过滤数据段的操作符参数值进行处理,从而得到处理结果。
其中,开发人员可以根据过滤数据段的数据结构,在服务器中设计查询接口,也即前述图2中所示的查询框架,由于该查询框架是按照过滤数据段的数据结构来编写的代码,相当于是存储了过滤数据段的数据结构,所以,对于任一个过滤数据段,服务器通过该查询框架均能实现对相应过滤数据段的处理。在这种情况下,即使需要新增加搜索过滤字段,该查询框架也无需进行重新编码,客户端只需按照过滤数据段的数据结构在过滤参数中增加与新增的搜索过滤字段对应的过滤数据段,查询框架根据统一的过滤数据段的数据结构也依然可以对该过滤数据段完成处理。
需要说明的是,由于查询框架存储有过滤数据段的数据结构,所以服务器通过该查询框架,可以对每个过滤数据段进行解析,从而得到相应过滤数据段内包括的搜索过滤字段、操作符、操作符参数值和数据类型。之后,查询框架可以检测每个过滤数据段包括的搜索过滤字段是否为数据库中存储的字段,如果任一搜索过滤字段不为数据库中存储的字段,则说明该搜索过滤字段为非法字段,此时,可以确定对各个过滤数据段的校验未通过。当然,如果每个过滤数据段包括的搜索过滤字段均为数据库中存储的字段,则说明各个搜索过滤字段均是合法的,接下来,服务器可以对各个过滤数据段中的操作符进行校验。
可选地,查询框架也可以检测每个过滤数据段包括的搜索过滤字段是否为允许查询的字段。其中,允许查询的字段是指预先设置的允许用户进行查询的数据库中存储的字段。如果每个搜索过滤字段均为允许查询的字段,则确定各个搜索过滤字段合法,如果任一搜索过滤字段不为允许查询的字段,则确定对各个过滤数据段的校验未通过。
其中,服务器中可以存储有参考操作符集合,该参考操作符集合包括有服务器所支持的所有操作符。基于此,服务器可以将各个过滤数据段中的操作符和参考操作符集合中的操作符进行比对,如果各个过滤数据段中的操作符存在不属于参考操作符集合的操作符,则说明过滤数据段中存在服务器不支持的操作符,此时,可以确定对各个过滤数据段的校验未通过。如果各个过滤数据段中的操作符均为服务器支持的操作符,此时,可以确定对各个过滤数据段中的操作符的校验通过,接下来,服务器可以进一步检测各个过滤数据段中的操作符参数值的数据类型进行校验。
需要说明的是,不同的操作符所能操作的参数值的数据类型不同,基于此,在本申请实施例中,服务器还可以结合各个过滤数据段中的操作符对相应过滤数据段中的操作符参数值进行校验,以此来确定操作符参数值的数据类型是否为相应操作符所支持的数据类型。
示例性地,在本申请实施例中,服务器可以存储有操作符和支持的数据类型之间的映射关系,基于此,服务器可以确定各个过滤数据段中包括的操作符参数值的数据类型,并根据相应过滤数据段中包括的操作符从上述映射关系中获取该操作符所支持的数据类型。之后,将各个过滤数据段中包括的操作符参数值的数据类型与获取的相应过滤数据段的操作符所支持的数据类型进行比对,如果获取的操作符所支持的数据类型中不包括相应过滤数据段中操作符参数值的数据类型,则说明该操作符参数值不为该操作符所支持的数据类型,此时,可以确定该过滤数据段的校验未通过。如果各个过滤数据段中操作符所支持的数据类型中均包括相应过滤数据段中操作符参数值的数据类型,则说明该操作符参数值是该操作符所支持的数据类型,此时,可以确定对各个过滤数据段中的操作符参数值的校验通过。
当对各个过滤数据段中的搜索过滤字段、操作符、操作符参数值的校验均通过之后,服务器可以确定对过滤参数的校验通过,接下来服务器可以根据各个过滤数据段中的操作符对操作符参数值进行处理,得到处理结果。
示例性地,服务器可以通过各个过滤数据段中的操作符对相应过滤数据段中的操作符参数值进行操作,从而得到处理结果。例如,当操作符为“==”,操作符参数值为5时,则服务器可以获取5这个数值,作为处理结果。当操作符为“>=”,操作符参数值为5时,则服务器可以得到一个[5,+∞]的取值范围。
当然,如果对上述任一个过滤数据段中的搜索过滤字段或操作符或操作符参数值的校验未通过,则服务器可以结束操作,也即停止进行数据查询。
值得注意的是,上述对搜索过滤字段、操作符和操作符参数值的校验顺序可以为其他顺序,例如,可以先校验操作符、操作符参数值,再校验搜索过滤字段,或者可以不分先后,同时进行校验,本申请实施例对此不作限定。
可选地,由步骤301中的介绍可知,数据查询请求中还可以携带有排序参数,在这种情况下,服务器还可以对排序参数进行校验。
其中,开发人员在设计查询框架时,不仅可以根据过滤数据段的数据结构进行代码编写,还可以同时根据排序数据段的数据结构进行代码编写,在这种情况下,该查询框架相当于是包括了用于处理过滤数据段的数据结构以及排序数据段的数据结构,这样,在对排序参数进行校验时,服务器可以首先通过该查询框架对排序参数中的每个排序数据段进行解析,从而得到每个排序数据段包括的排序字段和排序方式;之后,服务器可以对每个排序数据段包括的排序字段和排序方式进行校验。
需要说明的是,服务器对每个排序数据段包括的排序字段进行校验时,可以检测各个排序数据段包括排序字段是否为数据库中的字段,如果某个排序数据段的排序字段不为数据库中的字段,则认为该排序字段不合法,此时,可以确定该排序数据段的校验未通过。如果各个排序数据段中的排序字段均为数据库中的字段,则说明对排序字段的校验通过,接下来服务器可以对各个排序数据段中的排序方式进行校验。
可选地,服务器也可以检测各个排序数据段包括的排序字段是否为允许排序的字段。其中,允许排序的字段是指预先设置的允许用户进行查询并对其进行排序的数据库中存储的字段。如果每个排序字段均为允许排序的字段,则确定对各个排序字段的校验通过,如果任一排序字段不为允许排序的字段,则确定对该排序字段的校验未通过。
其中,服务器中存储有参考排序方式集合,该参考排序方式集合可以存储有服务器所支持的各种排序方式。基于此,服务器可以将各个排序数据段中的排序方式与参考排序方式集合中的排序方式进行比对。如果各个排序数据段中存在任一个不属于参考排序方式集合中的排序方式,则对排序方式的校验未通过,如果各个排序数据段中的排序方式均属于参考排序方式集合,则确定对排序方式的校验通过。
值得注意的是,上述对排序字段和排序方式的校验顺序也可以为先校验排序方式,再校验排序字段,或者是同时对二者进行校验,本申请实施例对此不作限定。
通过对过滤参数和排序参数的校验,可以将不合法的字段、参数进行过滤,这样,可以有效的降低SQL(Structured Query Language,结构化查询语言)注入风险。
可选地,当数据查询请求中还携带分页参数、分页偏移值时,服务器还可以对这两个参数进行校验,例如,校验这两个参数的数值是否在预设的数值范围内,以此来确定这两个参数是否合法。
在对数据查询请求中携带的各个参数进行校验之后,如果所有校验均通过,则服务器可以通过下述步骤303根据对过滤参数中每个过滤字段的处理结果来生成查询语句。
步骤303:根据处理结果生成查询语句。
在本申请实施例中,可以将ORM框架以插件的形式引入到查询框架中。在这种情况下,当服务器通过查询框架对数据查询请求中的各个参数校验通过之后,可以根据每个过滤数据段的处理结果、每个过滤数据段中的搜索过滤字段、每个排序数据段,通过ORM框架来生成查询语句。其中,通过ORM框架生成查询语句的实现过程可以参考相关技术,本申请实施例在此不再赘述。
步骤304:根据查询语句进行数据查询。
在生成查询语句之后,服务器可以执行该查询语句,以实现数据库查询。其中,由于通过ORM框架可以封装各个数据库实现的差异性,因此,通过ORM框架生成查询语句,利用该查询语句可以实现对不同数据库的数据查询。在得到查询结果之后,服务器可以将该查询结果返回至客户端。
图4是本申请实施例提供的一种查询流程的示意图。如图4所示,get请求中携带有过滤参数filters、排序参数orders、分页参数limit和offset。服务器的查询框架在接收到该数据查询请求之后,可以依次对filters中的各个过滤数据段filter进行处理、对limit和offset进行校验、对orders中的各个排序数据段order进行处理,以避免SQL注入,最后通过ORM框架生成查询语句,根据查询语句得到查询结果。
在本申请实施例中,数据查询请求中可以携带有过滤参数,该过滤参数可以包括一个或多个过滤数据段,每个过滤数据段可以包括一个搜索过滤字段、操作符和操作符参数值。服务器可以根据过滤数据段的数据结构对每个过滤数据段进行处理,相当于是对每个搜索过滤字段进行处理,进而得到处理结果,之后,可以根据该处理结果生成查询语句进行数据查询。也即,本申请实施例中,开发人员只需根据过滤数据段的数据结构来进行查询接口的设计即可。如果需要增加字段,客户端只需在过滤参数中增加一个过滤数据段即可,而无需对查询接口进行重新编码,减少了开发人员的重复编码工作。
另外,本申请实施例提供了一套通用的数据查询结构,开发人员通过该数据查询结构来进行查询接口的开发,可以使得各个查询接口的代码风格统一,从而使得接口代码更易于维护,降低代码的维护成本。
另外,在本申请实施例中,服务器可以对查询请求中的各个参数进行校验,可以降低SQL注入风险,提升查询接口的安全性。
接下来,对本申请实施例提供的数据查询装置进行介绍。
参见图5,本申请实施例提供了一种数据查询装置500,该装置500包括:
接收模块,用于接收数据查询请求,数据查询请求携带过滤参数,过滤参数包括一个或多个过滤数据段,每个过滤数据段用于指示一个搜索过滤字段;
处理模块,用于根据存储的过滤数据段的数据结构,对过滤参数包括的每个过滤数据段进行处理,得到处理结果;
生成模块,用于根据处理结果生成查询语句;
查询模块,用于根据查询语句进行数据查询。
可选地,处理模块具体用于:
根据存储的过滤数据段的数据结构,对每个过滤数据段进行解析,得到每个过滤数据段包括的搜索过滤字段、操作符和操作符参数值;
对每个过滤数据段包括的搜索过滤字段、操作符和操作符参数值进行校验;
如果对每个过滤数据段的校验通过,则根据每个过滤数据段包括的操作符对相应过滤数据段的操作符参数值进行处理,得到处理结果。
可选地,处理模块具体用于:
如果第一过滤数据段包括的第一搜索过滤字段为数据库中存储的字段、第一操作符为参考操作符集合中的操作符、且第一操作符参数值为第一操作符所支持的数据类型,则确定对第一过滤数据段的校验通过,其中,参考操作符集合包括支持的所有操作符。
可选地,数据查询请求还携带排序参数,排序参数包括一个或多个排序数据段,每个排序数据段包括排序字段和排序方式。
可选地,生成模块具体用于:
根据存储的排序数据段的数据结构,对每个排序数据段进行解析,得到每个排序数据段包括的排序字段和排序方式;
对每个排序数据段包括的排序字段和排序方式进行校验;
如果对每个排序数据段的校验通过,则根据处理结果和每个排序数据段,通过对象关系映射ORM生成查询语句。
可选地,数据查询请求还携带分页参数,分页参数用于指示返回的每组查询结果的个数。
综上所述,在本申请实施例中,数据查询请求中可以携带有过滤参数,该过滤参数可以包括一个或多个过滤数据段,每个过滤数据段可以包括一个搜索过滤字段、操作符和操作符参数值。服务器可以根据过滤数据段的数据结构对每个过滤数据段进行处理,相当于是对每个搜索过滤字段进行处理,进而得到处理结果,之后,可以根据该处理结果生成查询语句进行数据查询。也即,本申请实施例中,开发人员只需根据过滤数据段的数据结构来进行查询接口的设计即可。如果需要增加字段,客户端只需在过滤参数中增加一个过滤数据段即可,而无需对查询接口进行重新编码,减少了开发人员的重复编码工作。
需要说明的是,上述实施例提供的数据查询装置在进行数据查询时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的数据查询装置与数据查询方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图6是根据一示例性实施例示出的一种用于进行数据查询的服务器600结构示意图。上述实施例中的服务器的功能即可以通过图6中所示的服务器来实现。该服务器可以是后台服务器集群中的服务器。具体来讲:
服务器600包括CPU(Central Processing Unit,中央处理单元)601、包括RAM(Random Access Memory,随机存取存储器)602和ROM(Read-Only Memory,只读存储器)603的***存储器604,以及连接***存储器604和中央处理单元601的***总线605。服务器600还包括帮助计算机内的各个器件之间传输信息的I/O(Input/Output,基本输入/输出)***606,和用于存储操作***613、应用程序614和其他程序模块615的大容量存储设备607。
基本输入/输出***606包括有用于显示信息的显示器608和用于用户输入信息的诸如鼠标、键盘之类的输入设备609。其中显示器608和输入设备609都通过连接到***总线605的输入输出控制器610连接到中央处理单元601。基本输入/输出***606还可以包括输入输出控制器610以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器610还提供输出到显示屏、打印机或其他类型的输出设备。
大容量存储设备607通过连接到***总线605的大容量存储控制器(未示出)连接到中央处理单元601。大容量存储设备607及其相关联的计算机可读介质为服务器600提供非易失性存储。也就是说,大容量存储设备607可以包括诸如硬盘或者CD-ROM(CompactDisc Read-Only Memory)驱动器之类的计算机可读介质(未示出)。
不失一般性,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括RAM、ROM、EPROM(Erasable Programmable Read Only Memory,可擦除可编程只读存储器)、EEPROM(Electrically Erasable Programmable Read Only Memory,带电可擦可编程只读存储器)、闪存或其他固态存储其技术,CD-ROM、DVD(Digital Video Disc,数字通用光盘)或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知计算机存储介质不局限于上述几种。上述的***存储器604和大容量存储设备607可以统称为存储器。
根据本申请的各种实施例,服务器600还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即服务器600可以通过连接在***总线605上的网络接口单元611连接到网络612,或者说,也可以使用网络接口单元611来连接到其他类型的网络或远程计算机***(未示出)。
上述存储器还包括一个或者一个以上的程序,一个或者一个以上程序存储于存储器中,被配置由CPU执行。所述一个或者一个以上程序包含用于进行本申请实施例提供的数据查询方法的指令。
本申请实施例还提供了一种非临时性计算机可读存储介质,当所述存储介质中的指令由服务器的处理器执行时,使得服务器能够执行上述图3所示实施例提供的数据查询方法。
本申请实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述图3所示实施例提供的数据查询方法。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (10)

1.一种数据查询方法,其特征在于,所述方法包括:
接收数据查询请求,所述数据查询请求携带过滤参数,所述过滤参数包括一个或多个过滤数据段,所述过滤数据段用于指示一个搜索过滤字段;
根据存储的过滤数据段的数据结构,对所述过滤参数包括的过滤数据段进行处理,得到处理结果;
根据所述处理结果生成查询语句;
根据所述查询语句进行数据查询。
2.根据权利要求1所述的方法,其特征在于,所述根据存储的过滤数据段的数据结构,对所述过滤参数包括的过滤数据段进行处理,得到处理结果,包括:
根据存储的过滤数据段的数据结构,对所述过滤数据段进行解析,得到所述过滤数据段包括的搜索过滤字段、操作符和操作符参数值;
对所述过滤数据段包括的搜索过滤字段、操作符和操作符参数值进行校验;
响应于对所述过滤数据段的校验通过,根据所述过滤数据段包括的操作符对所述过滤数据段的操作符参数值进行处理,得到所述过滤数据段的处理结果。
3.根据权利要求2所述的方法,其特征在于,所述对所述过滤数据段包括的搜索过滤字段、操作符和操作符参数值进行校验,包括:
响应于所述过滤数据段包括的搜索过滤字段为数据库中存储的字段、操作符为参考操作符集合中的操作符、且操作符参数值为所述操作符所支持的数据类型,则确定对所述过滤数据段的校验通过,其中,所述参考操作符集合包括支持的操作符。
4.根据权利要求1所述的方法,其特征在于,所述数据查询请求还携带排序参数,所述排序参数包括一个或多个排序数据段,所述排序数据段包括排序字段和排序方式。
5.根据权利要求4所述的方法,其特征在于,所述根据所述处理结果生成查询语句,包括:
根据存储的排序数据段的数据结构,对所述排序参数包括的排序数据段进行解析,得到所述排序数据段包括的排序字段和排序方式;
对所述排序参数包括的排序数据段包括的排序字段和排序方式进行校验;
响应于对一个或多个所述排序数据段的校验均通过,则根据所述处理结果和一个或多个所述排序数据段,通过对象关系映射ORM生成所述查询语句。
6.根据权利要求1-5任一所述的方法,其特征在于,所述数据查询请求还携带分页参数,所述分页参数用于指示返回的每组查询结果的个数。
7.一种数据查询装置,其特征在于,所述装置包括:
接收模块,用于接收数据查询请求,所述数据查询请求携带过滤参数,所述过滤参数包括一个或多个过滤数据段,所述过滤数据段用于指示一个搜索过滤字段;
处理模块,用于根据存储的过滤数据段的数据结构,对所述过滤参数包括的过滤数据段进行处理,得到处理结果;
生成模块,用于根据所述处理结果生成查询语句;
查询模块,用于根据所述查询语句进行数据查询。
8.根据权利要求7所述的装置,其特征在于,所述处理模块具体用于:
根据存储的过滤数据段的数据结构,对所述过滤数据段进行解析,得到所述过滤数据段包括的搜索过滤字段、操作符和操作符参数值;
对所述过滤数据段包括的搜索过滤字段、操作符和操作符参数值进行校验;
响应于对所述过滤数据段的校验通过,则根据所述过滤数据段包括的操作符对所述过滤数据段的操作符参数值进行处理,得到所述过滤数据段的处理结果。
9.一种数据查询装置,其特征在于,所述装置包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器执行所述存储器中的可执行指令来执行上述权利要求1-6任一项方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或所述指令集由处理器加载并执行以实现如权利要求1至6任一所述的数据查询方法。
CN202010508086.4A 2020-06-05 2020-06-05 数据查询方法、装置及存储介质 Pending CN111611276A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010508086.4A CN111611276A (zh) 2020-06-05 2020-06-05 数据查询方法、装置及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010508086.4A CN111611276A (zh) 2020-06-05 2020-06-05 数据查询方法、装置及存储介质

Publications (1)

Publication Number Publication Date
CN111611276A true CN111611276A (zh) 2020-09-01

Family

ID=72204809

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010508086.4A Pending CN111611276A (zh) 2020-06-05 2020-06-05 数据查询方法、装置及存储介质

Country Status (1)

Country Link
CN (1) CN111611276A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113111239A (zh) * 2021-04-08 2021-07-13 北京联创新天科技有限公司 一种通用数据库操作方法、装置及其存储介质
CN113590648A (zh) * 2021-07-30 2021-11-02 高途教育科技集团有限公司 一种数据查询方法、装置、设备和可读存储介质
CN113704307A (zh) * 2021-08-31 2021-11-26 深圳市兆珑科技有限公司 数据查询方法、装置、服务器及计算机可读存储介质

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113111239A (zh) * 2021-04-08 2021-07-13 北京联创新天科技有限公司 一种通用数据库操作方法、装置及其存储介质
CN113111239B (zh) * 2021-04-08 2024-03-29 北京联创新天科技有限公司 一种通用数据库操作方法、装置及其存储介质
CN113590648A (zh) * 2021-07-30 2021-11-02 高途教育科技集团有限公司 一种数据查询方法、装置、设备和可读存储介质
CN113704307A (zh) * 2021-08-31 2021-11-26 深圳市兆珑科技有限公司 数据查询方法、装置、服务器及计算机可读存储介质

Similar Documents

Publication Publication Date Title
CN107506451B (zh) 用于数据交互的异常信息监控方法及装置
CN109034993B (zh) 对账方法、设备、***及计算机可读存储介质
US10467316B2 (en) Systems and methods for web analytics testing and web development
JP5298117B2 (ja) 分散コンピューティングにおけるデータマージング
CN110795257A (zh) 处理多集群作业记录的方法、装置、设备及存储介质
CN112564988B (zh) 告警处理方法、装置及电子设备
CN110795455A (zh) 依赖关系解析方法、电子装置、计算机设备及可读存储介质
CN111611276A (zh) 数据查询方法、装置及存储介质
CN111339073A (zh) 实时数据处理方法、装置、电子设备及可读存储介质
CN109543891B (zh) 容量预测模型的建立方法、设备及计算机可读存储介质
CN112052138A (zh) 业务数据质量检测方法、装置、计算机设备及存储介质
CN111740868B (zh) 告警数据的处理方法和装置及存储介质
CN113326247B (zh) 云端数据的迁移方法、装置及电子设备
US20230289331A1 (en) Model generation service for data retrieval
CN113791586A (zh) 一种新型的工业app与标识注册解析集成方法
CN110659259A (zh) 数据库迁移方法、服务器以及计算机存储介质
CN115544007A (zh) 标签预处理方法、装置、计算机设备和存储介质
CN113297057A (zh) 内存分析方法、装置及***
CN115357590A (zh) 针对数据变更的记录方法、装置、电子设备及存储介质
CN112395307A (zh) 执行语句的方法、装置、服务器及存储介质
CN113836237A (zh) 对数据库的数据操作进行审计的方法及装置
CN110688355A (zh) 变更容器状态的方法和装置
CN114490865A (zh) 数据库同步方法、装置、设备及计算机存储介质
CN114357032A (zh) 一种数据质量监控方法、装置、电子设备及存储介质
CN110493326B (zh) 基于zookeeper管理集群配置文件的***和方法

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
TA01 Transfer of patent application right

Effective date of registration: 20230914

Address after: 100191 Beijing Haidian District Zhichun Road 49 No. 3 West 309

Applicant after: TENCENT CLOUD COMPUTING (BEIJING) Co.,Ltd.

Address before: 518057 Tencent Building, No. 1 High-tech Zone, Nanshan District, Shenzhen City, Guangdong Province, 35 floors

Applicant before: TENCENT TECHNOLOGY (SHENZHEN) Co.,Ltd.

TA01 Transfer of patent application right