一种数据查询方法技术

技术编号:10363021 阅读:119 留言:0更新日期:2014-08-27 19:03
本申请公开了一种数据查询方法,包括:客户端向数据库应用服务器发送数据查询命令;所述数据库应用服务器对所述数据查询命令进行优化,其中,当数据查询命令包含预设的复杂操作关键字时,优化后的数据查询命令的查询字段范围内包含所述复杂操作关键字在所述数据查询命令中对应的字段;数据库应用服务器将所述优化后的数据查询命令发送给存储相应数据的分布式数据服务器,所述分布式数据服务器将自身保存的所述优化后的数据查询命令中所述查询字段范围对应的数据发送给所述数据库应用服务器;数据库应用服务器按照优化前的数据查询命令,对接收自所述分布式数据服务器的数据进行查询处理,并将所述查询处理结果反馈给所述客户端。采用本发明专利技术可以实现复杂的数据库查询。

【技术实现步骤摘要】

本专利技术涉及数据库技术,特别是涉及。
技术介绍
目前,随着数据库技术的广泛应用,数据规模及访问量日趋庞大,传统的集中式数据库已无法满足这种大规模数据的应用需要。针对该问题,目前引入了分布式数据库系统,通过对数据进行分片,将各数据片段分散到多台数据服务器上进行存储管理,以实现大规模数据的分布式存储。目前分布式数据库系统中,常采用水平分片的方式进行数据分片,该方式下将选取某些业务字段作为拆分键,根据所述拆分键把全局关系的所有元组划分成若干不相交的子集,每个子集为关系的一个片段。当客户端需要从数据库系统查询数据时,需要将相应的SQL查询命令发送给数据库系统,由系统根据该SQL查询命令,将本机保存的所有元组数据中该SQL查询命令最终查询的业务字段(即SQL查询命令中select后面的字段)的数据发送给客户端。由客户端再按照该SQL查询命令对相关数据服务器发送的所有数据进行处理,得到最终查询结果。上述分布式系统中的数据查询方案不支持复杂的SQL查询命令,例如,包含数据分组(GROUP)、排序(ORDER)等操作的查询命令。因为,上述查询方案中各相关数据服务器所发送的数据仅为select命令对应的字段,该字段往往与GROUP、ORDER等操作所依据的业务字段不一致,这样,由于客户端所获取的数据仅为select命令对应字段的数据,因此无法对所接收的数据进行分组(GROUP)、排序(ORDER)等处理。由此可见,现有分布式系统的数据查询方法无法满足客户端的复杂查询操作需求。
技术实现思路
有鉴于此,本专利技术的主要目的在于提供,该方法可实现客户端对数据库系统的复杂查询。为了达到上述目的,本专利技术提出的技术方案为:,包括:a、客户端向数据库应用服务器发送数据查询命令;b、所述数据库应用服务器对所述数据查询命令进行优化,其中,当所述数据查询命令包含预设的复杂操作关键字时,优化后的数据查询命令的查询字段范围内包含所述复杂操作关键字在所述数据查询命令中对应的字段;C、所述数据库应用服务器将所述优化后的数据查询命令发送给存储相应数据的分布式数据服务器,所述分布式数据服务器将自身保存的所述优化后的数据查询命令中所述查询字段范围对应的数据发送给所述数据库应用服务器;d、所述数据库应用服务器按照所述优化前的数据查询命令,对接收自所述分布式数据服务器的数据进行查询处理,并将所述查询处理结果反馈给所述客户端。综上所述,本专利技术提出的数据查询方法,在将数据查询命令发送给分布式数据服务器之前,先进行优化,使分布式数据服务器可以基于优化后的命令返回用于实现复杂查询的数据,从而使数据库应用服务器可以完成复杂的查询处理,实现客户端对数据库系统的复杂查询。【附图说明】图1为本专利技术实施例一的流程示意图。【具体实施方式】为使本专利技术的目的、技术方案和优点更加清楚,下面将结合附图及具体实施例对本专利技术作进一步地详细描述。本专利技术的核心思想是:数据库系统收到客户端的查询请求后,对该查询请求中的复杂操作关键字如GROUP、ORDER关键字进行识别,将它们对应的字段增加至查询请求的查询字段范围中,然后将查询请求发给各分布式数据服务器,这样,可以从各分布式数据服务器中获取到复杂操作关键字所限定字段的数据,从而可以进一步基于这些数据完成复杂的查询处理操作。图1为本专利技术实施例一的流程示意图,如图1所示,该实施例主要包括:步骤101、客户端向数据库应用服务器发送数据查询命令。这里,所述数据库应用服务器就是直接对外提供数据库应用服务的服务器。本步骤的具体实现方法同现有系统,在此不再赘述。步骤102、所述数据库应用服务器对所述数据查询命令进行优化,其中,当所述数据查询命令包含预设的复杂操作关键字时,优化后的数据查询命令的查询字段范围内包含所述复杂操作关键字在所述数据查询命令中对应的字段。具体地,所述复杂操作关键字包括分组(GROUP)和排序(ORDER)。此种情况下,较佳地,可通过下述步骤实现上述优化:步骤1021、对所述数据查询命令进行解析,得到相应的语法树。这里,具体的解析方法为本领域技术人员所掌握,在此不再赘述。步骤1022、将所述语法树中查询(select)关键字后的查询字段范围保存在查询列表中。这里,利用一中间存储参数(即查询列表)来保存当前查询的查询字段范围,以便后续步骤中基于此参数判断是否需要将复杂操作关键字对应的字段增加到查询字段范围内。步骤1023、遍历所述语法树确定是否存在GROUP关键字,如果存在,则判断所述GROUP关键字后的分组字段是否存在于所述查询列表中,如果不存在,则将所述GROUP关键字后的分组字段增加到所述查询列表和所述语法树中查询字段的尾部。本步骤用于把GROUP关键字所对应的分组字段增加到查询字段范围内,以便此后分布式数据服务器基于优化后的查询命令,将GROUP关键字对应的分组字段的数据发送给数据库应用服务器,以使数据库应用服务器可以基于这些数据进行相应的分组查询操作。步骤1024、遍历所述语法树确定是否存在ORDER关键字,如果存在,则判断所述ORDER关键字后的排序字段是否存在于所述查询列表中,如果不存在,则将所述ORDER关键字后的排序字段增加到所述查询列表和所述语法树中查询字段的尾部。本步骤用于把ORDER关键字所对应的排序字段增加到查询字段范围内,以便此后分布式数据服务器基于优化后的查询命令,将ORDER关键字对应的排序字段的数据发送给数据库应用服务器,以使数据库应用服务器可以基于这些数据进行相应的排序查询操作。步骤1025、根据当前的所述语法树,得到所述优化后的数据查询命令。本步骤用于将优化后的语法树转化为相应的查询命令,以供分布式数据服务器基于此命令,将复杂查询操作所需要的数据发送给数据库应用服务器。这里,根据语法树得到查询命令的具体方法为本领技术人员所掌握,在此不再赘述。步骤103、所述数据库应用服务器将所述优化后的数据查询命令发送给存储相应数据的分布式数据服务器,所述分布式数据服务器将自身保存的所述优化后的数据查询命令中所述查询字段范围对应的数据发送给所述数据库应用服务器。步骤104、所述数据库应用服务器按照所述优化前的数据查询命令,对接收自所述分布式数据服务器的数据进行查询处理,并将所述查询处理结果反馈给所述客户端。本步骤中,由于各分布式数据服务器返回的数据中将包含用于复杂查询操作的数据,因此,数据库应用服务器可以基于接收到的这些数据进行复杂的查询操作(如分组、排序等)处理。这里,将所述查询处理结果反馈给所述客户端的具体方法为本领域技术人员所掌握,在此不再赘述。综上所述,以上仅为本专利技术的较佳实施例而已,并非用于限定本专利技术的保护范围。凡在本专利技术的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本专利技术的保护范围之内。本文档来自技高网...

【技术保护点】
一种数据查询方法,其特征在于,包括:a、客户端向数据库应用服务器发送数据查询命令;b、所述数据库应用服务器对所述数据查询命令进行优化,其中,当所述数据查询命令包含预设的复杂操作关键字时,优化后的数据查询命令的查询字段范围内包含所述复杂操作关键字在所述数据查询命令中对应的字段;c、所述数据库应用服务器将所述优化后的数据查询命令发送给存储相应数据的分布式数据服务器,所述分布式数据服务器将自身保存的所述优化后的数据查询命令中所述查询字段范围对应的数据发送给所述数据库应用服务器;d、所述数据库应用服务器按照所述优化前的数据查询命令,对接收自所述分布式数据服务器的数据进行查询处理,并将所述查询处理结果反馈给所述客户端。

【技术特征摘要】
1.一种数据查询方法,其特征在于,包括: a、客户端向数据库应用服务器发送数据查询命令; b、所述数据库应用服务器对所述数据查询命令进行优化,其中,当所述数据查询命令包含预设的复杂操作关键字时,优化后的数据查询命令的查询字段范围内包含所述复杂操作关键字在所述数据查询命令中对应的字段; C、所述数据库应用服务器将所述优化后的数据查询命令发送给存储相应数据的分布式数据服务器,所述分布式数据服务器将自身保存的所述优化后的数据查询命令中所述查询字段范围对应的数据发送给所述数据库应用服务器; d、所述数据库应用服务器按照所述优化前的数据查询命令,对接收自所述分布式数据服务器的数据进行查询处理,并将所述查询处理结果反馈给所述客户端。2.根据权利要求1所述的方法,其特征在于,所述复杂操作关键字包括分组GR...

【专利技术属性】
技术研发人员:唐超马丽伟秦波王锋赵晓平
申请(专利权)人:北京京东尚科信息技术有限公司北京京东世纪贸易有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1