CN110309171A - 数据库查询方法、服务器和系统 - Google Patents
数据库查询方法、服务器和系统 Download PDFInfo
- Publication number
- CN110309171A CN110309171A CN201810162856.7A CN201810162856A CN110309171A CN 110309171 A CN110309171 A CN 110309171A CN 201810162856 A CN201810162856 A CN 201810162856A CN 110309171 A CN110309171 A CN 110309171A
- Authority
- CN
- China
- Prior art keywords
- query statement
- query
- complexity
- scanned
- database
- 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.)
- Granted
Links
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/245—Query processing
- G06F16/2453—Query optimisation
-
- 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/2457—Query processing with adaptation to user needs
- G06F16/24578—Query processing with adaptation to user needs using ranking
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种数据库查询方法、服务器和系统,涉及数据库领域,用于防止在先提交的慢查询语句阻塞在后提交的简单查询语句的执行。该数据库查询方法包括:接收查询语句;对所述查询语句进行解析以得到对应数据库平台的物理语法树,其中,所述物理语法树指适配所述数据库平台,并能够指示所述查询语句的语法结构的图形表示;根据所述物理语法树得到所述查询语句的复杂程度和待扫描的记录数;根据所述待扫描的记录数和复杂程度估计所述查询语句的资源消耗指数;根据所述资源消耗指数将所述查询语句加入对应的队列;按照资源消耗从低至高的队列顺序执行其中的查询语句以得到查询结果。本申请实施例应用于数据库查询。
Description
技术领域
本申请涉及数据库领域,尤其涉及一种数据库查询方法、服务器和系统。
背景技术
基于大数据的联机分析处理(Online Analysis Processing,OLAP)系统是数据库系统最主要的应用,专门用于支持复杂的分析操作,其一般按照用户提交查询语句的先后顺序来执行查询语句。例如,参照图1中所示,为现有技术中一种基于MyCat架构的数据库系统,MyCat是一个开源的分布式数据库系统,前端用户可以把它看作数据库代理,其后端可以用MySQL原生协议与多个MySQL服务器通信,也可以用Java数据库连接(Java DataBaseConnectivity,JDBC)协议与大多数主流数据库服务器例如结构化查询语言(StructuredQuery Language,SQL)、Oracle、Hive等服务器进行通信,其核心功能是分表分库,即将一个大表水平分割为N个小表,存储在后端MySQL服务器里或者其他主流数据库里。
无论是那种存储方式,在MyCat系统架构里,都是一个传统的数据库表,由于数据库的数据量较大,如果在先提交的慢查询语句比较复杂,将消耗很长时间,可能导致在后提交的耗时较少的简单查询语句也被迫阻塞很长时间,影响用户体验。
发明内容
本申请实施例提供一种数据库查询方法、服务器和系统,用于防止在先提交的慢查询语句阻塞在后提交的简单查询语句的执行。
为达到上述目的,本申请的实施例采用如下技术方案:
第一方面,提供了一种数据库查询方法,该方法包括:接收查询语句;对查询语句进行解析以得到对应数据库平台的物理语法树,其中,物理语法树指适配数据库平台,并能够指示查询语句的语法结构的图形表示;根据物理语法树得到查询语句的复杂程度和待扫描的记录数;根据待扫描的记录数和复杂程度估计查询语句的资源消耗指数;根据资源消耗指数将查询语句加入对应的队列;按照资源消耗从低至高的队列顺序执行其中的查询语句以得到查询结果。本申请实施例提供的数据库查询方法,将查询语句解析成物理语法树后,根据该物理语法树可以得到该查询语句的复杂程度和待扫描的记录数,进一步估计出该查询语句的资源消耗指数,按照资源消耗指数将该查询语句加入对应队列,在执行查询操作时,按照资源消耗从低至高的队列顺序来执行队列中的查询语句。可以令资源消耗少的查询语句先执行,而不是简单地按照提交时间顺序执行查询语句,防止在先提交的慢查询语句阻塞在后提交的简单查询语句的执行。
在一种可能的实施方式中,对查询语句进行解析以得到语法树,包括:对查询语句进行解析得到逻辑语法树,逻辑语法树中包括供用户查找的逻辑字段和逻辑表;根据逻辑表配置对逻辑语法树解析得到各数据库平台对应的物理语法树,物理语法树中包括各数据库平台中实际存储的物理字段和物理表,逻辑表配置中包括逻辑字段、逻辑表与物理字段、物理表的映射关系。该实施方式具体实现了将查询语句解析成数据库平台对应的物理语法树。
在一种可能的实施方式中,根据物理语法树得到查询语句的复杂程度和待扫描的记录数,包括:根据物理语法树中的来自子句得到被查询的物理表的名称;根据物理表的名称从元数据系统中获取物理表中包括的待扫描的记录数;根据语法树中的操作的复杂程度计算得到查询语句的复杂程度。该实施方式具体实现了根据物理语法树得到查询语句的复杂程度和待扫描的记录数。
在一种可能的实施方式中,根据待扫描的记录数和复杂程度估计查询语句的资源消耗指数,包括:估计资源消耗指数=待扫描的记录数*K1+复杂程度*K2,其中,K1和K2为比例系数,K1+K2=1,且K1>0,K2>0。该实施方式提供了估计查询语句的资源消耗指数的一种方式。
在一种可能的实施方式中,方法还包括:记录历史查询语句的实际执行耗时与历史查询语句的待扫描的记录数和复杂程度之间的映射关系。该实施方式将实际执行耗时与历史查询语句的待扫描的记录数和复杂程度相关联,便于估计执行耗时。
在一种可能的实施方式中,方法还包括:根据查询语句的待扫描的记录数和复杂程度以及映射关系估计查询语句的执行耗时。该实施方式可以向用户提供预估的执行耗时。
第二方面,提供了一种数据库查询服务器,包括:接收单元,用于接收查询语句;解析单元,用于对接收单元接收的查询语句进行解析以得到对应数据库平台的物理语法树,其中,物理语法树指适配数据库平台,并能够指示查询语句的语法结构的图形表示;获取单元,用于根据解析单元解析的物理语法树得到查询语句的复杂程度和待扫描的记录数;估计单元,用于根据获取单元得到的待扫描的记录数和复杂程度估计查询语句的资源消耗指数;排队单元,用于根据估计单元估计的资源消耗指数将查询语句加入对应的队列;执行单元,用于按照排队单元所排队的资源消耗从低至高的队列顺序执行其中的查询语句以得到查询结果。基于同一发明构思,由于该服务器解决问题的原理以及有益效果可以参见上述第一方面和第一方面的各可能的方法实施方式以及所带来的有益效果,因此该服务器的实施可以参见上述第一方面和第一方面的各可能的方法的实施方式,重复之处不再赘述。
第三方面,提供了一种数据库查询服务器,该服务器包括:一个或多个处理器、存储器、总线系统、以及一个或多个程序,处理器和存储器通过总线系统相连;其中一个或多个程序被存储在存储器中,一个或多个程序包括指令,指令当被服务器执行时使服务器执行如第一方面和第一方面的各可能的方法实施方式。
第四方面,提供了一种存储一个或多个程序的计算机可读存储介质,一个或多个程序包括指令,指令当被服务器执行时使服务器执行如第一方面和第一方面的各可能的方法实施方式。
第三方面至第四方面的技术效果可以参照第一方面所述内容。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。
图1为本申请实施例提供的一种基于MyCat架构的数据库系统的架构示意图;
图2为本申请实施例提供的一种数据库查询系统的架构示意图;
图3为本申请实施例提供的一种数据库查询服务器的结构示意图一;
图4为本申请实施例提供的一种数据库查询服务器的结构示意图二;
图5为本申请实施例提供的一种数据库查询方法的流程示意图一;
图6为本申请实施例提供的一种数据库查询方法的流程示意图二;
图7为本申请实施例提供的逻辑表中的逻辑字段的来源的示意图;
图8为本申请实施例提供的逻辑语法树的示意图;
图9为本申请实施例提供的逻辑表配置的逻辑关系的示意图;
图10为本申请实施例提供的物理语法树的示意图一;
图11为本申请实施例提供的物理语法树的示意图二;
图12为本申请实施例提供的一种数据库查询方法的流程示意图三;
图13为本申请实施例提供的分区的示意图;
图14为本申请实施例提供的按照不同资源消耗情况分配队列的示意图;
图15为本申请实施例提供的查询语句拆分和查询结果合并的示意图;
图16为本申请实施例提供的一种数据库查询方法的流程示意图四;
图17为本申请实施例提供的一种数据库查询服务器的结构示意图三;
图18为本申请实施例提供的一种数据库查询服务器的结构示意图四;
图19为本申请实施例提供的一种数据库查询服务器的结构示意图五。
具体实施方式
在OLAP系统中,数据可以保存在各种不同数据库平台里。例如,用户行为数据等这些数据量大但不容易变化的数据保存在Hive或大规模并行处理数据库(Massive ParallelProcessing Data Base,MPPDB)里;映射表、维度表等数据量较小但变化很快的数据保存在HBase,MySQL里。有些报表需要聚合各个数据库平台的数据才能获得,单个数据库平台无法提供报表的所有维度或指标。目前只能通过人工的方式,从各个数据源里获取中间数据,然后手工合并,工作效率低且容易出错。
本申请实施例提供的数据库查询方法、服务器和系统,可以将各数据库平台中可执行的查询语句对应的物理语法树,抽象成统一的逻辑语法树,用户在执行查询语句时,输入与逻辑语法树对应的查询语句,即可实现跨数据库平台的查询操作。并且本申请的方案按照查询语句的资源消耗情况将查询语句加入不同队列,而按照消耗资源从低至高的队列顺序执行队列中的查询语句,可以实现资源消耗较少的查询语句先执行,而不是按照查询语句先后提交顺序来执行,防止在先提交的慢查询语句阻塞在后提交的简单查询语句的执行。
具体的,本申请实施例提供了一种数据库查询系统,参照图2中所示,该系统包括:数据库查询服务器11、至少一个数据库服务器12、客户端13。在一些实施方式中,数据库查询服务器11和数据库服务器12也可以是一个服务器。数据库服务器12可以包括不同数据库平台,例如Hive、MySQL、Oracle或其他类型的数据库平台。客户端13与数据库查询服务器11之间通过网络连接,并且客户端13与数据库查询服务器11之间还可能有防火墙。数据库查询服务器11与数据库服务器12之间通过网络连接。客户端13向数据库查询服务器11发送查询语句,由数据库查询服务器11对查询语句进行解析后从数据库服务器12获取查询结果,并将查询结果反馈给客户端13。
参照图3中所示,本申请实施例所述的数据库查询服务器11可以包括接口层1101、查询引擎1102和执行引擎1103。
接口层1101负责与外部通讯,其中,表述性状态转移接口(RepresentationalState Transfer,REST)应用程序编程接口(Application Programming Interface,API)负责外部系统的查询请求和响应;GUI界面用于用户的交互。
查询引擎1102为整个系统的核心层,通过DSL语法解析器处理外部请求,并通过物理SQL分解器分解出执行引擎1103能识别的数据接口(物理语法树);还通过资源消耗预估器对查询任务进行资源预估,判断本次查询的复杂程度,提供给执行引擎1103作为分配队列时的依据。查询引擎1102还接收执行引擎1103返回的数据,根据配置信息,通过数据合并器将数据加工合并后,进一步返回给接口层1101的GUI界面进行展示。查询引擎1102还能过资源消耗日志收集器记录本次查询的耗时数据,并保存到数据库里,供后续的查询参考。
执行引擎1103负责与底层的数据库例如My SQL、Oracle、Hive、SQL等交互;根据查询引擎1102输出的物理语法树,通过执行队列管理器和执行队列分配器调用各个的数据库平台的查询接口,并查询数据;并通过查询语句收集器将查询到的数据缓存在内存里,返回给查询引擎1102。查询引擎1102还会输出本次查询资源预估值,将本次查询任务分配到不同的查询队列里。
参照图4中所示,为数据库查询服务器的一种可能结构。数据库查询服务器11可以包括:通信电路110、存储器120、输入设备130、显示设备140、处理器150等部件。本领域技术人员可以理解,图中所示的结构并不构成对数据库查询服务器的限定,可以包括比图示更多或者更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。
进一步地,处理器150分别与通信电路110、存储器120、输入设备130、显示设备140连接。其中,通信电路110可以包括无线保真(Wireless Fidelity,WIFI)、光纤、Ethernet网络通信等,可用于进行网络通信,特别地,通过图3中所示的表述性状态转移接口(Representational State Transfer,REST)API接收来自客户端13的查询语句,发送给处理器150进行解析后,发送给数据库服务器12并获取查询结果,并将查询结果反馈给客户端13。
存储器120可用于存储软件程序以及模块。
处理器150通过运行存储在存储器120的软件程序以及模块,从而执行各种功能应用以及数据处理。处理器150可用于执行图3中所示查询引擎1102和执行引擎1103的功能。
输入设备130可用于接收对数据库服务器12的配置操作和查询操作。显示设备140可用于通过图3中所示的GUI界面显示配置结果或查询结果。
本申请实施例提供了一种数据库查询方法,应用于上述系统,可以由图4中所示的处理器150来执行,参照图5中所示,该方法包括:
S101、接收查询语句。
具体的,可以从客户端接收查询语句,或者由数据库查询服务器的输入设备接收查询语句。本申请所述的查询语句可以是标准的结构化查询语言(Structured QueryLanguage,SQL)查询语句,也可以是在SQL查询语句基础上简化的领域专用语言(DomainSpecific Language,DSL)语法,便于使用者学习和上手。
S102、对查询语句进行解析以得到对应数据库平台的物理语法树。
语法树是句子结构的图形表示,其代表了句子的推导结果,有利于理解句子语法结构的层次。简单说,语法树就是按照某一规则进行推导时所形成的树。在本申请中,语法树是对查询语句结构的图形表示。其包括了查询语句的操作算子、嵌套关系、查询条件、数据表等因子。本申请中涉及逻辑语法树和物理语法树,对于数据源来自多种数据库平台时,物理语法树指适配对应数据库平台,并能够指示查询语句的语法结构的图形表示,不同数据库平台的物理语法树不同。逻辑语法树指对所有数据库平台的物理语法树进行整合抽象成能代表所有物理语法树的语法树。
对于数据源来自多种数据库平台的情况,查询语句可以是DSL查询语句。可以将存储在不同数据库平台的物理表映射为一个逻辑表,使得用户不必关注数据存储在哪个物理的数据库平台,或者只需要关心数据存储在某一逻辑表中即可;将在数据库平台中存储的物理字段映射为逻辑字段,屏蔽了复杂的物理表结构,使得用户不必关注物理字段如何命名。使得用户可以更专注于业务逻辑的开发,完成查询语句的路由和优化。并且数据生产者可以决定数据如何存放在具体哪个数据库平台,更改数据库平台不影响用户使用。
参照图6中所示,步骤S102可以包括步骤S1021和S1022:
S1021、对查询语句进行解析得到逻辑语法树。
逻辑语法树中包括供用户查找的逻辑字段和逻辑表。
参照图7中所示,逻辑表中的逻辑字段的来源包括两种,一个是由物理字段的映射而来(例如,用户ID、常住城市、首次访问时间、游戏类型、机型、支付金额);另一个是通过表达式计算而来(例如,近7天是否登录,其中dayDiff为函数,If为判断条件,lastLoginDate.now为最后一次登录时间)。
这里的表达式语法也可以属于SQL语法的范畴;通过对物理字段通过逻辑判断、算术运算、调用函数等方式计算出一个值来,这个值就作为逻辑表的某个逻辑字段的值。示例性的,常见的表达式语法类型如表1所示:
表1
以简单的查询语句select id,name from table_a where id>2为例进行说明,其表达的意思是从表a(table_a)中选择查询满足id>2的表项的标识(id)和名称(name)字段。解析后得到的逻辑语法树如图8中所示,其中,选择(Select)表示该查询语句类型,投影(Projections)表示待供用户查找的逻辑字段,来自(From)表示供用户查找的逻辑表,条件(Conditions)表示查找条件。
S1022、根据逻辑表配置对逻辑语法树解析得到各数据库平台对应的物理语法树。
物理语法树中包括数据库平台中实际存储的物理字段和物理表,逻辑表配置中包括逻辑字段、逻辑表与物理字段、物理表的映射关系。
假设表a(table_a)的逻辑表配置如表2中所示,其对应的逻辑关系参照图9中所示:
表2
逻辑表 | 逻辑字段 | 物理表 | 物理字段 |
table_a | id | p_1 | p_id1 |
table_a | name | p_2 | p_name2 |
其中,逻辑表a(table_a)的id逻辑字段来自物理表p_1的p_id1物理字段,逻辑表table_a的name逻辑字段来自物理表p_2的p_name2物理字段;物理表p_1和p_2通过的p_id1与p_id2相等关联起来。物理表p_1和物理表p_2可以存储在不同数据库平台中,例如,物理表p_1可以存储在MySQL库中,物理表p_2可以存储在Hive库中。
假设物理表p_1里保存数据如表3中所示:
表3
p_id1 | p_name1 |
1 | jack |
2 | lily |
3 | robbin |
4 | lucy |
假设物理表p_2里保存的数据如表4中所示:
表4
p_id2 | p_name2 |
1 | welly |
2 | hello |
3 | smith |
根据上述配置,从物理表p_1中选取p_id1,从物理表p_2里选取p_name2,选取条件是p_id1=p_id2,则最终得到逻辑表a(table_a)的数据如表5中所示:
表5
id | name |
1 | welly |
2 | hello |
3 | smith |
将图8中所示的逻辑语法树拆分得到与MySQL数据库平台里的物理表p_1对应的第一物理语法树如图10中所示;拆分得到与Hive数据库平台里的物理表p_2对应的第二物理语法树如图11中所示。
对于数据源来自一种数据库平台的情况,根据查询语句生成的语法树即为物理语法树,后续提及物理语法树。
S103、根据物理语法树得到查询语句的复杂程度和待扫描的记录数。
具体的,参照图12中所示,步骤S103可以包括:
S1031、从物理语法树中的来自(From)子句得到被查询的物理表的名称。
S1032、根据物理表的名称从元数据系统中获取该物理表中包括的待扫描的记录数。
元数据是指本数据库中创建了哪些表,表包含有哪些字段以及表中包含了多少条记录等信息。元数据系统就是用来管理这些元数据的模块,提供查询元数据的接口供外部使用。主流的数据库都包含此功能。
如果物理语法树中的条件分支(对应查询语句的where子句)包括分区,则从元数据系统中取该分区内的记录数。
参照图13中所示,分区是对一个数据量巨大的表进行“水平拆分”的一种手段;目的是减少每次扫描的记录数,加快查询速度。
S1033、根据物理语法树中的操作的复杂程度来计算查询语句的复杂程度。
示例性的,表6示出了不同操作的复杂程度的加权值,这些加权值可以累加以得到最终的复杂程度。
表6
S104、根据待扫描的记录数和复杂程度估计查询语句的资源消耗指数。
为了预估查询语句执行的代价需要指定一套标准来度量其资源消耗情况。因此提出资源消耗指数的概念,该指数由下面的公式得到:资源消耗指数=待扫描的记录数*K1+复杂程度*K2,其中,K1和K2为比例系数,K1+K2=1,且K1>0,K2>0,例如K1=60%,K2=40%。需要说明的是60%、40%仅是示例,实际应用中可以根据实际情况来调整。
S105、根据资源消耗情况将查询语句加入对应的队列。
可以按照资源消耗指数位于不同区间来将该查询语句放入不同队列,以实现按照不同资源消耗情况分配队列。例如,参照图14中所示,假设有X和Y两个资源消耗门限,以0<资源消耗指数<X、X<=资源消耗指数<Y、资源消耗指数>=Y三个区间形成三个队列,从中可以看出资源消耗最低的查询语句(例如查询语句1)形成一个队列,资源消耗适中的查询语句(例如查询语句2和3)形成一个队列,资源消耗最高的查询语句(例如查询语句4)形成一个队列。
S106、按照资源消耗从低至高的队列顺序执行其中的查询语句以得到查询结果。
优先执行资源消耗最少的队列。同一队列中的查询语句按照时间先后顺序执行。这样耗时少的查询语句可以优先被执行,快速得到查询结果,发送用户体验。耗时长的查询语句可以后执行,因为用户对这类查询语句预期查询时间较长,所以能接受晚些反馈查询结果,因此对这类用户体验影响不大。
参照图15中所示,与数据库平台对应的物理语法树再转化成该数据库平台可执行的查询语句,以在该数据库平台上执行。从各数据库平台查询得到的查询结果按照关联关系汇总合并在一个内存二维表结构中,通过REST API返回给客户端。
继续上面的例子,对图10所示的物理语法树执行对应数据库平台的查询语句后,得到如表7所示数据:
表7
p_id1 |
3 |
4 |
对图11所示的物理语法树执行对应数据库平台的查询语句后,得到如表8所示数据:
表8
p_id2 | p_name2 |
1 | welly |
2 | hello |
3 | smith |
对上述两个查询结果根据逻辑表配置,关联成最终查询结果。
根据逻辑表表a(table_a)的逻辑表配置,物理表p_1和物理表p_2通过条件p_id1=p_id2关联起来;对于表7和表8来说,满足这个条件的只有一条数据,即p_id1=3,p_id2=3。所以关联成最终查询结果如表9所示:
表9
id | name |
3 | smith |
本申请实施例提供的数据库查询方法,将查询语句解析成物理语法树后,根据该物理语法树可以得到该查询语句的复杂程度和待扫描的记录数,进一步估计出该查询语句的资源消耗指数,按照资源消耗指数将该查询语句加入对应队列,在执行查询操作时,按照资源消耗从低至高的队列顺序来执行队列中的查询语句。可以令资源消耗少的查询语句先执行,而不是简单地按照提交时间顺序执行查询语句,防止在先提交的慢查询语句阻塞在后提交的简单查询语句的执行。
可选的,参照图16中所示,在步骤S106之后,上述方法还包括:
S201、记录历史查询语句的实际执行耗时与历史查询语句的待扫描的记录数和复杂程度之间的映射关系。
具体的,可以存储至历史查询耗时数据库里,用于后续其他查询语句执行前估计其执行耗时。示例性的,其存储方式可以如表10中所示。
表10
待扫描的记录数 | 复杂程度 | 执行耗时(秒) | |
1 | 140000 | 120 | 5 |
2 | 200000 | 2 | 0.5 |
3 | 6000000 | 100 | 15 |
可选的,参照图16中所示,在步骤S103之后,上述方法还包括:
S202、根据该查询语句的待扫描的记录数和复杂程度以及上述映射关系估计该查询语句的执行耗时。
具体的,可以同时匹配待扫描的记录数和复杂程度,得到对应的执行耗时即为预估的执行耗时。由于很难做到精确匹配,因此可以选取待扫描的记录数和复杂程度与历史记录最接近的一项。例如,假设计算某查询语句的待扫描的记录数为150000,复杂程度为100,则与表6中第1项记录最接近,因此可以预估该查询语句的执行耗时为5秒。
本申请提供一种数据库查询服务器,用于执行上述方法。本申请实施例可以根据上述方法示例对数据库查询服务器进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本申请中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
在采用对应各个功能划分各个功能模块的情况下,图17示出了上述实施例中所涉及的数据库查询服务器的一种可能的结构示意图,数据库查询服务器100包括:接收单元1011、解析单元1012、获取单元1013、估计单元1014、排队单元1015、执行单元1016和记录单元1017。上述各单元用于支持数据库查询服务器执行图5、图6、图12、图16中任一附图中的相关方法。本申请提供的服务器用于执行上文所提供的对应的方法,因此,其相应的特征和所能达到的有益效果可参考上文所提供的对应的方法中的有益效果,此处不再赘述。
示例性的,接收单元1011用于支持数据库查询服务器100执行图5中的过程S101,图6中的过程S101,图12中的过程S101,图16中的过程S101;解析单元1012用于支持数据库查询服务器100执行图5中的过程S102,图6中的过程S1021和S1022,图12中的过程S102,图16中的过程S102;获取单元1013用于支持数据库查询服务器100执行图5中的过程S103,图6中的过程S103,图12中的过程S1031和S1032,图16中的过程S103;估计单元1014用于支持数据库查询服务器100执行图5中的过程S104,图6中的过程S104,图12中的过程S104,图16中的过程S104和S202;排队单元1015用于支持数据库查询服务器100执行图5中的过程S105,图6中的过程S105,图12中的过程S105,图16中的过程S105;执行单元1016用于支持数据库查询服务器100执行图5中的过程S106,图6中的过程S106,图12中的过程S106,图16中的过程S106;记录单元1017用于支持数据库查询服务器100执行图16中的过程S201。其中,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。
在采用集成的单元的情况下,图18示出了上述实施例中所涉及的数据库查询服务器的一种可能的结构示意图。数据库查询服务器100包括:存储模块1021、处理模块1022、通信模块1023。上述各模块用于支持数据库查询服务器执行图5、图6、图12、图16中任一附图中的相关方法。本申请提供的数据库查询服务器用于执行上文所提供的对应的方法,因此,其相应的特征和所能达到的有益效果可参考上文所提供的对应的方法中的有益效果,此处不再赘述。
具体的,处理模块1022用于对数据库查询服务器100的动作进行控制管理,例如,处理模块1022用于支持数据库查询服务器100执行上述解析单元1012、获取单元1013、估计单元1014、排队单元1015、执行单元1016和记录单元1017。通信模块1023用于支持数据库查询服务器100执行上述接收单元1011的功能。存储模块1021用于存储数据库查询服务器的程序代码和数据。
其中,处理模块1022可以是处理器或控制器,例如可以是中央处理器(Centralprocessing unit,CPU),通用处理器,数字信号处理器(Digital Signal Processor,DSP),专用集成电路(Application-Specific Integrated Circuit,ASIC),现场可编程门阵列(Field Programmable Gate Array,FPGA)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。所述处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等等。通信模块1023可以是网络接口或通信接口等。存储模块1021可以是存储器。
具体的,处理模块1022可以为图4中的处理器150,通信模块1023可以为图4中的通信电路110,存储模块1021可以为图4中的存储器120。
当处理模块1022为处理器,通信模块1023为蓝牙电路,存储模块1021为存储器时,本申请所涉及的数据库查询服务器可以为图19所示的数据库查询服务器100。
参阅图19所示,该数据库查询服务器100包括:一个或多个处理器1032、通信电路1033、存储器1031、总线系统1034,以及一个或多个程序。其中,通信电路1033、处理器1032、存储器1031通过总线系统1034相互连接;总线系统1034可以是外设部件互连标准总线或扩展工业标准结构总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。其中所述一个或多个程序被存储在存储器1031中,一个或多个程序包括指令,指令当被数据库查询服务器执行时使数据库查询服务器执行图5、图6、图12、图16中任一附图中的相关方法。
本申请还提供一种存储一个或多个程序的计算机存储介质,一个或多个程序包括指令,该指令当被数据库查询服务器执行时,使数据库查询服务器执行图5、图6、图12、图16中任一附图中的相关方法。
本申请还提供了一种包含指令的计算机程序产品,当该计算机程序产品在电子设备上运行时,使得电子设备执行图5、图6、图12、图16中任一附图中的相关方法。
其中,本申请提供的数据库查询服务器、计算机存储介质或者计算机程序产品均用于执行上文所提供的对应的方法,因此,其所能达到的有益效果可参考上文所提供的对应的方法中的有益效果,此处不再赘述。
应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、设备和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件程序实现时,可以全部或部分地以计算机程序产品的形式来实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或者数据中心通过有线(例如同轴电缆、光纤、数字用户线(Digital Subscriber Line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可以用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带),光介质(例如,DVD)、或者半导体介质(例如固态硬盘(Solid State Disk,SSD))等。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (14)
1.一种数据库查询方法,其特征在于,包括:
接收查询语句;
对所述查询语句进行解析以得到对应数据库平台的物理语法树,其中,所述物理语法树指适配所述数据库平台,并能够指示所述查询语句的语法结构的图形表示;
根据所述物理语法树得到所述查询语句的复杂程度和待扫描的记录数;
根据所述待扫描的记录数和复杂程度估计所述查询语句的资源消耗指数;
根据所述资源消耗指数将所述查询语句加入对应的队列;
按照资源消耗从低至高的队列顺序执行其中的查询语句以得到查询结果。
2.根据权利要求1所述的方法,其特征在于,所述对所述查询语句进行解析以得到语法树,包括:
对所述查询语句进行解析得到逻辑语法树,所述逻辑语法树中包括供用户查找的逻辑字段和逻辑表;
根据逻辑表配置对所述逻辑语法树解析得到各数据库平台对应的物理语法树,所述物理语法树中包括各数据库平台中实际存储的物理字段和物理表,所述逻辑表配置中包括所述逻辑字段、逻辑表与所述物理字段、物理表的映射关系。
3.根据权利要求1或2所述的方法,其特征在于,所述根据所述物理语法树得到所述查询语句的复杂程度和待扫描的记录数,包括:
根据所述物理语法树中的来自子句得到被查询的物理表的名称;
根据所述物理表的名称从元数据系统中获取所述物理表中包括的待扫描的记录数;
根据所述语法树中的操作的复杂程度计算得到所述查询语句的复杂程度。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述根据所述待扫描的记录数和复杂程度估计所述查询语句的资源消耗指数,包括:
估计所述资源消耗指数=所述待扫描的记录数*K1+所述复杂程度*K2,其中,K1和K2为比例系数,K1+K2=1,且K1>0,K2>0。
5.根据权利要求1-3任一项所述的方法,其特征在于,所述方法还包括:
记录历史查询语句的实际执行耗时与历史查询语句的待扫描的记录数和复杂程度之间的映射关系。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
根据所述查询语句的待扫描的记录数和复杂程度以及所述映射关系估计所述查询语句的执行耗时。
7.一种数据库查询服务器,其特征在于,包括:
接收单元,用于接收查询语句;
解析单元,用于对所述接收单元接收的查询语句进行解析以得到对应数据库平台的物理语法树,其中,所述物理语法树指适配所述数据库平台,并能够指示所述查询语句的语法结构的图形表示;
获取单元,用于根据所述解析单元解析的物理语法树得到所述查询语句的复杂程度和待扫描的记录数;
估计单元,用于根据所述获取单元得到的待扫描的记录数和复杂程度估计所述查询语句的资源消耗指数;
排队单元,用于根据所述估计单元估计的资源消耗指数将所述查询语句加入对应的队列;
执行单元,用于按照所述排队单元所排队的资源消耗从低至高的队列顺序执行其中的查询语句以得到查询结果。
8.根据权利要求7所述的服务器,其特征在于,所述解析单元具体用于:
对所述查询语句进行解析得到逻辑语法树,所述逻辑语法树中包括供用户查找的逻辑字段和逻辑表;
根据逻辑表配置对所述逻辑语法树解析得到各数据库平台对应的物理语法树,所述物理语法树中包括各数据库平台中实际存储的物理字段和物理表,所述逻辑表配置中包括所述逻辑字段、逻辑表与所述物理字段、物理表的映射关系。
9.根据权利要求7或8所述的服务器,其特征在于,所述获取单元具体用于:
根据所述物理语法树中的来自子句得到被查询的物理表的名称;
根据所述物理表的名称从元数据系统中获取所述物理表中包括的待扫描的记录数;
根据所述语法树中的操作的复杂程度计算得到所述查询语句的复杂程度。
10.根据权利要求7-9任一项所述的服务器,其特征在于,所述估计单元具体用于:
估计所述资源消耗指数=所述待扫描的记录数*K1+所述复杂程度*K2,其中,K1和K2为比例系数,K1+K2=1,且K1>0,K2>0。
11.根据权利要求7-9任一项所述的服务器,其特征在于,所述服务器还包括:记录单元,用于记录历史查询语句的实际执行耗时与所述获取单元得到的历史查询语句的待扫描的记录数和复杂程度之间的映射关系。
12.根据权利要求11所述的服务器,其特征在于,所述估计单元还用于:
根据所述记录单元记录的查询语句的待扫描的记录数和复杂程度以及所述映射关系估计所述查询语句的执行耗时。
13.一种数据库查询系统,其特征在于,包括如权利要求7-12任一项所述的数据库查询服务器、客户端和至少一个数据库服务器,所述客户端用于向所述数据库查询服务器发送查询语句,所述数据库查询服务器用于对所述查询语句进行解析后从所述数据库服务器获取查询结果,并将所述查询结果反馈给所述客户端。
14.一种存储一个或多个程序的计算机可读存储介质,其特征在于,所述一个或多个程序包括指令,所述指令当被服务器执行时使所述服务器执行如权利要求1-6任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810162856.7A CN110309171B (zh) | 2018-02-26 | 2018-02-26 | 数据库查询方法、服务器和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810162856.7A CN110309171B (zh) | 2018-02-26 | 2018-02-26 | 数据库查询方法、服务器和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110309171A true CN110309171A (zh) | 2019-10-08 |
CN110309171B CN110309171B (zh) | 2021-08-20 |
Family
ID=68073626
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810162856.7A Active CN110309171B (zh) | 2018-02-26 | 2018-02-26 | 数据库查询方法、服务器和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110309171B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111078728A (zh) * | 2019-12-19 | 2020-04-28 | 山大地纬软件股份有限公司 | 一种数据库归档模式下跨库查询方法和装置 |
CN112506951A (zh) * | 2020-12-07 | 2021-03-16 | 海南车智易通信息技术有限公司 | 数据库慢查询日志的处理方法、服务器、计算设备和系统 |
CN112905627A (zh) * | 2021-03-23 | 2021-06-04 | 金岭教育科技(北京)有限公司 | 数据处理方法、装置、计算机设备和存储介质 |
WO2022068540A1 (zh) * | 2020-09-30 | 2022-04-07 | 深圳前海微众银行股份有限公司 | 一种数据库状态的确定方法及装置、设备、存储介质 |
CN114692208A (zh) * | 2022-05-31 | 2022-07-01 | 中建电子商务有限责任公司 | 一种数据查询服务权限的处理方法 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101021874A (zh) * | 2007-03-21 | 2007-08-22 | 金蝶软件(中国)有限公司 | 一种对查询sql请求进行优化的方法及装置 |
CN101788992A (zh) * | 2009-05-06 | 2010-07-28 | 厦门东南融通系统工程有限公司 | 一种数据库查询语句的转换方法和转换系统 |
CN102073490A (zh) * | 2009-11-25 | 2011-05-25 | 阿里巴巴集团控股有限公司 | 转译数据库语言的方法及装置 |
CN102156740A (zh) * | 2011-04-15 | 2011-08-17 | 国都兴业信息审计系统技术(北京)有限公司 | Sql语句的处理方法及系统 |
US8285708B2 (en) * | 2008-10-21 | 2012-10-09 | Microsoft Corporation | Query submission pipeline using LINQ |
US9146957B2 (en) * | 2012-12-20 | 2015-09-29 | Business Objects Software Ltd. | Method and system for generating optimal membership-check queries |
CN105260403A (zh) * | 2015-09-22 | 2016-01-20 | 广东同望科技股份有限公司 | 通用跨数据库访问方法 |
CN105279276A (zh) * | 2015-11-11 | 2016-01-27 | 浪潮(北京)电子信息产业有限公司 | 一种数据库索引优化系统 |
CN106547796A (zh) * | 2015-09-23 | 2017-03-29 | 南京中兴新软件有限责任公司 | 数据库的执行方法及装置 |
-
2018
- 2018-02-26 CN CN201810162856.7A patent/CN110309171B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101021874A (zh) * | 2007-03-21 | 2007-08-22 | 金蝶软件(中国)有限公司 | 一种对查询sql请求进行优化的方法及装置 |
US8285708B2 (en) * | 2008-10-21 | 2012-10-09 | Microsoft Corporation | Query submission pipeline using LINQ |
CN101788992A (zh) * | 2009-05-06 | 2010-07-28 | 厦门东南融通系统工程有限公司 | 一种数据库查询语句的转换方法和转换系统 |
CN102073490A (zh) * | 2009-11-25 | 2011-05-25 | 阿里巴巴集团控股有限公司 | 转译数据库语言的方法及装置 |
CN102156740A (zh) * | 2011-04-15 | 2011-08-17 | 国都兴业信息审计系统技术(北京)有限公司 | Sql语句的处理方法及系统 |
US9146957B2 (en) * | 2012-12-20 | 2015-09-29 | Business Objects Software Ltd. | Method and system for generating optimal membership-check queries |
CN105260403A (zh) * | 2015-09-22 | 2016-01-20 | 广东同望科技股份有限公司 | 通用跨数据库访问方法 |
CN106547796A (zh) * | 2015-09-23 | 2017-03-29 | 南京中兴新软件有限责任公司 | 数据库的执行方法及装置 |
CN105279276A (zh) * | 2015-11-11 | 2016-01-27 | 浪潮(北京)电子信息产业有限公司 | 一种数据库索引优化系统 |
Non-Patent Citations (2)
Title |
---|
袁兆争等: "基于SQL的HBase查询的设计与实现", 《计算机与现代化》 * |
谷震离: "基于SQL查询语句的查询优化方法 ", 《计算机时代》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111078728A (zh) * | 2019-12-19 | 2020-04-28 | 山大地纬软件股份有限公司 | 一种数据库归档模式下跨库查询方法和装置 |
WO2022068540A1 (zh) * | 2020-09-30 | 2022-04-07 | 深圳前海微众银行股份有限公司 | 一种数据库状态的确定方法及装置、设备、存储介质 |
CN112506951A (zh) * | 2020-12-07 | 2021-03-16 | 海南车智易通信息技术有限公司 | 数据库慢查询日志的处理方法、服务器、计算设备和系统 |
CN112506951B (zh) * | 2020-12-07 | 2023-02-24 | 海南车智易通信息技术有限公司 | 数据库慢查询日志的处理方法、服务器、计算设备和系统 |
CN112905627A (zh) * | 2021-03-23 | 2021-06-04 | 金岭教育科技(北京)有限公司 | 数据处理方法、装置、计算机设备和存储介质 |
CN114692208A (zh) * | 2022-05-31 | 2022-07-01 | 中建电子商务有限责任公司 | 一种数据查询服务权限的处理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110309171B (zh) | 2021-08-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110309171A (zh) | 数据库查询方法、服务器和系统 | |
JP7344327B2 (ja) | アプリケーションプログラミングインターフェイスのメタデータ駆動型外部インターフェイス生成ためのシステムおよび方法 | |
US9165034B2 (en) | Heterogeneous data source management | |
CN102982075B (zh) | 支持访问异构数据源的系统和方法 | |
US8108399B2 (en) | Filtering of multi attribute data via on-demand indexing | |
US8359305B1 (en) | Query metadata engine | |
CN104885078B (zh) | 用于大规模并行处理数据库集群中的两阶段查询优化的方法 | |
EP3740880A1 (en) | Pick and applicator for use with a stringed instrument | |
CN103455540B (zh) | 从数据仓库模型生成内存模型的系统和方法 | |
CN108108456A (zh) | 一种基于元数据的信息资源分布式查询方法 | |
CN104765731B (zh) | 数据库查询优化方法和设备 | |
WO2010042238A1 (en) | System and method for data warehousing and analytics on a distributed file system | |
US20140074771A1 (en) | Query optimization | |
WO2014143791A1 (en) | Efficiently performing operations on distinct data values | |
CN102081661A (zh) | 基于xml的异构关系型数据库的数据集成方法和系统 | |
CN110134705A (zh) | 一种数据查询方法、缓存服务器及终端 | |
CN107077480A (zh) | 基于查询需求自适应地从当前时间的行存储数据库中构建列存储数据库的方法和系统 | |
CN103970902A (zh) | 一种大量数据情况下的可靠即时检索方法及系统 | |
CN110019314B (zh) | 基于数据项分析的动态数据封装方法、客户端和服务端 | |
CN108536692A (zh) | 一种执行计划的生成方法、装置及数据库服务器 | |
US20100049694A1 (en) | Method and system for extending a relational schema | |
CN111078961A (zh) | 多数据源查询驱动系统、方法、装置和存储介质 | |
CN108885633A (zh) | 用于自动发现和连接到rest接口的技术 | |
CN103678425B (zh) | 多系统的集成分析 | |
CN105138686A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |