《旁路信息传递.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 继续说明, 过程如下进行。。