用于优化数据存储上的查询执行的方法_2

文档序号:9872440阅读:来源:国知局
本发明的实施例的图仅用于说明性目的。所属领域技术人员将很容易从以下描述中认识到,本文描述的结构和方法的替代性实施例可在不背离本文所述的本发明的原理的情况下使用。
【具体实施方式】
[0031]前述内容已广泛地概述了本发明的特征和技术优点,以便更好地理解下文中的本发明的【具体实施方式】。下文中将描述本发明的附加特征和优点,这些特征和优点构成本发明的权利要求书的主题。所属领域的技术人员应了解,所揭示的概念和具体方面可以容易地用作修改或设计其他结构的基础,以实现与本发明目的相同的目的。所属领域的技术人员还应意识到,此类等效构造不脱离所附权利要求书中所提出的本发明的精神和范围。那些被认为是本发明的特点,无论是关于其组成还是操作方法,与进一步的目的和优势一起,都可以根据以下说明结合附图内容得到更好的理解。然而,应明确了解,提供的每个图仅用于说明性和描述性目的,并非旨在限制本发明。
[0032]本发明的实施例涉及大数据存储的智能查询。具体而言,本发明涉及一种优化数据存储上的查询执行的方法和服务器。通过将要求来自数据存储的同一部分数据的一个或多个查询分成一个或多个组优化本发明中的查询执行。此外,将一个或多个查询分成一个或多个组从一个或多个元数据中实现,该一个或多个元数据包含在用户指定的一个或多个查询中,该用户希望基于该一个或多个元数据检索结果。在实施例中,将属于同一模式的一个或多个查询分到一组。执行划分在一个或多个分组下的一个或多个查询仅涉及数据存储的一次扫描。具体而言,仅为每个分组扫描数据存储一次,因为每个分组包含要求相似类别的数据的一个或多个查询,避免了为检索同一部分数据而在数据存储上进行多次扫描。因此,这样减少了为要求同一部分数据的一个或多个查询进行扫描的次数。为每个分组仅进行一次扫描涉及确定扫描范围,该范围是扫描数据存储以检索对应划分到一个特定分组中的一个或多个查询的每个查询的结果的范围。扫描范围基于一个或多个元数据确定,该一个或多个元数据包含在划分到一个特定分组中的一个或多个查询中。随后,检索与划分到正在扫描的特定分组中的一个或多个查询有关的结果。检索的结果按要求隔离并基于包含在一个或多个查询中的一个或多个元数据响应一个或多个查询。通过这种方式,以最小延迟返回每个查询所需的来自数据存储的结果。
[0033]此后,本发明的实施例借助于示例图和一个或多个实例进行解释。然而,提供这种示例图和示例是用于说明性目的以更好地理解本发明,而不应被理解为对本发明的范围的限制。
[0034]图4示出了根据本发明的实施例的示例性高级服务器的方框图。服务器在数据存储上优化查询执行。服务器404通信式地连接到一个或多个客户机402和数据存储406。一个或多个客户机402与一个或多个用户相关联,该一个或多个用户使用一个或多个客户机402发布查询并从数据存储406中检索结果,这些结果由服务器404进行处理。一个或多个客户机402包括但不限于,移动设备、遥控设备、计算机、个人数字助理(PDA)以及能够接收用户输入并执行数据传输和显示的任意其他通信设备。在实施例中,一个或多个用户使用一个或多个客户机402访问存储了各种大数据信息的数据存储406。
[0035]存储在大数据存储中的信息可涉及一个或多个机构,包括但不限于,金融机构、仓库、商业机构、政府机关、数据安全中心、社交网络、教育机构、气象预测中心以及制造业。例如,数据存储406存储关于学生、教师、讲师、科目、分数、学术细节等属于教育机构的信息。在示例性实施例中,一个或多个机构的信息以预定义的格式或结构或扩展(例如但不限于,平面文件、分层联机分析处理数据多维数据集、多维数据集、关系数据存储、联机分析处理(OLAP)数据多维数据集以及Excel文件)存储在数据存储406中。所属领域技术人员应理解,可存在任意数量的存储大数据信息的数据存储。在实施例中,服务器404通过通信网络(图1中未示出)连接到一个或多个客户机402和数据存储406以符合查询处理并优化数据存储406上的查询执行。
[0036]通信网络包括但不限于电子商务网络、点到点(P2P)网络、局域网(LAN)、广域网(WAN)以及如因特网和WIFI等任意无线网络。通信网络使得一个或多个用户(使用一个或多个客户机402)通过服务器404与数据存储406进行通信以检索所需信息。例如,一个或多个用户使用一个或多个客户机402生成查询,这些查询被服务器404接收。随后,服务器404与数据存储406进行通信以检索响应于从一个或多个客户机402接收的查询的结果。这些结果由服务器404从数据存储406中检索出并被返回到一个或多个客户机402,从而完成通信网络上的查询执行。
[0037]图5示出了根据本发明的实施例的用于优化数据存储406上的查询执行的示例性高级服务器的方框图。服务器404包括处理单元502。配置在服务器404中的处理单元502包括接收模块504、分组模块506、执行模块508和存储单元510。配置在处理单元502中的接收模块504从一个或多个客户机402接收包括一个或多个元数据的多个查询。包括一个或多个元数据的多个查询由一个或多个用户指定。使用查询语言生成多个查询,该查询语言包括但不限于多维表达式(MDX)语言和结构化查询语言(SQL)。包括在多个查询的每个查询中的一个或多个元数据是筛选维度、筛选成员和数据集(例如筛选值或索引值或约束值)以及查询的成员。
[0038]从一个或多个客户机402接收多个查询后,分组模块506将多个查询的一个或多个查询划分到一个或多个分组列表。多个查询的一个或多个查询的分组基于包括在多个查询的每个查询中的一个或多个元数据。执行模块508在数据存储406上执行包括多个查询的一个或多个查询的一个或多个分组列表。在实施例中,一个或多个分组列表的每个分组列表的执行包括为划分到一个或多个分组列表的每个分组列表中的一个或多个查询在数据存储406上仅进行一次扫描。具体而言,仅为每个分组列表扫描一次数据存储406。随后,执行模块508检索响应于划分到一个或多个分组列表中的多个查询的一个或多个查询的结果,这些结果转而提供给一个或多个客户机402。
[0039]存储单元510用于存储接收模块504接收的多个查询和包括多个查询的一个或多个查询的一个或多个分组列表,该一个或多个分组列表由分组模块506生成。在实施例中,存储单元510存储从数据存储406中导入的大数据信息。在实施例中,接收模块504将多个查询排成一个队列,该队列存储在存储单元510中。存储单元510包括但不限于具有可执行指令的计算机可读媒体。这种计算机可读媒体可以是通用或专用计算机等一个或多个客户机402可访问的任意可用媒体。通过示例而非限制,这种计算机可读媒体可包括RAM、R0M、EEPR0M、⑶-ROM或其他光盘存储器、磁盘存储器或其他磁盘存储设备,或网络附加存储器,或可用于存储所需可执行指令并可由通用或专用计算机访问的任意其他介质。上述各项的组合应包含在计算机可读媒体的范围内。可执行指令包括如使通用计算机、专用计算机或专用处理设备执行某个功能或某组功能的指令和数据。
[0040]图6示出了根据本发明的实施例的展示通过接收模块504对一个或多个查询进行排序的示例性方框图。接收模块504从一个或多个客户机402接收包括一个或多个元数据的多个查询。例如,图6中示出了接收模块504接收的η个查询(查询1、查询2......查询η)。11个查询中的每个查询都可以或可以不包括一个或多个元数据,例如,查询I指定检索2003年以来的学生的结果。这里,2003年是元数据,其是“where”子句中提及的查询I的筛选维度、筛选成员和数据集,“where”子句限制仅检索2003年以来的学生的结果。类似地,查询2指定检索有Null元数据的学生的结果;因此,由于查询2没有指定约束条件,所以与学生有关的所有结果都被检索出。查询3指定检索“where”子句中提及的2003、2004......2006年的学生的结果。查询4类似于元数据为Null的查询2,其中查询4指定检索所有学生的分数。查询η指定检索学生的理科科目的结果。
[0041 ] 接收模块504将多个查询(查询1、查询2......查询η)排列成队列504a。在示出的图6中,多个查询(查询1、查询2......查询η)被排列成队列504a。在实施例中,接收模块504
是解析器,或者称为语言解析器,其将多个查询排列成队列504a。排序后,分组模块506将排列在队列504a中的多个查询的一个或多个查询划分到一个或多个分组列表。在实施例中,计时器502a耦合到接收模块504。当接收模块504将接收的一个或多个查询的至少一个查询进行排序时,计时器502a启动。例如,假设查询I排列在队列504a中,查询I排序时计时器启动,并且设置等待时间为30毫秒。随着预定等待时间的流逝,分组模块506开始将多个查询的一个或多个查询划分到一个或多个分组列表。例如,假设在设置的时间30毫秒内有四个查询在队列504a中排序,那么当过了 30毫秒,分组模块506开始基于这四个查询的元数据将属于同一模式的这四个查询进行分组。在实施例中,超过在计时器中配置的预定等待时间时对多个查询的一个或多个查询进行分组是可选的。预定等待时间在系统配置时设置并能根据用户需求进行修改。图7是根据本发明的实施例的描述通过分组模块506对一个或多个查询进行分组的示例图.分组模块506基于多个查询的每个查询中包括的一个或多个元数据将排列在队列504a中的一个或多个查询进行分组。在实施例中,将属于同一模式的一个或多个查询分到一组。在实施例中,基于多个查询的每个查询中包括的一个或多个元数据之间的相似性将多个查询的一个或多个查询划分到一个或多个分组列表。例如,在示出的图7中,因为一个或多个元数据相似,即查询I的元数据定义了 “2003”年,查询3的元数据定义了 “2003,2004,.....,2006”年,所以查询I和查询3被划分到分组列表506a。查询I和查询
3被分在一个分组列表中,因为它们定义了相同类别的元数据,尽管查询I与查询3的范围不同。类似地,定义了Null元数据的查询2和定义了Null元数据的查询4被分在单个分组列表506b中,因为它们的元数据类别相似,尽管它们的提取结果的实体互不相同。也就是说,查询2定义实体为“学生”,而查询4定义实体为“分数”,但是,因为查询2和查询4定义了相似类别的元数据,即所示示例中的和/或属于同一模式的“Null”元数据,所以查询2和查询4划分到分组列表506b中。查询η定义了待检索的具有理科科目的学生的结果,并被划分到单独的分组列表506c中,因为查询η的元数据与队列504a中的任何其他查询的元数据都不相似。在实施例中,分组模块将多个查
当前第2页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1