旁路信息传递.pdf

上传人:v**** 文档编号:6186436 上传时间:2019-05-18 格式:PDF 页数:28 大小:3.80MB
返回 下载 相关 举报
摘要
申请专利号:

CN201180071504.7

申请日:

2011.07.29

公开号:

CN103597472A

公开日:

2014.02.19

当前法律状态:

撤回

有效性:

无权

法律详情:

发明专利申请公布后的视为撤回IPC(主分类):G06F 17/30申请公布日:20140219|||实质审查的生效IPC(主分类):G06F 17/30申请日:20110729|||公开

IPC分类号:

G06F17/30

主分类号:

G06F17/30

申请人:

惠普开发有限公司

发明人:

丘克·比尔; 拉克希米坎特·什里尼瓦斯; 安德鲁·拉姆

地址:

美国德克萨斯州

优先权:

2011.06.07 US 13/155,232

专利代理机构:

北京德琦知识产权代理有限公司 11018

代理人:

康泉;宋志强

PDF下载: PDF下载
内容摘要

用于使用旁路信息传递进行查询优化的方法、系统和程序产品。在一个实现中,识别查询中的连接语句,该连接语句指定要与内表连接的具有元组的外表,外表具有一个或多个属性,外表的每个属性具有存储在属性文件中的值,该属性文件不同于存储其它属性的值的属性文件。基于向内表应用的一个或多个谓词,创建用于查询的计划,该计划在执行时引起外表的元组的子集的选择来代替外表充当向连接语句的输入。

权利要求书

权利要求书
1.  一种由数据处理装置实现的方法,该方法包括:
识别查询中的连接语句,所述连接语句指定要与内表连接的具有元组的外表,所述外表具有一个或多个属性,所述外表的属性中的每个属性具有存储在属性文件中的值,该属性文件不同于存储其它属性的值的属性文件;和
在用于所述查询的计划中包括过滤器,所述过滤器在运行时引起所述外表的元组的合适子集的选择来代替所述外表充当向所述连接语句的输入,其中所述元组的选择包括:读取用于所述属性之一的属性文件的多个部分而不读取该属性文件的其它部分并且识别所读取的部分中符合向所述内表应用的一个或多个谓词的属性值。

2.  如权利要求1所述的方法,其中第一部分包括代表重复的属性值的第一属性值。

3.  如权利要求2所述的方法,其中所述第一属性值符合所述谓词中一个或多个谓词的确定满足相同属性值。

4.  如权利要求2所述的方法,其中所述第一属性值包括行程长度编码的属性值。

5.  如权利要求4所述的方法,其中所述元组的选择使用布隆过滤器。

6.  如权利要求1所述的方法,其中由所述连接语句指定所述谓词。

7.  如权利要求1所述的方法,其中所述连接语句包括向所述外表或所述内表应用的一个或多个附加谓词。

8.  如权利要求1所述的方法,其中所述连接语句包括内连接或右外连接。

9.  如权利要求1所述的方法,其中所述元组的选择使用哈希表或布隆过滤器。

10.  如权利要求1所述的方法,其中所述内表具有一个或多个属性,该一个或多个属性中每个属性具有存储在属性文件中的值,该属性文件不同于存储所述内表的其它属性的值的属性文件。

11.  如权利要求10所述的方法,其中以分类的顺序存储内表属性文件中或外表属性文件中的值。

12.  如权利要求10所述的方法,其中跨节点分割内表属性文件或外表属性文件。

13.  一种系统,包括:
存储系统,具有存储在该存储系统上的指令;以及 数据处理装置,被规划为运行所述指令来执行操作,所述操作包括:
识别查询中的连接语句,所述连接语句指定要与内表连接的具有元组的外表,所述外表具有一个或多个属性,所述外表的属性中的每个属性具有存储在属性文件中的值,该属性文件不同于存储其它属性的值的属性文件;和
在用于所述查询的计划中包括过滤器,所述过滤器在运行时引起所述外表的元组的合适子集的选择来代替所述外表充当向所述连接语句的输入,其中所述元组的选择包括:读取用于所述属性之一的属性文件的多个部分而不读取该属性文件的其它部分并且识别所读取的部分中符合向所述内表应用的一个或多个谓词的属性值。

14.  如权利要求13所述的系统,其中第一部分包括代表重复的属性值的第一属性值。

15.  如权利要求14所述的系统,其中所述第一属性值符合所述谓词中一个或多个谓词的确定满足相同属性值。

16.  如权利要求14所述的系统,其中所述第一属性值包括行程长度编码的属性值。

17.  如权利要求16所述的系统,其中所述元组的选择使用布隆过滤器。

18.  如权利要求13所述的系统,其中所述谓词由所述连接语句指定。

19.  如权利要求13所述的系统,其中所述连接语句包括向所述外表或所述内表应用的一个或多个附加谓词。

20.  如权利要求13所述的系统,其中所述连接语句包括内连接或右外连接。

21.  如权利要求13所述的系统,其中所述元组的选择使用哈希表或布隆过滤器。

22.  如权利要求13所述的系统,其中所述内表具有一个或多个属性,该一个或多个属性中每个属性具有存储在属性文件中的值,该属性文件不同于存储所述内表的其它属性的值的属性文件。

23.  如权利要求13所述的系统,其中内表属性文件中或外表属性文件中的值是以分类的顺序存储的。

24.  如权利要求13所述的系统,其中内表属性文件或外表属性文件被跨节点分割。

25.  一种存储系统,具有存储在该存储系统上的指令,该指令在由数据处理装置运行时引起所述数据处理装置来执行操作,所述操作包括:
识别查询中的连接语句,所述连接语句指定要与内表连接的具有元组的外表, 所述外表具有一个或多个属性,所述外表的属性中的每个属性具有存储在属性文件中的值,该属性文件不同于存储其它属性的值的属性文件;和
在用于所述查询的计划中包括过滤器,所述过滤器在运行时引起所述外表的元组的合适子集的选择来代替所述外表充当向所述连接语句的输入,其中所述元组的选择包括:读取用于所述属性之一的属性文件的多个部分而不读取该属性文件的其它部分并且识别所读取的部分中符合向所述内表应用的一个或多个谓词的属性值。

26.  一种由数据处理装置实现的方法,该方法包括:
识别查询中的合并连接语句,所述合并连接语句指定要与具有元组的内表连接的具有元组的外表,所述合并连接语句包括使所述外表的第一属性等于所述内表的第二属性的同等谓词,所述第一属性和所述第二属性具有以各自的分类顺序存储在各自的属性文件中的值;
在用于所述查询的计划中包括过滤器,所述过滤器在运行时引起所述外表的元组的合适子集的选择来代替所述外表充当向所述合并连接语句的输入,其中所述元组的选择包括:
对用于符合向所述内表应用的一个或多个谓词的多个内表元组的第二属性值创建哈希表;
确定用于所述多个内表元组的各个第二属性值的最小值和最大值;和
从所述外表中具有与所确定的最小值相等的第一属性值的元组开始,选择所述外表的、具有小于所述确定的最大值并且在所述哈希表中的各自第一属性值的一个或多个元组。

27.  如权利要求26所述的方法,其中使用所述各自的属性文件的二分法查找定位所述外表中的开始元组。

28.  如权利要求26所述的方法,进一步包括选择所述外表的、具有大于所确定的最大值的各自第一属性值的一个或多个元组。

29.  如权利要求26所述的方法,其中所述外表的所选择的元组具有大于或等于所确定的最小值的各自第一属性值。

30.  如权利要求26所述的方法,其中跨节点分割各自的属性文件。

31.  如权利要求26所述的方法,其中所述第一属性值被行程长度编码。

32.  一种系统,包括:
存储系统,具有存储在该存储系统上的指令;以及
数据处理装置,被规划为运行所述指令来执行操作,所述操作包括:
识别查询中的合并连接语句,所述合并连接语句指定要与具有元组的内表连接的具有元组的外表,所述合并连接语句包括使所述外表的第一属性等于所述内表的第二属性的同等谓词,所述第一属性和所述第二属性具有以各自的分类顺序存储在各自的属性文件中的值;
在用于所述查询的计划中包括过滤器,所述过滤器在运行时引起所述外表的元组的合适子集的选择来代替所述外表充当向所述合并连接语句的输入,其中所述元组的选择包括:
对用于符合向所述内表应用的一个或多个谓词的多个内表元组的第二属性值创建哈希表;
确定用于所述多个内表元组的各个第二属性值的最小值和最大值;和
从所述外表中具有与所确定的最小值相等的第一属性值的元组开始,选择所述外表的、具有小于所述确定的最大值并且在所述哈希表中的各自第一属性值的一个或多个元组。

33.  如权利要求32所述的系统,其中使用所述各自的属性文件的二分法查找定位所述外表中的开始元组。

34.  如权利要求32所述的系统,进一步包括选择所述外表的、具有大于所确定的最大值的各自第一属性值的一个或多个元组。

35.  如权利要求32所述的系统,其中所述外表的所选择的元组具有大于或等于所确定的最小值的各自第一属性值。

36.  如权利要求32所述的系统,其中各自的属性文件被跨节点分割。

37.  如权利要求32所述的系统,其中所述第一属性值被行程长度编码。

38.  一种存储系统,具有存储在该存储系统上的指令,该指令在由数据处理装置运行时引起所述数据处理装置执行操作,所述操作包括:
识别查询中的合并连接语句,所述合并连接语句指定要与具有元组的内表连接的具有元组的外表,所述合并连接语句包括使所述外表的第一属性等于所述内表的第二属性的同等谓词,所述第一属性和所述第二属性具有以各自的分类顺序存储在各自的属性文件中的值;
在用于所述查询的计划中包括过滤器,所述过滤器在运行时引起所述外表的元组的合适子集的选择来代替所述外表充当向所述合并连接语句的输入,其中所述元组的选择包括:
对用于符合向所述内表应用的一个或多个谓词的多个内表元组的第二属 性值创建哈希表;
确定用于所述多个内表元组的各个第二属性值的最小值和最大值;和
从所述外表中具有与所确定的最小值相等的第一属性值的元组开始,选择所述外表的、具有小于所述确定的最大值并且在所述哈希表中的各自第一属性值的一个或多个元组。

说明书

说明书旁路信息传递
背景技术
本公开涉及数字数据处理,具体涉及使用旁路信息传递的数据库查询优化。
结构化查询语言(SQL)是以用于对关系数据库管理系统中的数据进行查询和管理的关系代数为基础的计算机语言。关系数据库管理系统(RDBMS)是基于关系模型的数据库系统,其中将数据组织成表并且保持表间的关系。能够压缩RDBMS中的数据,以缩减其存储空间。旁路信息传递(SIP)是一种技术,其用于通过在分析时尽可能早地过滤掉不需要的数据来提高早物化的SQL连接语句的性能。
发明内容
一般来说,本说明书中描述的主题的一个方面能够体现在下面的方法中,该方法包括如下动作:识别查询中的连接语句,所述连接语句指定要与内表连接的具有元组的外表,所述外表具有一个或多个属性,所述外表的属性中每个属性具有存储在属性文件中的值,该属性文件不同于存储其它属性的值的属性文件;以及在用于所述查询的计划中包括过滤器,所述过滤器在运行时引起所述外表的元组的合适子集的选择来代替所述外表充当向所述连接语句的输入,其中所述元组的选择包括读取用于所述属性之一的属性文件的多个部分而不读取该属性文件的其它部分并且识别所读取的部分中符合向所述内表应用的一个或多个谓词的属性值。该方面的其它实施例包括相应系统、装置和计算机程序。
这些和其它方面能够可选地包括下列特征中的一个或多个特征。资源能够是视频。第一部分能够包括代表重复的属性值的第一属性值。所述第一属性值符合所述谓词中一个或多个谓词的确定满足相同的属性值。所述第一属性值包括行程长度编码的属性值。所述元组的选择使用布隆过滤器。由所述连接语句指定所述谓词。所述连接语句能够包括向所述外表或所述内表应用的一个或多个附加谓词。所述连接语句能够包括内连接或右外连接。其中,所述元组的选择使用哈希表或布隆过滤器。所述内表具有一个或多个属性,该一个或多个属性中每个属性具有存储在属性文件中的值,该属性文件不同于存储所述内表的其它属性的值的属性文件。能够以一种分类的顺序存储内表属性文件或外表属性文件中的值。能够跨节点分割内表属性文件或外表属性文件。
一般来说,本说明书中描述主题的一个方面能够体现在下面的方法中,该方法包括如下动作:识别查询中的合并连接语句,该合并连接语句指定要与具有元组的内表连接的具有元组的外表,所述合并连接语句包括使所述外表的第一属性等于所述内表的第二属性相等的同等谓词,所述第一属性和所述第二属性具有以各自的分类顺序存储在各自的属性文件中的值;在用于所述查询的计划中包括过滤器,所述过滤器在运行时引起所述外表的元组的合适子集的选择来代替所述外表充当向所述合并连接语句的输入,其中所述元组的选择包括对用于符合向所述内表应用的一个或多个谓词的多个内表元组的第二属性值创建哈希表、确定用于所述多个内表元组的各个第二属性值的最小值和最大值、以及从所述外表中具有与所确定的最小值相等的第一属性值的元组开始选择所述外表的具有小于所确定的最大值且在所述哈希表中的各自第一属性值的一个或多个元组。该方面的其它实施例包括相应的系统、装置和计算机程序。
这些和其它方面能够可选地包括下列特征中的一个或多个。资源能够是视频。使用各自的属性文件的二分法搜索能够定位所述外表中的开始元组。能够选择所述外表的、具有大于所确定的最大值的各自第一属性值的一个或多个元组。所述外表的被选择的元组具有大于或等于所确定的最小值的各自第一属性值。跨节点分割各自的属性文件。所述第一属性值被行程长度编码。
能够实现本说明书中描述的主题的特定方面来实现下列优点中的一个或多个优点。SIP与诸如列定向、压缩和分类之类的物理存储格式的特征相结合,以减少数据检索(输入/输出和缓存)成本,同时还减少执行数据分析所需的计算。列定向允许从存储器中检索表的属性值的子集,而没有检索其它属性的开销。压缩,如行程长度编码,允许用与处理单行所需的计算资源相当的计算资源来处理大量行。将相关行一起设置在持久存储器中以增加可压缩性的分类,减少设置和处理行所需的计算资源。
在附图和下面的描述中阐述一个或多个实施例的细节。其它特征、方面和优点将从描述、附图和权利要求变得显而易见。
附图说明
图1是与示例SQL查询的两个表的内连接相关的旁路信息传递的图示。
图2图示用于列容器的示例索引。
图3是示例关系数据库管理系统的示意图。
图4是示例列存储系统的示意图。
图5A-图5C图示示例SIP过滤器部署。
图6A-图6C图示另一示例SIP过滤器部署。
图7A-7B图示用于SIP过滤器的自适应关闭特征。
图8图示在合并连接背景下的SIP。
图9是图示用于在列存储数据库中使用SIP的示例技术的流程图。
各图中相同的附图标记和标号表示相同元件。
具体实施方式
在各实现中,本说明书中描述的技术能够适用于具有内连接或右外连接的查询。内连接的结果是以在查询中指定的搜索条件为基础的两个表(外和内)的列值(或“属性值”)的结合。搜索条件包括一个或多个谓词。谓词是被评估为真、假或未知的布尔表达式。用内表的每个元组测试外表的每行(或“元组”),以找出符合内连接的搜索条件的所有元组对。例如,如果外表的元组T1与内表的元组T2符合搜索条件,则结合这两个元组的属性值,以形成在内连接的输出中包含的新元组T3。
在右外连接的情况下,用外表的每个元组T2测试内表的每个元组T1,以找出符合搜索条件的所有元组对。将符合搜索条件的每个对的属性值进行结合,以形成在右外连接的输出中包含的新元组T3。如果对于内表的给定元组T1来说,没有符合搜索条件的外表的元组,则用T1的属性值和空值(NULL)代替外表的属性值生成在右外连接的输出中包含的新元组。
图1是与示例SQL查询中的两个表的内连接相关的旁路信息传递的图示:
SELECT * FROM fact HASH JOIN dim
    ON fact.a=dim.b AND dim.b=5;
上面的哈希连接操作是用哈希表实现的内连接操作。例如,能够通过将哈希函数应用于内表的每个元组的连接属性值来创建哈希表,该内表是在连接语句的右手侧指定的表。然后,能够扫描外表(在连接语句的左手侧指定),以通过在哈希表中进行查找来找到符合搜索条件的相关元组。该示例中的搜索条件是“fact.a=dim.b AND dim.b=5”。
在各实现中,能够将查询表示为有向无环图(DAG)或者其它数据结构。能够根据DAG生成查询计划。查询计划是用于访问或修改RDBMS中的信息的一套有序步骤。作为说明,DAG 104是前面的SQL查询的代表。DAG 104的节点104a代表“哈希连接”操作以及搜索条件的连接两个表(即外表fact 100和内表dim 102) 的那部分(例如,“fact.a=dim.a”)。外表100具有两个属性:“fk”100a和“a”100b。属性100a是代表内表102的主关键字102a的外关键字。将外表100表示为节点104b,内表102由DAG 104中的节点104c表示。节点104c指定dim表102的元组必须符合谓词“dim.b=5”。在不用SIP的情况下,在生成的查询计划中向哈希连接操作104a的输入会包括fact表100中的每个元组。
DAG 108代表前面的查询并且利用SIP来减少向连接操作输入的元组的数量。列存储数据库的优点是晚物化的连接—即,对于表的传递搜索条件的那些元组取得后连接列的能力。(下面参照图2进一步描述列存储)。一般而言,连接语句起过滤器的作用,以阻止将表的元组中的一些元组提供给连接操作。对于完全选择性的连接而言,由晚物化(late materialization)提供的节省能够是可观的。通过将信息从内连接输入(例如,节点108c)传递到外连接输入(例如,节点108b)来早应用过滤器,SIP在早物化连接中允许晚物化的优点,因此,能够避免取得那些与其相关的搜索条件(例如,“fact.a=dim.a”)会评估为假的元组。
作为说明,除代表外表fact 100的节点108b指定SIP过滤器之外,DAG 108的节点与DAG 104的节点相同:
hash(fk)IN<hash table 106>
谓词“IN”检查在旁路信息传递信息数据结构106(其在该情况下是哈希表)中是否出现特定值,如果出现则返回“真(TRUE)”,否则返回“假(FALSE)”。当SIP过滤器作为查询计划的一部分执行时,SIP过滤器操作来从fact表100中过滤掉会不符合搜索条件(例如,“fact.a=dim.a”)的元组。在运行用于DAG 108的查询计划中的连接操作之前,对内表102的、仅用于与属性‘b’102b的等于值5的值相对应的那些主关键字的主关键字102a值,生成旁路信息传递数据结构106。用于节点108b的SIP过滤器,检查对外表100中的每个元组而言该元组的外关键字值100a在旁路信息传递数据结构106中。如果不在,则不提供该元组作为向由节点108代表的连接操作的输入。能够使用例如像布隆过滤器(bloom filter)和魔集(magic set)这样的其它类型的SIP过滤器来代替所说明的哈希过滤器。
在各实现中,将表的每个属性的值存储在与存储该表的其它属性的值的文件分离的电子文件中。也就是说,将表的每列存储在RDBMS中分离的文件中。每个文件中的属性值还以分类的顺序物理地存储。对每列具有分离的文件使得能以一种分类顺序存储表的列中的一些列,以不同的分类顺序存储表的列中的其它列。
图2图示用于属性容器的示例索引。容器存储与投影的一套元组相关的一个 或多个属性。索引是用于将来自不同属性的数据,即属性值,联系在一起的位置索引。作为说明,位置索引200包括与一个或多个块相关的条目(entry)。在容器中,按照一种分类顺序在单独文件中将每个属性的数据存储作为一系列块,并且每个文件具有其自身的索引。在该示例中,将列1的数据存储在块202、206、208和210中,并且通过索引200索引这些块。(存在与每个属性值关联的隐含位置号)。索引存储下面的范围:与起始位置号相关的条目以及与包括用于该位置的数据的块的文件偏移相关的条目。例如,索引条目200a表示与列1相关的位置0到999,999被存储在块202中,条目200b表示位置1,000,000到1,999,999被存储在块206中,等等。
同样地,属性列2的数据被存储在块214、216、218和220中,并且通过索引212索引这些块。索引条目212a表示与列2相关的位置0到9,999存储在块214中,条目212b表示位置10,000到19,999存储在块216中,等等。例如,为了访问列2的位置645,首先检查索引212以确定包括该位置的块的偏移。索引条目212a表示块214包括位置645。然后对块214进行扫描,以定位该块中的位置数据。注意,如果查询仅需要列2的数据,那么既不触及列1的索引也不触及列1的块。通过依次查找每个属性的位置索引,能够检索与表中的特定元组相关的所有属性值—因此位置索引起到连接跨越多个文件的不同属性的作用。其它块索引是可能的。
用于实现SIP的过滤器能够通过使用索引范围值来利用该存储格式的优势,以避免读取外表的、不包括评估过滤器所需的属性值的块。例如,如果SIP过滤器需要检查属性文件中特定属性值的存在,则SIP过滤器能够使用索引范围和属性文件中的值的分类顺序,以避免读取属性文件的、可能不包括给定属性值的部分。作为说明,能够对经分类的列使用二分法搜索,以避免取得不需要的块。这能够对旁路信息传递数据结构(例如,而不是图1的属于哈希表的结构106)使用,该旁路信息传递数据结构包括来自内表的所有连接关键字的列表。用这样的列表,能够对经分类的列使用二分法搜索算法—例如取得列fk的第一值、中间值和最后值。假设第一值是0,中间值是500,并且最后一个值是1000。那么,由于“fact.fkIN(5)”在中间至最后的范围之间永远不能够是真(由于那里的“fk”值在500到1000之间),所以能够跳过整个范围。不再从该范围取得更多块。能够对第一—中间的范围(即,fk列的0-500)递归地重复该过程。
在一些实现中,能够使用行程长度编码(RLE)压缩属性文件中的属性值,该行程长度编码用包括行程中的属性值和发生次数的单个对来代替相同属性值的序 列(行程)。由于以分类的顺序物理地存储属性文件,所以属性值行程是更可能的。在一些实现中,SIP过滤器能够将重复属性值的序列视作由RLE对表示,好像该重复属性值的序列是单一属性值。这能减少SIP过滤器处理属性值所需的时间量。
图3是示例RDMBS的示意图。RDMBS包括可通过一个或多个计算机网络305访问的一个或多个数据库服务器309(例如,数据处理装置),该一个或多个数据库服务器309用于优化数据库查询,产生查询运行计划,运行查询计划,归档数据库事务,以及在有数据库毁坏或硬件故障时提供恢复过程来恢复数据库中的数据。数据库服务器309还包括实现下面描述的RDMBS的软件应用程序。与数据库服务器309相关的其它功能是可能的。
存储节点301是起到用于在RDBMS中存储的数据的存储设备功能的数据处理装置。对RDBMS能够使用任何数量的存储节点。每个存储节点301访问本地数据存储设备或非本地数据存储设备303(例如,大容量存储设备),以存储和检索数据。例如,能够将数据库表的数据分配给可通过计算机网络305访问的存储节点301中的一个或多个存储节点。在这样的实现中,能够对包括由SIP过滤器需要的属性文件的每个节点并行地运行SIP过滤器。例如,并且参考图2,能够将列2的数据块中的一些数据块存储在一个存储节点上的属性文件中,并且能够将其它数据块存储在不同存储节点上的属性文件中。位置索引212能够同样地在这两个存储节点间分裂。
在一些实现中,存储节点用于存储数据的冗余版本,使得只要例如不多于预定数量的存储节点当机,数据就能够被应用服务器309恢复。
通常,用户与诸如联接至存储节点301或另一计算机的键盘和显示器这样的终端设备307交互,以向数据库服务器309提出查询。作为响应,数据库服务器309优化查询,生成各个查询运行计划,对存储节点301实施运行计划,并且将结果提供给终端设备307。
图4是示例列存储系统400的示意图。数据库软件在被称为节点(例如,402)的一个或多个数据处理装置上运行。作为说明,数据处理装置包括例如一个或多个个人计算机或工作站、机架上安装的计算机或专用计算机。用于表的数据被物理地存储在包括来自该表的列的子集的一个或多个投影中。投影是来自一个或多个表的按照相同分类顺序分类的一组列。节点402能够与用于存储和检索数据的一个或多个存储设备(如磁盘驱动器404和406、内存和存储还没写入磁盘的数据的写优存储(WOS))通信。WOS 410充当缓存。在一些实现中,节点402包括 用于每个投影的WOS 410。
将投影存储在读优存储(ROS)中的磁盘上。ROS包括一个或多个容器。定期地或者例如如果数据超过特定可配置的年龄或大小阈值时,能够将数据移出WOS 410到一个或多个容器。容器以列的格式存储与投影的一组行相关的一个或多个列(例如,404a-404c)。其它存储格式是可能的。在列格式中,能够与其它列的数据分离地从容器中检索特定列的数据。在进一步的实现中,经验性能数据和关于磁盘的其它性能相关信息能够用于智能地放置容器,以便实现更好的性能。作为说明,具有慢访问时间和大量存储空间的磁盘404容纳来自容器404a-404c的信息,而具有较快吞吐速率的小磁盘406存储容器406a-406b。
系统400图示对数据库执行的两个常见操作:查询(例如,SQL查询)和数据加载。被称为元组移动器412的后台过程负责将数据从WOS 410转移至容器(例如,404a-404c)并且负责合并ROS容器。虚线箭头说明在数据加载期间的处理和数据流的方向。将数据记录434加载到WOS 410中,最终,元组移动器412将数据分类、压缩和编码到容器430中。在一些实现中,元组移动器412还将选择适当的磁盘位置来用于存储每个容器。
实线箭头说明在查询处理期间的查询440的过程和数据流的方向。终端用户或者运行软件程序向系统400提出查询440。SQL解析器对查询440进行解析,查询440被提供给查询优化器414,查询优化器414通过参考投影的目录408为查询选择最好的投影424。
将生成的查询计划426提供给运行引擎416,该运行引擎416与存储访问层(SAL)418交互,以在将结果记录422返回给终端用户以前响应于查询440从WOS 410或容器或WOS 410和容器中检索数据428,并且处理该数据。SAL 418提供对WOS 410和容器存储的读和写访问。在一些实现中,运行引擎416是被设计为处理列中的数据428而不是以逐行的方式处理数据428的列优化引擎。在更进一步的实现中,运行引擎416能够以数据的编码形式处理数据428,而无需首先对数据进行解码。
优化器414将一个或多个SIP过滤器添加至查询440的DAG表示,该查询440的DAG表示将被包括在要由运行引擎416运行的查询计划426中。在各实现中,优化器414根据连接的类型,将零个或更多个SIP过滤器添加至DAG的连接语句。对于具有如下格式的内连接或右外连接来说:
OuterExpr1=InnerExpr1 AND…OuterExprn=InnerExprn,
创建n+1个SIP过滤器——为每个OuterExpr(1<=k<=n)以及合集(OuterExpr1,…OuterExprn)各创建一个。
作为说明,假设在两个表“fact”和“dim”之间存在连接:
“fact.a1=dim.b1 AND fact.a2=dim.b2 AND fact.a3=dim.b3”。
那么,OuterExpr1、OuterExpr2、OuterExpr3分别是a1、a2、a3,并且InnerExpr1、InnerExpr2、InnerExpr3分别是b1、b2、b3。优化器414创建4个SIP过滤器——为a1、a2和a3每个创建一个,并且为集合(a1,a2,a3)创建一个。这些SIP过滤器代表下列谓词:
fact.a1 IN(像图1中的项106一样的某结构S1)
fact.a2 IN(像图1中的项106一样的某结构S2)
fact.a3 IN(像图1中的项106一样的某结构S3)
(fact.a1,fact.a2,fact.a3)IN(像图1中的项106一样的某结构S4)
然后,将这些SIP过滤器添加到查询的DAG表示的根并且在保持正确性的同时下推。(下面进一步描述保持正确性)。根据有多少内存可用于连接操作符的运行,在一些实现中将创建比上面描述的所有结构S1-S4更少的结构。例如,如果有足够的存储器使得“dim”表的整个哈希表装在存储器中,那么将仅创建S4。如果没有足够的存储器用于在存储器中容纳S4,但是例如,列“dim.b2”的所有值装在存储器中(列表中或布隆过滤器中),那么对连接操作符仅需创建结构S2。注意,对哈希连接来说,在取得外输入的第一元组之前,处理全部内输入。因此,到运行引擎416准备开始扫描“fact”表时,其已建立结构S1-S4之一。例如,假设创建结构S2。那么,当对“fact”表的扫描开始时,其将应用谓词“fact.a2 IN S2”。这将以与图1所示的方式(对结构106中的谓词“hash(fk)”)相似的方式起作用。
一旦已经为查询创建SIP过滤器,就将它们添加到该查询的DAG表示的根并在保持正确性的同时将它们在DAG中尽可能远地下推。作为说明,考虑图5A所示的DAG。该DAG包括两个哈希连接操作符:502和504。连接操作符504是关于搜索条件“fact.fkl=dim1.pk”的并且具有代表“fact”表扫描的外输入508和代表“dim1”表扫描的内输入510。连接操作符502是关于搜索条件“fact.fk2=dim2.pk”的并且具有外输入,该外输入是连接操作符504的输出。向连接操作符502的内输入506代表表“dim2”的扫描。
如图5B中所示,优化器414为每个连接操作符创建SIP过滤器。连接操作符 502具有SIP过滤器512“fact.fk2 IN S2”,连接操作符504具有SIP过滤器514“fact.fk1 IN S1”。SIP过滤器数据结构S1和S2分别是用于表“dim1”和“dim2”的哈希表。最初,将SIP过滤器512和SIP过滤器514添加到与它们对应的每个连接操作符。然后,下推过程开始—该过程根据下面表1中描述的规则,尝试将SIP过滤器512和SIP过滤器514下推到每个各自的连接操作符的外输入内。
规则1如果连接是左外连接或完全外连接,那么停止下推过程。规则2如果外输入不包括评估连接的搜索条件所需的所有列,则停止下推过程。规则3如果向连接的外输入将被再分割,则停止下推过程。
表1
继续说明,过程如下进行。将SIP过滤器512“fact.fk2 IN S2”下推至连接操作符502的外输入504。这是允许的,因为连接操作符502是内连接(规则1)。而且,“fact.fk2”将在外输入中是可获得的(规则2),并且没有再分割(规则3)。SIP过滤器512和514不能再进一步下推,因为向连接操作符504的外输入508需要再分割(规则3)。如果没有再分割,那么SIP过滤器512和SIP过滤器514可以一直下推至“fact”表508的扫描(由于该下推会符合所有三个规则)。
图6A图示规则2的违反情况。图6A中的DAG包括两个哈希连接操作符:602和604。连接操作符604是关于搜索条件“fact.fk1=dim1.pk”并且具有代表“fact”表扫描的外输入608和代表“dim1”表扫描的内输入610。连接操作符602是关于搜索条件“fact.fk2+dim1.c=dim2.pk”并且具有外输入和内输入606,该外输入是连接操作符604的输出,该内输入是表“dim2”的扫描。
如图6B中所示,SIP过滤器612能够下推至连接操作符602的外输入,因为这样做不会违反表1的规则中的任一规则。类似地,SIP过滤器614能够下推至表“fact”608的扫描(图6C)。然而,SIP过滤器612不能再进一步下推,因为外输入608不产生值“dim1.c”(它来自内输入610)。因此,在下推过程最后,我们可以终止于全散布有SIP过滤器的DAG。在表扫描节点上结束的SIP过滤器能够是最有用的,因为它们在查询计划中尽早地过滤掉行。
图7A-图7B图示用于SIP过滤器的自适应关闭特征。图7A中的DAG包括两个哈希连接操作符:702和704。连接操作符704是关于搜索条件“fact.fk1=dim1.pk”并且具有代表“fact”表扫描的外输入708和代表“dim1”表扫描的内输入610。连接操作符702是关于搜索条件“fact.fk2=dim2.pk”并且具有外输入和内输入706,该外输入是连接操作符704的输出,该内输入706是表“dim2”的扫描。可以为下面的查询生成图7A所示的DAG:
SELECT * FROM fact JOIN dim1 on fk1=dim1.pk JOIN dim2 on fk2=dim2.pk WHERE dim1.c1=5。
注意,没有用于“dim2”表的搜索条件谓词。因此,连接操作符702(在“fact”和“dim2”之间)不从表“dim2”中过滤掉任何行。
让S1和S2表示由每个连接创建的旁路信息传递结构(S1由“fact”和“dim1”之间的连接操作符704创建,而S2由“fact”和“dim2”之间的连接操作符702创建)。数据结构S1和S2可以是哈希表、布隆过滤器或者捕获与向连接的相应内输入有关的信息的任何其它结构。如图7B中所示,SIP过滤器创建和下推算法将生成两个SIP过滤器:SIP过滤器712“fact.fk1 IN S1”和SIP过滤器714“fact.fk2 IN S2”。这些SIP过滤器712和714将被一直下推至对“fact”表的扫描708。
由于没有对表“dim2”的搜索条件谓词,所以SIP过滤器714的结构S2将包括列“dim2.pk”列的所有值(例如,以某编码形式)。另一方面,有对表“dim1”的搜索条件谓词,因此SIP过滤器712的结构S1将仅包括与列“dim 1.c1”的相应值等于5相关的列“dim 1.pk”的那些值。如果假设“fact.fk1”列和“fact.fk2”列分别是表“dim1”和表“dim2”的外关键字,那么在列“fact.fk1”中出现的所有值还将出现在列“dim1.pk”中,并且在列“fact.fk2”中出现所有的值还出现在列“dim2.pk”中。因此,SIP过滤器714将不会从“fact”表中消除任何行。然而,SIP过滤器712可能消除一些行,因为S1仅包括与“dim.c1”等于值5相关的“dim1.pk”列的那些值。因此,从早消除行的观点来看,SIP过滤器714是无用的而且仅引起开销。开销有两种类型:a)实际评估用于每行的谓词的CPU处理开销,和b)如果连接是晚物化的,那么比所需更早取得“fact.fk2”列的开销。
为阐明上面示例中的要点b),如果两个连接都是晚物化的,那么运行(无SIPS)如下进行:
1.1对列“fact.fk1”取得一些值。
1.2执行表“fact”与表“dim1”的连接704。
1.3仅对那些传递连接704的行取得列“fact.fk2”。
1.4执行与表“dim2”的连接702。
1.5输出传递连接操作符702的所有行。
1.6重复步骤1.1-1.5,直到在“fact”表中没有更多行。
在上面的方案中,如果第一连接704消除“fact”表的大多数行,那么仅对“fact”表的一小部分行取得“fact.fk2”列。然而,在“fact”表(图7B中的节点708) 的扫描期间,由于需要评估SIP过滤器714,于是所以需要对“fact”表中的所有行取得“fact.fk2”列。因此,评估无用的SIP过滤器(例如,过滤器714)的开销可能是显著的。在各实现中,该开销能够通过适应性地停止被视为无用的SIP过滤器的评估来阻止。
在各实现中,在查询计划运行期间,保持到目前为止对其已评估给定SIP过滤器的行数的计数(C总),作为已消除该给定SIP过滤器的行数的计数(C消除)。一旦已处理足够多的行(例如,一旦C总超过特定阈值,例如1000),如果C消除少于C总的一阈值分数(例如,5%),则不再评估该给定SIP过滤器。而且,不再取得评估该给定SIP过滤器所需的列。在上面示例中,这将如下进行:
2.1取得列“fact.fk1”的某一数量的行并且评估SIP过滤器712。
2.2对于在步骤2.1中传递SIP过滤器712的行,从列“fact.fk2”取得值并且评估SIP过滤器714。
2.3更新对SIP过滤器712和SIP过滤器714的计数(C总和C消除)。
2.4在对1000行评估SIP过滤器714之后,确定C消除等于0(由于在上面的示例中,S2具有列“dim2.pk”的所有值)。因此,停止SIP过滤器714的评估,并且在该阶段不取得列“fact.fk2”的更多值。
2.5执行连接操作符704。
2.6对于传递连接操作符704的那些行取得列“fact.fk2”。
2.7执行连接操作符702。
2.8输出传递连接操作符702的行。
2.9重复步骤2.1-2.8直到“fact”表中不再有行。
通过自适应地关闭SIP过滤器714的评估,能够消除步骤2的CPU和磁盘开销。对早物化连接来说,关闭无用SIP谓词的评估可能不节省磁盘读取,但它能够节省CPU处理开销。
上面的示例仅示出用于何时关闭SIP过滤器评估的技术。其它技术是可能的。例如,能够测量评估SIP过滤器的开销,并且能够在运行时动态地确定阈值。可替代地,能够使用抽样方法,该抽样方法对来自SIP过滤器的表列的广大样本值测试SIP过滤器,并且基于这些结果做出决定。另一技术能够是定期打开SIP过滤器并且运行测试,如果测试表示SIP过滤器是无用的,则能够关闭SIP过滤器一段时间或者能够对一些被处理的行关闭SIP过滤器。
图8图示在合并连接的背景下的SIP。合并连接要求其输入被在搜索条件中指定的连接属性分类。图8中的DAG图示在搜索条件“fact.fk=dim.pk”下表“fact” 904与表“dim”806之间的合并连接802。在搜索条件中还有已被下推到dim表806的附加谓词“dim.a=5”。由于这是合并连接,所以假设“fact”表804对于列“fact.fk”被分类并且“dim”表806对于列“dim.pk”被分类。假设这些表具有下列值:

DIM表

FACT表
合并连接操作符802以内表开头(即,它首先从内表中取得数据块)。在该示例中,所取得的数据将仅包括上面示出的“dim”表的阴影行,因为这些恰好是符合搜索条件谓词“dim.a=5”的行。
于是,该连接操作符构成下列的合并连接SIP结构:
最小值:3
最大值:9
“fact.pk”的哈希表评估所取得的行
该结构是哈希连接操作符中的哈希表SIP结构的相似物。然后,将该合并连接SIP结构的指针传递至向该连接的外输入(在上面示例中,这将是“fact”表804的扫描)。对“fact”表804的扫描如下进行:
3.1对于列“fact.fk”,在所取得的数据中向前跳过至合并连接SIP结构中的最小值(在该情况下的值3)。由于列“fact.fk”被分类,所以该向前跳过能够用二分法搜索完成,并且因此不要求取得“fact.fk”列的所有磁盘数据。
3.2从在步骤3.1中找到的位置开始扫描“fact.fk”列。
3.3如果被扫描的值小于或等于最大值(上面示例中的9),那么在合并连接SIP结构的哈希表中查找被扫描的值。只要在哈希表中找到,就输出该扫描值。
3.4如果被扫描的值大于最大值(该情况下的9),那么无需在合并连接SIP的哈希表中查找就输出该被扫描的值。
3.5继续步骤3.3和3.4直到产生一组值。
对于上面示出的示例“fact”表,扫描如下进行:
4.1对于“fact.fk”列,在所取得的数据中向前跳过到值3。取得“fact.fk”等于值3的所有行。
4.2取得“fact.fk”等于4的行。由于4小于9,所以我们在合并连接SIP结构的哈希表中查找4。由于值4不存在,所以不输出值4。
4.3对于所有取得的具有值4和值5的行重复上面的操作(由于值5也不在哈希表中)。
4.4取得具有“fact.fk”等于值6的行。值6在哈希表中,因此输出值6。类似地,测试并输出具有“fact.fk”等于值6的所有行。
4.5不输出具有7和8的“fact.fk”值的行(类似于上面的步骤4.2),而输出具有值9的行(像步骤4.4)。
4.6取得具有“fact.fk”等于值10的行。由于10大于9,所以不用必须在哈希表中查找就输出值10。
因此,从外部流入合并连接操作符内的行恰好是具有“fk”值3、6、9和10的行。然后,这些行用于执行连接,然后取得内表(“dim”)的另一块,并且重复整个过程。
图9是用于在列存储数据库中使用SIP的示例技术的流程图。在查询中通过例如优化器414识别连接语句(902)。连接语句指定要与内表(例如dim表102)连接的具有元组的外表(例如fact表100)。外表具有一个或多个属性。这些属性 的值中的每个值被存储在属性文件中,该属性文件不同于存储其它属性的值的属性文件。接下来,在用于查询的计划中包括过滤器(904),例如哈希或布隆过滤器。过滤器作为计划运行的一部分被运行(906)。这引起外表的元组的合适子集的选择来代替外表充当向连接语句的输入,其中元组的选择包括:读取用于属性之一的属性文件的多个非相邻部分而不读取该属性文件的其它部分并且识别所读取的部分中符合向内表应用的一个或多个谓词的属性值。也就是说,由于将列存储为被分类在分离的文件中,所以过滤器能够利用容器索引来避免读取不会包括关注值的块。
本说明书中描述的主题和操作的实施例能够在数字电子电路中,或在包括本说明书中公开的结构和它们结构等同物在内的计算机软件、固件或硬件中,或在它们中一个或多个的组合中实现。本说明书中描述的主题的实施例能够被实现为供由数据处理装置运行或用于控制数据处理装置的操作的、在计算机存储介质上编码的一个或多个计算机程序,即计算机程序指令的一个或多个模块。可替代地或此外,程序指令能够被编码在人工生成的传播信号上,例如在机器生成的电信号、光信号或电磁信号,生成该人工生成的传播信号来编码用于传输至适当接收器装置的、供数据处理装置运行的信息。计算机存储介质能够是如下设备或者包括在如下设备中:计算机可读存储设备、计算机可读存储基板、随机存取或串行存取的存储器阵列或设备、或者它们中一个或多个的组合。而且,尽管计算机存储介质不是传播信号,但是计算机存储介质能够是在人工生成的传播信号中编码的计算机程序指令的源或目的地。计算机存储介质还能够是一个或多个分离的物理组件或介质(例如,多个CD、磁盘或其它存储设备)或者包括在一个或多个分离的物理组件或介质中。
本说明书中描述的操作能够被实现为由数据处理装置对存储在一个或多个计算机可读存储设备上或从其它源接收到的数据执行的操作。
术语“数据处理装置”涵盖用于处理数据的各种装置、设备和机器,作为示例包括可编程的处理器、计算机、芯片上的系统或者前述中的多个或前述的组合。该装置能够包括专用逻辑电路,例如FPGA(现场可编程门阵列)或者ASIC(专用集成电路)。除硬件之外,该装置还能够包括为讨论中的计算机程序创建运行环境的代码,例如构成处理器固件、协议栈、数据库管理系统、操作系统、跨平台运行时环境、虚拟机或者它们中的一个或多个的组合的代码。该装置和运行环境能够实现各种不同计算模型体系结构,如网络服务、分布式计算和网格计算体系结构。
能够以包括编译或解释语言、说明性语言或过程语言在内的任何形式的编程语言编写计算机程序(也被称为程序、软件、软件应用程序、脚本或代码),并且能够以包括作为单独程序或者作为模块、组件、子例程、对象或其它适合在计算环境中使用的单元在内的任何形式部署计算机程序。计算机程序可以,但不必,对应于文件系统中的文件。程序能够存储在文件的保持其它程序或数据(例如,在标记语言文档中存储的一个或多个脚本)的部分中,存储在专用于考虑中的程序的单个文件中,或者存储在多个配合的文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。能够将计算机程序部署为在一个计算机上或者在位于一个地点或跨多个地点分布并通过通信网络互连的多个计算机上运行。
本说明书中描述的过程和逻辑流能够由一个或多个可编程的处理器执行,该一个或多个可编程的处理器运行一个或多个计算机程序来通过对输入数据进行操作并生成输出来执行动作。该过程和逻辑流还能够由专用逻辑电路(例如FPGA(现场可编程门阵列)或者ASIC(专用集成电路))执行,并且装置还能够被实现为专用逻辑电路。
作为示例,适合于运行计算机程序的处理器包括通用微处理器和专用微处理器以及任何种类数字计算机的任意一个或多个处理器。通常,处理器将从只读存储器或随机存取存储器或只读存储器和随机存取存储器二者接收指令和数据。计算机的必要组成要素是用于依照指令执行动作的处理器和用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括用于存储数据的一个或多个大容量存储设备,例如磁盘、磁光盘或光盘,或者计算机将可操作地联接为从用于存储数据的一个或多个大容量存储设备接收数据或将数据传递至大容量存储设备或既从大容量存储设备接收数据又将数据传递至大容量存储设备。然而,计算机不需要具有这样的设备。而且,计算机能够嵌入在另一设备中,例如移动电话、个人数字助理(PDA)、移动音频或视频播放器、游戏控制台、全球定位系统(GPS)接收器或者便携式存储设备(例如,通用串行总线(USB)闪存驱动器)等等。适合于存储计算机程序指令和数据的设备包括所有形式的非易失性存储器、介质、和存储器设备,作为示例,其包括:半导体存储器设备,例如EPROM、EEPROM、和闪存设备;磁盘,例如内置硬盘或可移动磁盘;磁光盘;和CD-ROM盘和DVD-ROM盘。处理器和存储器能够由专用逻辑电路补充或者包含在专用逻辑电路中。
为提供与用户的交互,本说明书中描述的主题的实施例能够在具有用于向用户显示信息的显示设备(例如CRT(阴极射线管)或LCD(液晶显示器)监视器) 和用户向计算机提供输入所能够利用的键盘及指点设备(例如鼠标或轨迹球)的计算机上实现。其它种类的设备也能够用于提供与用户的交互;例如提供给用户的反馈能够是任何形式的感觉反馈,例如视觉反馈、听觉反馈或触觉反馈;并且能够以包括声音输入、语音输入或触觉输入在内的任何形式接收来自用户的输入。另外,计算机能够通过发送文档给由用户使用的设备或从由用户使用的设备接收文档来与用户交互;例如通过响应于从用户客户端设备上的网页浏览器接收的请求而发送网页至网页浏览器。
本说明书中描述的主题的实施例能够在包括后端组件(例如作为数据服务器),或包括中间件组件(例如应用服务器),或包括前端组件(例如具有通过其用户能够与本说明书中描述的主题的实现交互的图形用户界面或网络浏览器的客户端计算机),或一个或多个这样的后端组件、中间件组件或前端组件的任意组合的计算机系统中实现。系统的组件能够通过数字数据通信的任何形式或任何介质(例如通信网络)互联。通信网络的示例包括局域网(“LAN”)和广域网(“WAN”)、内部网络(例如,因特网)和对等网络(例如,自组织对等网络)。
计算系统能够包括客户端和服务器。客户端和服务器通常彼此远离并且通常通过通信网络交互。凭借运行在各自的计算机上并且彼此具有客户端—服务器关系的计算机程序,产生客户端和服务器的关系。在一些实施例中,服务器将数据(例如,HTML页)传送给客户端设备(例如,为了显示数据给与客户端设备交互的用户或者从与客户端设备交互的用户接收用户输入)。能够在服务器处从客户端设备接收在客户端设备处生成的数据(例如,用户交互的结果)。
虽然本说明书包括特定实现细节,这些不应该被解释为对任何发明或可以要求保护的范围的限制,而是被解释为对特定发明的特定实施例特有的特征的描述。本说明书中在不同实施例的背景下描述的特定特征还能够在单个实施例中共同实现。反之,在单个实施例背景下描述的各特征还能够在多个实施例中分离地实现或在任何适合的子组合中实现。而且,虽然上面可以将特征描述为在某些组合中起作用并且甚至最初如此主张权利,但是所主张权利的组合中的一个或多个特征能够在一些情况下从该组合中被删除,并且所主张权利的组合可以针对子组合或者子组合的变化。
类似地,尽管在附图中以特定顺序描述操作,但是这不应被理解为要求以所示的特定顺序或按相继顺序执行这样的操作,或者要求执行所有图示的操作来取得理想的结果。在特定情况下,多任务和并行处理可能是有利的。而且,上面描述的实施例中的各系统组件的分离不应被理解为在所有实施例中需要这样的分 离,并且应理解,所描述的程序组件和系统通常能够在单个软件产品中集成在一起或封装在多个软件产品中。
因此,已描述本主题的特定实施例。其它实施例在下列权利要求的范围内。在一些情况下,能够以不同顺序执行权利要求中记载的动作并且,这些动作仍获得所期望的结果。另外,附图中描绘的过程不必然要求所示出的特定顺序或相继顺序以获取所期望的结果。在特定实现中,多任务和平行处理可能是有利的。

旁路信息传递.pdf_第1页
第1页 / 共28页
旁路信息传递.pdf_第2页
第2页 / 共28页
旁路信息传递.pdf_第3页
第3页 / 共28页
点击查看更多>>
资源描述

《旁路信息传递.pdf》由会员分享,可在线阅读,更多相关《旁路信息传递.pdf(28页珍藏版)》请在专利查询网上搜索。

1、(10)申请公布号 CN 103597472 A (43)申请公布日 2014.02.19 CN 103597472 A (21)申请号 201180071504.7 (22)申请日 2011.07.29 13/155,232 2011.06.07 US G06F 17/30(2006.01) (71)申请人 惠普开发有限公司 地址 美国德克萨斯州 (72)发明人 丘克比尔 拉克希米坎特什里尼瓦斯 安德鲁拉姆 (74)专利代理机构 北京德琦知识产权代理有限 公司 11018 代理人 康泉 宋志强 (54) 发明名称 旁路信息传递 (57) 摘要 用于使用旁路信息传递进行查询优化的方 法、 系统。

2、和程序产品。在一个实现中, 识别查询中 的连接语句, 该连接语句指定要与内表连接的具 有元组的外表, 外表具有一个或多个属性, 外表的 每个属性具有存储在属性文件中的值, 该属性文 件不同于存储其它属性的值的属性文件。基于向 内表应用的一个或多个谓词, 创建用于查询的计 划, 该计划在执行时引起外表的元组的子集的选 择来代替外表充当向连接语句的输入。 (30)优先权数据 (85)PCT国际申请进入国家阶段日 2013.12.09 (86)PCT国际申请的申请数据 PCT/US2011/045901 2011.07.29 (87)PCT国际申请的公布数据 WO2012/170049 EN 201。

3、2.12.13 (51)Int.Cl. 权利要求书 4 页 说明书 13 页 附图 10 页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书4页 说明书13页 附图10页 (10)申请公布号 CN 103597472 A CN 103597472 A 1/4 页 2 1. 一种由数据处理装置实现的方法, 该方法包括 : 识别查询中的连接语句, 所述连接语句指定要与内表连接的具有元组的外表, 所述外 表具有一个或多个属性, 所述外表的属性中的每个属性具有存储在属性文件中的值, 该属 性文件不同于存储其它属性的值的属性文件 ; 和 在用于所述查询的计划中包括过滤器, 所述过。

4、滤器在运行时引起所述外表的元组的合 适子集的选择来代替所述外表充当向所述连接语句的输入, 其中所述元组的选择包括 : 读 取用于所述属性之一的属性文件的多个部分而不读取该属性文件的其它部分并且识别所 读取的部分中符合向所述内表应用的一个或多个谓词的属性值。 2. 如权利要求 1 所述的方法, 其中第一部分包括代表重复的属性值的第一属性值。 3. 如权利要求 2 所述的方法, 其中所述第一属性值符合所述谓词中一个或多个谓词的 确定满足相同属性值。 4. 如权利要求 2 所述的方法, 其中所述第一属性值包括行程长度编码的属性值。 5. 如权利要求 4 所述的方法, 其中所述元组的选择使用布隆过滤器。

5、。 6. 如权利要求 1 所述的方法, 其中由所述连接语句指定所述谓词。 7. 如权利要求 1 所述的方法, 其中所述连接语句包括向所述外表或所述内表应用的一 个或多个附加谓词。 8. 如权利要求 1 所述的方法, 其中所述连接语句包括内连接或右外连接。 9. 如权利要求 1 所述的方法, 其中所述元组的选择使用哈希表或布隆过滤器。 10. 如权利要求 1 所述的方法, 其中所述内表具有一个或多个属性, 该一个或多个属性 中每个属性具有存储在属性文件中的值, 该属性文件不同于存储所述内表的其它属性的值 的属性文件。 11. 如权利要求 10 所述的方法, 其中以分类的顺序存储内表属性文件中或外。

6、表属性文 件中的值。 12. 如权利要求 10 所述的方法, 其中跨节点分割内表属性文件或外表属性文件。 13. 一种系统, 包括 : 存储系统, 具有存储在该存储系统上的指令 ; 以及数据处理装置, 被规划为运行所述指 令来执行操作, 所述操作包括 : 识别查询中的连接语句, 所述连接语句指定要与内表连接的具有元组的外表, 所述外 表具有一个或多个属性, 所述外表的属性中的每个属性具有存储在属性文件中的值, 该属 性文件不同于存储其它属性的值的属性文件 ; 和 在用于所述查询的计划中包括过滤器, 所述过滤器在运行时引起所述外表的元组的合 适子集的选择来代替所述外表充当向所述连接语句的输入, 。

7、其中所述元组的选择包括 : 读 取用于所述属性之一的属性文件的多个部分而不读取该属性文件的其它部分并且识别所 读取的部分中符合向所述内表应用的一个或多个谓词的属性值。 14. 如权利要求 13 所述的系统, 其中第一部分包括代表重复的属性值的第一属性值。 15. 如权利要求 14 所述的系统, 其中所述第一属性值符合所述谓词中一个或多个谓词 的确定满足相同属性值。 16. 如权利要求 14 所述的系统, 其中所述第一属性值包括行程长度编码的属性值。 17. 如权利要求 16 所述的系统, 其中所述元组的选择使用布隆过滤器。 权 利 要 求 书 CN 103597472 A 2 2/4 页 3 。

8、18. 如权利要求 13 所述的系统, 其中所述谓词由所述连接语句指定。 19. 如权利要求 13 所述的系统, 其中所述连接语句包括向所述外表或所述内表应用的 一个或多个附加谓词。 20. 如权利要求 13 所述的系统, 其中所述连接语句包括内连接或右外连接。 21. 如权利要求 13 所述的系统, 其中所述元组的选择使用哈希表或布隆过滤器。 22. 如权利要求 13 所述的系统, 其中所述内表具有一个或多个属性, 该一个或多个属 性中每个属性具有存储在属性文件中的值, 该属性文件不同于存储所述内表的其它属性的 值的属性文件。 23. 如权利要求 13 所述的系统, 其中内表属性文件中或外表。

9、属性文件中的值是以分类 的顺序存储的。 24. 如权利要求 13 所述的系统, 其中内表属性文件或外表属性文件被跨节点分割。 25. 一种存储系统, 具有存储在该存储系统上的指令, 该指令在由数据处理装置运行时 引起所述数据处理装置来执行操作, 所述操作包括 : 识别查询中的连接语句, 所述连接语句指定要与内表连接的具有元组的外表, 所述外 表具有一个或多个属性, 所述外表的属性中的每个属性具有存储在属性文件中的值, 该属 性文件不同于存储其它属性的值的属性文件 ; 和 在用于所述查询的计划中包括过滤器, 所述过滤器在运行时引起所述外表的元组的合 适子集的选择来代替所述外表充当向所述连接语句的。

10、输入, 其中所述元组的选择包括 : 读 取用于所述属性之一的属性文件的多个部分而不读取该属性文件的其它部分并且识别所 读取的部分中符合向所述内表应用的一个或多个谓词的属性值。 26. 一种由数据处理装置实现的方法, 该方法包括 : 识别查询中的合并连接语句, 所述合并连接语句指定要与具有元组的内表连接的具有 元组的外表, 所述合并连接语句包括使所述外表的第一属性等于所述内表的第二属性的同 等谓词, 所述第一属性和所述第二属性具有以各自的分类顺序存储在各自的属性文件中的 值 ; 在用于所述查询的计划中包括过滤器, 所述过滤器在运行时引起所述外表的元组的 合适子集的选择来代替所述外表充当向所述合并。

11、连接语句的输入, 其中所述元组的选择包 括 : 对用于符合向所述内表应用的一个或多个谓词的多个内表元组的第二属性值创建哈 希表 ; 确定用于所述多个内表元组的各个第二属性值的最小值和最大值 ; 和 从所述外表中具有与所确定的最小值相等的第一属性值的元组开始, 选择所述外表 的、 具有小于所述确定的最大值并且在所述哈希表中的各自第一属性值的一个或多个元 组。 27. 如权利要求 26 所述的方法, 其中使用所述各自的属性文件的二分法查找定位所述 外表中的开始元组。 28. 如权利要求 26 所述的方法, 进一步包括选择所述外表的、 具有大于所确定的最大 值的各自第一属性值的一个或多个元组。 29。

12、. 如权利要求 26 所述的方法, 其中所述外表的所选择的元组具有大于或等于所确定 权 利 要 求 书 CN 103597472 A 3 3/4 页 4 的最小值的各自第一属性值。 30. 如权利要求 26 所述的方法, 其中跨节点分割各自的属性文件。 31. 如权利要求 26 所述的方法, 其中所述第一属性值被行程长度编码。 32. 一种系统, 包括 : 存储系统, 具有存储在该存储系统上的指令 ; 以及 数据处理装置, 被规划为运行所述指令来执行操作, 所述操作包括 : 识别查询中的合并连接语句, 所述合并连接语句指定要与具有元组的内表连接的具有 元组的外表, 所述合并连接语句包括使所述外。

13、表的第一属性等于所述内表的第二属性的同 等谓词, 所述第一属性和所述第二属性具有以各自的分类顺序存储在各自的属性文件中的 值 ; 在用于所述查询的计划中包括过滤器, 所述过滤器在运行时引起所述外表的元组的 合适子集的选择来代替所述外表充当向所述合并连接语句的输入, 其中所述元组的选择包 括 : 对用于符合向所述内表应用的一个或多个谓词的多个内表元组的第二属性值创建哈 希表 ; 确定用于所述多个内表元组的各个第二属性值的最小值和最大值 ; 和 从所述外表中具有与所确定的最小值相等的第一属性值的元组开始, 选择所述外表 的、 具有小于所述确定的最大值并且在所述哈希表中的各自第一属性值的一个或多个元。

14、 组。 33. 如权利要求 32 所述的系统, 其中使用所述各自的属性文件的二分法查找定位所述 外表中的开始元组。 34. 如权利要求 32 所述的系统, 进一步包括选择所述外表的、 具有大于所确定的最大 值的各自第一属性值的一个或多个元组。 35. 如权利要求 32 所述的系统, 其中所述外表的所选择的元组具有大于或等于所确定 的最小值的各自第一属性值。 36. 如权利要求 32 所述的系统, 其中各自的属性文件被跨节点分割。 37. 如权利要求 32 所述的系统, 其中所述第一属性值被行程长度编码。 38. 一种存储系统, 具有存储在该存储系统上的指令, 该指令在由数据处理装置运行时 引起。

15、所述数据处理装置执行操作, 所述操作包括 : 识别查询中的合并连接语句, 所述合并连接语句指定要与具有元组的内表连接的具有 元组的外表, 所述合并连接语句包括使所述外表的第一属性等于所述内表的第二属性的同 等谓词, 所述第一属性和所述第二属性具有以各自的分类顺序存储在各自的属性文件中的 值 ; 在用于所述查询的计划中包括过滤器, 所述过滤器在运行时引起所述外表的元组的 合适子集的选择来代替所述外表充当向所述合并连接语句的输入, 其中所述元组的选择包 括 : 对用于符合向所述内表应用的一个或多个谓词的多个内表元组的第二属性值创建哈 希表 ; 确定用于所述多个内表元组的各个第二属性值的最小值和最大。

16、值 ; 和 权 利 要 求 书 CN 103597472 A 4 4/4 页 5 从所述外表中具有与所确定的最小值相等的第一属性值的元组开始, 选择所述外表 的、 具有小于所述确定的最大值并且在所述哈希表中的各自第一属性值的一个或多个元 组。 权 利 要 求 书 CN 103597472 A 5 1/13 页 6 旁路信息传递 背景技术 0001 本公开涉及数字数据处理, 具体涉及使用旁路信息传递的数据库查询优化。 0002 结构化查询语言 (SQL) 是以用于对关系数据库管理系统中的数据进行查询和管理 的关系代数为基础的计算机语言。关系数据库管理系统 (RDBMS) 是基于关系模型的数据库 。

17、系统, 其中将数据组织成表并且保持表间的关系。能够压缩 RDBMS 中的数据, 以缩减其存储 空间。旁路信息传递 (SIP) 是一种技术, 其用于通过在分析时尽可能早地过滤掉不需要的 数据来提高早物化的 SQL 连接语句的性能。 发明内容 0003 一般来说, 本说明书中描述的主题的一个方面能够体现在下面的方法中, 该方法 包括如下动作 : 识别查询中的连接语句, 所述连接语句指定要与内表连接的具有元组的外 表, 所述外表具有一个或多个属性, 所述外表的属性中每个属性具有存储在属性文件中的 值, 该属性文件不同于存储其它属性的值的属性文件 ; 以及在用于所述查询的计划中包括 过滤器, 所述过滤。

18、器在运行时引起所述外表的元组的合适子集的选择来代替所述外表充当 向所述连接语句的输入, 其中所述元组的选择包括读取用于所述属性之一的属性文件的多 个部分而不读取该属性文件的其它部分并且识别所读取的部分中符合向所述内表应用的 一个或多个谓词的属性值。该方面的其它实施例包括相应系统、 装置和计算机程序。 0004 这些和其它方面能够可选地包括下列特征中的一个或多个特征。资源能够是视 频。第一部分能够包括代表重复的属性值的第一属性值。所述第一属性值符合所述谓词中 一个或多个谓词的确定满足相同的属性值。所述第一属性值包括行程长度编码的属性值。 所述元组的选择使用布隆过滤器。由所述连接语句指定所述谓词。。

19、所述连接语句能够包括 向所述外表或所述内表应用的一个或多个附加谓词。 所述连接语句能够包括内连接或右外 连接。其中, 所述元组的选择使用哈希表或布隆过滤器。所述内表具有一个或多个属性, 该 一个或多个属性中每个属性具有存储在属性文件中的值, 该属性文件不同于存储所述内表 的其它属性的值的属性文件。 能够以一种分类的顺序存储内表属性文件或外表属性文件中 的值。能够跨节点分割内表属性文件或外表属性文件。 0005 一般来说, 本说明书中描述主题的一个方面能够体现在下面的方法中, 该方法包 括如下动作 : 识别查询中的合并连接语句, 该合并连接语句指定要与具有元组的内表连接 的具有元组的外表, 所述。

20、合并连接语句包括使所述外表的第一属性等于所述内表的第二属 性相等的同等谓词, 所述第一属性和所述第二属性具有以各自的分类顺序存储在各自的属 性文件中的值 ; 在用于所述查询的计划中包括过滤器, 所述过滤器在运行时引起所述外表 的元组的合适子集的选择来代替所述外表充当向所述合并连接语句的输入, 其中所述元组 的选择包括对用于符合向所述内表应用的一个或多个谓词的多个内表元组的第二属性值 创建哈希表、 确定用于所述多个内表元组的各个第二属性值的最小值和最大值、 以及从所 述外表中具有与所确定的最小值相等的第一属性值的元组开始选择所述外表的具有小于 所确定的最大值且在所述哈希表中的各自第一属性值的一个。

21、或多个元组。 该方面的其它实 说 明 书 CN 103597472 A 6 2/13 页 7 施例包括相应的系统、 装置和计算机程序。 0006 这些和其它方面能够可选地包括下列特征中的一个或多个。资源能够是视频。使 用各自的属性文件的二分法搜索能够定位所述外表中的开始元组。能够选择所述外表的、 具有大于所确定的最大值的各自第一属性值的一个或多个元组。 所述外表的被选择的元组 具有大于或等于所确定的最小值的各自第一属性值。跨节点分割各自的属性文件。所述第 一属性值被行程长度编码。 0007 能够实现本说明书中描述的主题的特定方面来实现下列优点中的一个或多个优 点。 SIP与诸如列定向、 压缩和。

22、分类之类的物理存储格式的特征相结合, 以减少数据检索 (输 入 / 输出和缓存) 成本, 同时还减少执行数据分析所需的计算。列定向允许从存储器中检索 表的属性值的子集, 而没有检索其它属性的开销。压缩, 如行程长度编码, 允许用与处理单 行所需的计算资源相当的计算资源来处理大量行。 将相关行一起设置在持久存储器中以增 加可压缩性的分类, 减少设置和处理行所需的计算资源。 0008 在附图和下面的描述中阐述一个或多个实施例的细节。其它特征、 方面和优点将 从描述、 附图和权利要求变得显而易见。 附图说明 0009 图 1 是与示例 SQL 查询的两个表的内连接相关的旁路信息传递的图示。 0010。

23、 图 2 图示用于列容器的示例索引。 0011 图 3 是示例关系数据库管理系统的示意图。 0012 图 4 是示例列存储系统的示意图。 0013 图 5A- 图 5C 图示示例 SIP 过滤器部署。 0014 图 6A- 图 6C 图示另一示例 SIP 过滤器部署。 0015 图 7A-7B 图示用于 SIP 过滤器的自适应关闭特征。 0016 图 8 图示在合并连接背景下的 SIP。 0017 图 9 是图示用于在列存储数据库中使用 SIP 的示例技术的流程图。 0018 各图中相同的附图标记和标号表示相同元件。 具体实施方式 0019 在各实现中, 本说明书中描述的技术能够适用于具有内连。

24、接或右外连接的查询。 内连接的结果是以在查询中指定的搜索条件为基础的两个表 (外和内) 的列值 (或 “属性 值” ) 的结合。搜索条件包括一个或多个谓词。谓词是被评估为真、 假或未知的布尔表达式。 用内表的每个元组测试外表的每行 (或 “元组” ) , 以找出符合内连接的搜索条件的所有元组 对。 例如, 如果外表的元组T1与内表的元组T2符合搜索条件, 则结合这两个元组的属性值, 以形成在内连接的输出中包含的新元组 T3。 0020 在右外连接的情况下, 用外表的每个元组 T2 测试内表的每个元组 T1, 以找出符合 搜索条件的所有元组对。将符合搜索条件的每个对的属性值进行结合, 以形成在右。

25、外连接 的输出中包含的新元组T3。 如果对于内表的给定元组T1来说, 没有符合搜索条件的外表的 元组, 则用 T1 的属性值和空值 (NULL) 代替外表的属性值生成在右外连接的输出中包含的 新元组。 说 明 书 CN 103597472 A 7 3/13 页 8 0021 图 1 是与示例 SQL 查询中的两个表的内连接相关的旁路信息传递的图示 : 0022 SELECT * FROM fact HASH JOIN dim 0023 ON fact.a=dim.b AND dim.b=5 ; 0024 上面的哈希连接操作是用哈希表实现的内连接操作。例如, 能够通过将哈希函数 应用于内表的每个。

26、元组的连接属性值来创建哈希表, 该内表是在连接语句的右手侧指定的 表。然后, 能够扫描外表 (在连接语句的左手侧指定) , 以通过在哈希表中进行查找来找到符 合搜索条件的相关元组。该示例中的搜索条件是 “fact.a=dim.b AND dim.b=5” 。 0025 在各实现中, 能够将查询表示为有向无环图 (DAG) 或者其它数据结构。能够根据 DAG 生成查询计划。查询计划是用于访问或修改 RDBMS 中的信息的一套有序步骤。作为说 明, DAG 104 是前面的 SQL 查询的代表。DAG 104 的节点 104a 代表 “哈希连接” 操作以及 搜索条件的连接两个表 (即外表 fact。

27、 100 和内表 dim 102) 的那部分 (例如,“fact.a=dim. a” ) 。外表 100 具有两个属性 :“fk” 100a 和 “a” 100b。属性 100a 是代表内表 102 的主关键 字 102a 的外关键字。将外表 100 表示为节点 104b, 内表 102 由 DAG 104 中的节点 104c 表 示。节点 104c 指定 dim 表 102 的元组必须符合谓词 “dim.b=5” 。在不用 SIP 的情况下, 在 生成的查询计划中向哈希连接操作 104a 的输入会包括 fact 表 100 中的每个元组。 0026 DAG 108 代表前面的查询并且利用 S。

28、IP 来减少向连接操作输入的元组的数量。列 存储数据库的优点是晚物化的连接即, 对于表的传递搜索条件的那些元组取得后连接列 的能力。 (下面参照图 2 进一步描述列存储) 。一般而言, 连接语句起过滤器的作用, 以阻止 将表的元组中的一些元组提供给连接操作。对于完全选择性的连接而言, 由晚物化 (late materialization) 提供的节省能够是可观的。通过将信息从内连接输入 (例如, 节点 108c) 传递到外连接输入 (例如, 节点 108b) 来早应用过滤器, SIP 在早物化连接中允许晚物化的 优点, 因此, 能够避免取得那些与其相关的搜索条件 (例如,“fact.a=dim。

29、.a” ) 会评估为假的 元组。 0027 作为说明, 除代表外表 fact 100 的节点 108b 指定 SIP 过滤器之外, DAG 108 的节 点与 DAG 104 的节点相同 : 0028 hash(fk)IN 0029 谓词 “IN” 检查在旁路信息传递信息数据结构 106(其在该情况下是哈希表) 中是 否出现特定值, 如果出现则返回 “真 (TRUE) ” , 否则返回 “假 (FALSE) ” 。当 SIP 过滤器作为查 询计划的一部分执行时, SIP 过滤器操作来从 fact 表 100 中过滤掉会不符合搜索条件 (例 如,“fact.a=dim.a” ) 的元组。在运行用。

30、于 DAG 108 的查询计划中的连接操作之前, 对内 表 102 的、 仅用于与属性 b 102b 的等于值 5 的值相对应的那些主关键字的主关键字 102a 值, 生成旁路信息传递数据结构 106。用于节点 108b 的 SIP 过滤器, 检查对外表 100 中的 每个元组而言该元组的外关键字值 100a 在旁路信息传递数据结构 106 中。如果不在, 则不 提供该元组作为向由节点108代表的连接操作的输入。 能够使用例如像布隆过滤器 (bloom filter) 和魔集 (magic set) 这样的其它类型的 SIP 过滤器来代替所说明的哈希过滤器。 0030 在各实现中, 将表的每个。

31、属性的值存储在与存储该表的其它属性的值的文件分离 的电子文件中。也就是说, 将表的每列存储在 RDBMS 中分离的文件中。每个文件中的属性 值还以分类的顺序物理地存储。 对每列具有分离的文件使得能以一种分类顺序存储表的列 中的一些列, 以不同的分类顺序存储表的列中的其它列。 说 明 书 CN 103597472 A 8 4/13 页 9 0031 图 2 图示用于属性容器的示例索引。容器存储与投影的一套元组相关的一个或多 个属性。 索引是用于将来自不同属性的数据, 即属性值, 联系在一起的位置索引。 作为说明, 位置索引200包括与一个或多个块相关的条目 (entry) 。 在容器中, 按照一。

32、种分类顺序在单 独文件中将每个属性的数据存储作为一系列块, 并且每个文件具有其自身的索引。在该示 例中, 将列 1 的数据存储在块 202、 206、 208 和 210 中, 并且通过索引 200 索引这些块。 (存 在与每个属性值关联的隐含位置号) 。 索引存储下面的范围 : 与起始位置号相关的条目以及 与包括用于该位置的数据的块的文件偏移相关的条目。例如, 索引条目 200a 表示与列 1 相 关的位置 0 到 999,999 被存储在块 202 中, 条目 200b 表示位置 1,000,000 到 1,999,999 被 存储在块 206 中, 等等。 0032 同样地, 属性列 2。

33、 的数据被存储在块 214、 216、 218 和 220 中, 并且通过索引 212 索 引这些块。索引条目 212a 表示与列 2 相关的位置 0 到 9,999 存储在块 214 中, 条目 212b 表 示位置 10,000 到 19,999 存储在块 216 中, 等等。例如, 为了访问列 2 的位置 645, 首先检查 索引 212 以确定包括该位置的块的偏移。索引条目 212a 表示块 214 包括位置 645。然后对 块 214 进行扫描, 以定位该块中的位置数据。注意, 如果查询仅需要列 2 的数据, 那么既不 触及列 1 的索引也不触及列 1 的块。通过依次查找每个属性的位。

34、置索引, 能够检索与表中 的特定元组相关的所有属性值因此位置索引起到连接跨越多个文件的不同属性的作用。 其它块索引是可能的。 0033 用于实现 SIP 的过滤器能够通过使用索引范围值来利用该存储格式的优势, 以避 免读取外表的、 不包括评估过滤器所需的属性值的块。例如, 如果 SIP 过滤器需要检查属 性文件中特定属性值的存在, 则 SIP 过滤器能够使用索引范围和属性文件中的值的分类顺 序, 以避免读取属性文件的、 可能不包括给定属性值的部分。作为说明, 能够对经分类的列 使用二分法搜索, 以避免取得不需要的块。这能够对旁路信息传递数据结构 (例如, 而不是 图 1 的属于哈希表的结构 1。

35、06) 使用, 该旁路信息传递数据结构包括来自内表的所有连接关 键字的列表。用这样的列表, 能够对经分类的列使用二分法搜索算法例如取得列 fk 的第 一值、 中间值和最后值。假设第一值是 0, 中间值是 500, 并且最后一个值是 1000。那么, 由 于 “fact.fkIN(5)” 在中间至最后的范围之间永远不能够是真 (由于那里的 “fk” 值在 500 到 1000 之间) , 所以能够跳过整个范围。不再从该范围取得更多块。能够对第一中间的 范围 (即, fk 列的 0-500) 递归地重复该过程。 0034 在一些实现中, 能够使用行程长度编码 (RLE) 压缩属性文件中的属性值, 。

36、该行程长 度编码用包括行程中的属性值和发生次数的单个对来代替相同属性值的序列 (行程) 。由于 以分类的顺序物理地存储属性文件, 所以属性值行程是更可能的。在一些实现中, SIP 过滤 器能够将重复属性值的序列视作由 RLE 对表示, 好像该重复属性值的序列是单一属性值。 这能减少 SIP 过滤器处理属性值所需的时间量。 0035 图 3 是示例 RDMBS 的示意图。RDMBS 包括可通过一个或多个计算机网络 305 访问 的一个或多个数据库服务器 309 (例如, 数据处理装置) , 该一个或多个数据库服务器 309 用 于优化数据库查询, 产生查询运行计划, 运行查询计划, 归档数据库事。

37、务, 以及在有数据库 毁坏或硬件故障时提供恢复过程来恢复数据库中的数据。数据库服务器 309 还包括实现下 面描述的 RDMBS 的软件应用程序。与数据库服务器 309 相关的其它功能是可能的。 0036 存储节点 301 是起到用于在 RDBMS 中存储的数据的存储设备功能的数据处理装 说 明 书 CN 103597472 A 9 5/13 页 10 置。对 RDBMS 能够使用任何数量的存储节点。每个存储节点 301 访问本地数据存储设备或 非本地数据存储设备 303(例如, 大容量存储设备) , 以存储和检索数据。例如, 能够将数据 库表的数据分配给可通过计算机网络 305 访问的存储节。

38、点 301 中的一个或多个存储节点。 在这样的实现中, 能够对包括由 SIP 过滤器需要的属性文件的每个节点并行地运行 SIP 过 滤器。例如, 并且参考图 2, 能够将列 2 的数据块中的一些数据块存储在一个存储节点上的 属性文件中, 并且能够将其它数据块存储在不同存储节点上的属性文件中。位置索引 212 能够同样地在这两个存储节点间分裂。 0037 在一些实现中, 存储节点用于存储数据的冗余版本, 使得只要例如不多于预定数 量的存储节点当机, 数据就能够被应用服务器 309 恢复。 0038 通常, 用户与诸如联接至存储节点 301 或另一计算机的键盘和显示器这样的终端 设备 307 交互。

39、, 以向数据库服务器 309 提出查询。作为响应, 数据库服务器 309 优化查询, 生成各个查询运行计划, 对存储节点 301 实施运行计划, 并且将结果提供给终端设备 307。 0039 图 4 是示例列存储系统 400 的示意图。数据库软件在被称为节点 (例如, 402) 的一 个或多个数据处理装置上运行。作为说明, 数据处理装置包括例如一个或多个个人计算机 或工作站、 机架上安装的计算机或专用计算机。用于表的数据被物理地存储在包括来自该 表的列的子集的一个或多个投影中。 投影是来自一个或多个表的按照相同分类顺序分类的 一组列。节点 402 能够与用于存储和检索数据的一个或多个存储设备 。

40、(如磁盘驱动器 404 和 406、 内存和存储还没写入磁盘的数据的写优存储 (WOS) ) 通信。WOS 410 充当缓存。在 一些实现中, 节点 402 包括用于每个投影的 WOS 410。 0040 将投影存储在读优存储 (ROS) 中的磁盘上。ROS 包括一个或多个容器。定期地或 者例如如果数据超过特定可配置的年龄或大小阈值时, 能够将数据移出 WOS 410 到一个或 多个容器。容器以列的格式存储与投影的一组行相关的一个或多个列 (例如, 404a-404c) 。 其它存储格式是可能的。在列格式中, 能够与其它列的数据分离地从容器中检索特定列的 数据。在进一步的实现中, 经验性能数据。

41、和关于磁盘的其它性能相关信息能够用于智能地 放置容器, 以便实现更好的性能。作为说明, 具有慢访问时间和大量存储空间的磁盘 404 容 纳来自容器 404a-404c 的信息, 而具有较快吞吐速率的小磁盘 406 存储容器 406a-406b。 0041 系统 400 图示对数据库执行的两个常见操作 : 查询 (例如, SQL 查询) 和数据加载。 被称为元组移动器412的后台过程负责将数据从WOS 410转移至容器 (例如, 404a-404c) 并 且负责合并 ROS 容器。虚线箭头说明在数据加载期间的处理和数据流的方向。将数据记录 434 加载到 WOS 410 中, 最终, 元组移动器。

42、 412 将数据分类、 压缩和编码到容器 430 中。在一 些实现中, 元组移动器 412 还将选择适当的磁盘位置来用于存储每个容器。 0042 实线箭头说明在查询处理期间的查询 440 的过程和数据流的方向。终端用户或者 运行软件程序向系统 400 提出查询 440。SQL 解析器对查询 440 进行解析, 查询 440 被提供 给查询优化器 414, 查询优化器 414 通过参考投影的目录 408 为查询选择最好的投影 424。 0043 将生成的查询计划 426 提供给运行引擎 416, 该运行引擎 416 与存储访问层 (SAL) 418 交互, 以在将结果记录 422 返回给终端用户。

43、以前响应于查询 440 从 WOS 410 或容器或 WOS 410 和容器中检索数据 428, 并且处理该数据。SAL 418 提供对 WOS 410 和容器存储的 读和写访问。在一些实现中, 运行引擎 416 是被设计为处理列中的数据 428 而不是以逐行 的方式处理数据 428 的列优化引擎。在更进一步的实现中, 运行引擎 416 能够以数据的编 说 明 书 CN 103597472 A 10 6/13 页 11 码形式处理数据 428, 而无需首先对数据进行解码。 0044 优化器 414 将一个或多个 SIP 过滤器添加至查询 440 的 DAG 表示, 该查询 440 的 DAG 。

44、表示将被包括在要由运行引擎 416 运行的查询计划 426 中。在各实现中, 优化器 414 根 据连接的类型, 将零个或更多个 SIP 过滤器添加至 DAG 的连接语句。对于具有如下格式的 内连接或右外连接来说 : 0045 OuterExpr1=InnerExpr1 ANDOuterExprn=InnerExprn, 0046 创 建 n+1 个 SIP 过 滤 器 为 每 个 OuterExpr(1=k=n) 以 及 合 集 (OuterExpr1,OuterExprn) 各创建一个。 0047 作为说明, 假设在两个表 “fact” 和 “dim” 之间存在连接 : 0048 “fac。

45、t.a1=dim.b1 AND fact.a2=dim.b2 AND fact.a3=dim.b3” 。 0049 那么, OuterExpr1、 OuterExpr2、 OuterExpr3 分别是 a1、 a2、 a3, 并且 InnerExpr1、 InnerExpr2、 InnerExpr3 分别是 b1、 b2、 b3。优化器 414 创建 4 个 SIP 过滤器为 a1、 a2 和 a3 每个创建一个, 并且为集合 (a1,a2,a3) 创建一个。这些 SIP 过滤器代表下列谓词 : 0050 fact.a1 IN(像图 1 中的项 106 一样的某结构 S1) 0051 fact。

46、.a2 IN(像图 1 中的项 106 一样的某结构 S2) 0052 fact.a3 IN(像图 1 中的项 106 一样的某结构 S3) 0053 (fact.a1,fact.a2,fact.a3) IN(像图 1 中的项 106 一样的某结构 S4) 0054 然后, 将这些 SIP 过滤器添加到查询的 DAG 表示的根并且在保持正确性的同时下 推。 (下面进一步描述保持正确性) 。 根据有多少内存可用于连接操作符的运行, 在一些实现 中将创建比上面描述的所有结构S1-S4更少的结构。 例如, 如果有足够的存储器使得 “dim” 表的整个哈希表装在存储器中, 那么将仅创建 S4。如果没有。

47、足够的存储器用于在存储器中 容纳 S4, 但是例如, 列 “dim.b2” 的所有值装在存储器中 (列表中或布隆过滤器中) , 那么对 连接操作符仅需创建结构 S2。注意, 对哈希连接来说, 在取得外输入的第一元组之前, 处理 全部内输入。因此, 到运行引擎 416 准备开始扫描 “fact” 表时, 其已建立结构 S1-S4 之一。 例如, 假设创建结构 S2。那么, 当对 “fact” 表的扫描开始时, 其将应用谓词 “fact.a2 IN S2” 。这将以与图 1 所示的方式 (对结构 106 中的谓词 “hash(fk)” ) 相似的方式起作用。 0055 一旦已经为查询创建 SIP 。

48、过滤器, 就将它们添加到该查询的 DAG 表示的根并在保 持正确性的同时将它们在DAG中尽可能远地下推。 作为说明, 考虑图5A所示的DAG。 该DAG 包括两个哈希连接操作符 : 502 和 504。连接操作符 504 是关于搜索条件 “fact.fkl=dim1. pk” 的并且具有代表 “fact” 表扫描的外输入 508 和代表 “dim1” 表扫描的内输入 510。连 接操作符 502 是关于搜索条件 “fact.fk2=dim2.pk” 的并且具有外输入, 该外输入是连接操 作符 504 的输出。向连接操作符 502 的内输入 506 代表表 “dim2” 的扫描。 0056 如图。

49、 5B 中所示, 优化器 414 为每个连接操作符创建 SIP 过滤器。连接操作符 502 具有 SIP 过滤器 512“fact.fk2 IN S2” , 连接操作符 504 具有 SIP 过滤器 514“fact.fk1 IN S1” 。SIP 过滤器数据结构 S1 和 S2 分别是用于表 “dim1” 和 “dim2” 的哈希表。最初, 将 SIP 过滤器 512 和 SIP 过滤器 514 添加到与它们对应的每个连接操作符。然后, 下推过 程开始该过程根据下面表 1 中描述的规则, 尝试将 SIP 过滤器 512 和 SIP 过滤器 514 下 推到每个各自的连接操作符的外输入内。 0057 说 明 书 CN 103597472 A 11 7/13 页 12 规则 1如果连接是左外连接或完全外连接, 那么停止下推过程。 规则 2如果外输入不包括评估连接的搜索条件所需的所有列, 则停止下推过程。 规则 3如果向连接的外输入将被再分割, 则停止下推过程。 0058 表 1 0059 继续说明, 过程如下进行。。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1