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

文档序号:9872440阅读:382来源:国知局
用于优化数据存储上的查询执行的方法
【技术领域】
[0001]本发明涉及计算机领域中的数据库技术。具体而言,本发明涉及一种用于优化数据存储尤其是大数据存储上的查询执行的方法。
【背景技术】
[0002]通常,大数据包括保存在大数据存储(称为数据存储)中的大型复杂数据的集合。大型复杂数据以数据块的形式存储,通常会对这些数据块进行索引、分类和压缩。数据存储提供高效的工具用于浏览数据存储中的数据以响应用户指定的一个或多个查询。高效工具的一个示例是联机分析处理(OLAP)工具,其处理用户请求的基于OLAP的查询。该工具有助于访问数据存储中的数据,通常涉及从数据块中读取并解压数据,通常称为在数据存储上进行扫描。通常,在数据存储上进行扫描要求大量的磁盘操作、网络输入/输出(I/O)操作和中央处理器(CPU)操作。此外,数据存储的一个众所周知的问题在于它们往往极其庞大,导致了严重的存储和性能问题。因此,数据存储的可扩展架构在大数据环境中至关重要。因此,以数据存储上最少的扫描操作和最短的交互响应时间处理伴随着处理用户指定的一个或多个查询而产生的大量数据非常困难。
[0003]通常,数据存储上的扫描操作以两种不同的方式执行来提供响应于用户执行的一个或多个查询的结果。第一种方式是完全扫描,第二种方式是基于筛选的扫描。图1示出了描述现有技术的执行完全扫描的方法的示例性方框图。该示例性方框图包括搜索引擎,其接收来自用户的一个或多个查询并在数据存储上执行接收到的一个或多个查询。完全扫描包括访问所有数据块(数据块1、数据块2......数据块η)并为一个或多个查询(查询1、查询
2......查询η)中的每个查询从数据块中读取记录,这耗费了大量的时间去检索与一个或多个用户的查询有关的准确结果。
[0004]图2示出了描述执行基于筛选的扫描的方法的另一示例性方框图。一个或多个查询包括用户指定的一个或多个筛选值或维度或索引值。例如,指定查询I为:
[0005]SeIect{[Student]}ON COLUMNS
[0006]where([years].Student in{2003})
[0007]查询I的筛选值是“2003”,即查询I请求提取2003年以来的学生记录。类似地,如图
2所示,查询2具有筛选值“2003,2006”,即提取从2003年、2004年......到2006年的学生。查询3的筛选值为空值,并且查询η的筛选值为90,即提取分数为90的学生。基于筛选的扫描涉及基于用户在一个或多个查询中指定的一个或多个筛选值或维度或索引值扫描数据存储。也就是说,分别基于筛选值“2003”、“2003,2006”等扫描数据存储以分别处理查询1、查询2等。确切地说,仅基于筛选值扫描数据存储的所需块。因此,满足一个或多个查询的筛选值的记录从数据存储中提取出来。
[0008]然而,在上述的现有扫描方法中,扫描操作的两种方式均涉及数据存储上的多次扫描以检索与用户指定的一个或多个查询有关的准确结果,因为该一个或多个查询十分复杂并且性质特殊。即,以一种特殊的方式,一个查询的答复立即设置了对第二查询的需求,而该第二查询的答复提出来另一个查询,等等。因此,高效的查询处理是应对通常涉及的大量数据并确保在数据存储上的扫描次数最少时的交互响应时间的关键需求。并且,在现有方法中,即使一个或多个并发查询要求从数据块中检索同一部分数据,也需要进行多次扫描。例如,如果查询I要求数据块中的2003年以来的学生,查询2也要求2003年以来的学生,那么现有方法涉及数据存储上的多次扫描,即数据存储总共被扫描两次以分别为查询I和查询2检索2003年以来的学生的记录。这意味着,即使并发查询要求来自数据存储的同一部分数据,也执行了多次扫描,这耗时又复杂。又例如,考虑查询I要求2003年的学生,查询2要求2006年的学生。现有方法分别为查询I和查询2执行扫描,尽管查询I (2003)和查询2(2006)的筛选值的类别相同,即都描述了“年”这个类别的筛选值。由于数据存储中资源的约束,因此执行多次扫描增加了查询延迟。
[0009]按照惯例,实现了减少多次扫描的方法。具体而言,引入了缓存技术来避免为处理要求同一部分数据的一个或多个查询而多次提取相同的数据块。图3示出了减少数据存储上的多次扫描的缓存技术。较其他数据块具有优先权的数据块被缓存。因此,使用缓存中的数据块处理一个或多个查询以减少整个数据存储上的多次扫描,从而也减少时间。然而,因为并行进入的查询要求涉及多个不同的数据块,所以基于缓存的扫描涉及频繁刷新缓存。这转而需要当前查询等待,直到前一查询释放保存在缓存中的数据块,因为正在扫描过程中的前一查询控制了所有数据块。
[0010]因此,有必要减少为处理要求同一部分数据的一个或多个查询和子查询而在数据存储上进行的多次扫描,从而增加或优化数据存储上的查询执行。

【发明内容】

[0011]通过本发明的技术实现了额外的特征和优点。本发明的其他实施例和方面在本文中进行了详细的描述,它们被视为所要求的发明的一部分。
[0012]本发明涉及一种优化数据存储上的查询执行的方法。所述方法包括接收模块接收多个查询,所述查询包括来自一个或多个客户机的一个或多个元数据,其中所述接收模块配置在通信式地连接到所述数据存储的服务器中。随后,分组模块基于包含在所述多个查询的每个查询中的所述一个或多个元数据将从所述接收模块接收的所述多个查询的一个或多个查询划分到一个或多个分组列表。接着,执行模块执行所述一个或多个分组列表的每个分组列表以检索响应于划分到所述一个或多个分组列表中的所述多个查询的所述一个或多个查询的结果,所述一个或多个分组列表包括所述数据存储上的所述多个查询的所述一个或多个查询,所述执行所述一个或多个分组列表的每个分组列表包括为划分到所述一个或多个分组列表的每个分组列表中的所述一个或多个查询在所述数据存储上进行一次扫描。
[0013]用于优化数据存储上的查询执行的服务器也作为本发明的实施例公开。所述服务器通信式地连接到所述数据存储,并包括接收模块、分组模块和执行模块。所述接收模块接收多个查询,所述查询包括来自一个或多个客户机的一个或多个元数据。所述分组模块基于包含在所述多个查询的每个查询中的所述一个或多个元数据将从所述接收模块接收的所述多个查询的一个或多个查询划分到一个或多个分组列表。所述执行模块执行所述一个或多个分组列表的每个分组列表以检索响应于划分到所述一个或多个分组列表中的所述多个查询的所述一个或多个查询的结果,所述一个或多个分组列表包括所述数据存储上的所述多个查询的所述一个或多个查询,所述执行所述一个或多个分组列表的每个分组列表包括为划分到所述一个或多个分组列表的每个分组列表中的所述一个或多个查询在所述数据存储上进行一次扫描。
[0014]本发明涉及一种非瞬时计算机可读介质,其包括存储在其上的操作,当至少一个处理单元处理所述操作时,导致系统通过接收模块执行接收多个查询的动作,所述多个查询包括来自一个或多个客户机的一个或多个元数据,其中所述接收模块配置在通信式地连接到所述数据存储的服务器中。分组模块基于包含在所述多个查询的每个查询中的所述一个或多个元数据将从所述接收模块接收的所述多个查询的一个或多个查询划分到一个或多个分组列表。接着,执行模块执行所述一个或多个分组列表的每个分组列表以检索响应于划分到所述一个或多个分组列表中的所述多个查询的所述一个或多个查询的结果,所述一个或多个分组列表包括所述数据存储上的所述多个查询的所述一个或多个查询,所述执行包括所述多个查询的所述一个或多个查询的所述一个或多个分组列表的每个分组列表包括为划分到所述一个或多个分组列表的每个分组列表中的所述一个或多个查询在所述数据存储上进行一次扫描。
[0015]用于优化数据存储上的查询执行的计算机程序也公开为本发明的一项实施例。所述计算机程序包括用于通过接收模块接收多个查询的代码段,所述多个查询包括来自一个或多个客户机的一个或多个元数据;用于通过分组模块将从所述接收模块接收的所述多个查询的一个或多个查询划分到一个或多个分组列表的代码段,所述分组基于包含在所述多个查询的每个查询中的所述一个或多个元数据执行;以及用于通过执行模块执行所述一个或多个分组列表的每个分组列表以检索响应于划分到所述一个或多个分组列表中的所述多个查询的所述一个或多个查询的查询结果的代码段,所述一个或多个分组列表包括所述数据存储上的所述多个查询的所述一个或多个查询,所述执行所述一个或多个分组列表的每个分组列表包括为划分到所述一个或多个分组列表的每个分组列表中的所述一个或多个查询在所述数据存储上进行一次扫描。
[0016]上述概要仅为说明性的,并非旨在以任何方式进行限制。除了上述的说明性方面和特征,通过参考附图和以下详细说明可清楚地了解其他方面和特征。
【附图说明】
[0017]所附权利要求书中阐述了本发明的新颖特征和特性。然而,通过参考以下结合附图进行阅读的说明性实施例的详细描述可对本发明本身的实施例以及其首选使用模式、进一步目的和优点进行最好的理解。现参考附图以示例方式描述一个或多个实施例。
[0018]图1所示为根据现有技术的实施例的描述执行完全扫描的方法的示例性方框图;
[0019]图2所示为根据现有技术的实施例的描述执行基于筛选的扫描的方法的示例性方框图;
[0020]图3所示为根据现有技术的实施例的描述减少数据存储上的多次扫描的缓存技术的示例性方框图;
[0021]图4示出了根据本发明的实施例的示例性高级服务器的方框图;
[0022]图5示出了根据本发明的实施例的用于优化数据存储上的查询执行的示例性高级服务器的方框图;以及
[0023]图6示出了根据本发明的实施例的展示通过接收模块对一个或多个查询进行排序的示例性方框图;
[0024]图7是根据本发明的实施例的描述通过分组模块对一个或多个查询进行分组的示例图;
[0025]图8所示为根据本发明的实施例的描述通过执行模块在数据存储上执行一个或多个查询的示例性方框图;
[0026]图9所示为根据本发明的实施例的描述优化数据存储上的查询执行的方法的示例性流程图;
[0027]图10所示为根据本发明的实施例的描述通过分组模块为分为一组的一个或多个查询扫描数据存储的示例性流程图;
[0028]图11所示为根据本发明的实施例描述对一个或多个查询进行排序和分组的示例图;以及
[0029]图12所示为根据本发明的实施例的描述为分为一组的一个或多个查询扫描数据存储的示例图。
[0030]描述
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1