CN103597472A - 旁路信息传递 - Google Patents

旁路信息传递 Download PDF

Info

Publication number
CN103597472A
CN103597472A CN201180071504.7A CN201180071504A CN103597472A CN 103597472 A CN103597472 A CN 103597472A CN 201180071504 A CN201180071504 A CN 201180071504A CN 103597472 A CN103597472 A CN 103597472A
Authority
CN
China
Prior art keywords
value
appearance
tuple
property
attribute
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201180071504.7A
Other languages
English (en)
Inventor
丘克·比尔
拉克希米坎特·什里尼瓦斯
安德鲁·拉姆
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Development Co LP
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hewlett Packard Development Co LP filed Critical Hewlett Packard Development Co LP
Publication of CN103597472A publication Critical patent/CN103597472A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24542Plan optimisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Operations Research (AREA)
  • Computational Linguistics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

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

Description

旁路信息传递
背景技术
本公开涉及数字数据处理,具体涉及使用旁路信息传递的数据库查询优化。
结构化查询语言(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 onfk2=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.fk2IN 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”被分类。假设这些表具有下列值:
Figure BDA0000432807110000121
DIM表
Figure BDA0000432807110000122
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页)传送给客户端设备(例如,为了显示数据给与客户端设备交互的用户或者从与客户端设备交互的用户接收用户输入)。能够在服务器处从客户端设备接收在客户端设备处生成的数据(例如,用户交互的结果)。
虽然本说明书包括特定实现细节,这些不应该被解释为对任何发明或可以要求保护的范围的限制,而是被解释为对特定发明的特定实施例特有的特征的描述。本说明书中在不同实施例的背景下描述的特定特征还能够在单个实施例中共同实现。反之,在单个实施例背景下描述的各特征还能够在多个实施例中分离地实现或在任何适合的子组合中实现。而且,虽然上面可以将特征描述为在某些组合中起作用并且甚至最初如此主张权利,但是所主张权利的组合中的一个或多个特征能够在一些情况下从该组合中被删除,并且所主张权利的组合可以针对子组合或者子组合的变化。
类似地,尽管在附图中以特定顺序描述操作,但是这不应被理解为要求以所示的特定顺序或按相继顺序执行这样的操作,或者要求执行所有图示的操作来取得理想的结果。在特定情况下,多任务和并行处理可能是有利的。而且,上面描述的实施例中的各系统组件的分离不应被理解为在所有实施例中需要这样的分离,并且应理解,所描述的程序组件和系统通常能够在单个软件产品中集成在一起或封装在多个软件产品中。
因此,已描述本主题的特定实施例。其它实施例在下列权利要求的范围内。在一些情况下,能够以不同顺序执行权利要求中记载的动作并且,这些动作仍获得所期望的结果。另外,附图中描绘的过程不必然要求所示出的特定顺序或相继顺序以获取所期望的结果。在特定实现中,多任务和平行处理可能是有利的。

Claims (38)

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

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/155,232 2011-06-07
US13/155,232 US10380269B2 (en) 2011-06-07 2011-06-07 Sideways information passing
PCT/US2011/045901 WO2012170049A1 (en) 2011-06-07 2011-07-29 Sideways information passing

Publications (1)

Publication Number Publication Date
CN103597472A true CN103597472A (zh) 2014-02-19

Family

ID=44629858

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201180071504.7A Pending CN103597472A (zh) 2011-06-07 2011-07-29 旁路信息传递

Country Status (4)

Country Link
US (1) US10380269B2 (zh)
EP (1) EP2718847A1 (zh)
CN (1) CN103597472A (zh)
WO (1) WO2012170049A1 (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105354323A (zh) * 2015-11-16 2016-02-24 天津南大通用数据技术股份有限公司 使用二级过滤提高列存数据库精确查询速度的方法与装置
CN109101641A (zh) * 2018-08-20 2018-12-28 联想(北京)有限公司 表格处理方法、装置、系统和介质
CN110008238A (zh) * 2019-03-12 2019-07-12 北京东方国信科技股份有限公司 Nlj改进表连接方法及基于该改进方法的数据查询方法
CN110168517A (zh) * 2016-12-15 2019-08-23 华为技术有限公司 用于自适应分区数据以加快分布式并行数据库系统中连接查询的系统和方法
WO2021098198A1 (zh) * 2019-11-19 2021-05-27 华为技术有限公司 查询数据的方法、数据节点、分布式数据库、计算设备

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8898145B2 (en) * 2011-06-15 2014-11-25 Microsoft Corporation Query optimization techniques for business intelligence systems
US8914387B2 (en) * 2012-04-26 2014-12-16 Sap Ag Calculation models using annotations for filter optimization
US9292571B1 (en) * 2013-01-18 2016-03-22 Microstrategy Incorporated Joining database tables
US9779137B2 (en) 2013-07-09 2017-10-03 Logicblox Inc. Salient sampling for query size estimation
US9235564B2 (en) * 2013-07-19 2016-01-12 International Business Machines Corporation Offloading projection of fixed and variable length database columns
US9665633B2 (en) * 2014-02-19 2017-05-30 Snowflake Computing, Inc. Data management systems and methods
US10120902B2 (en) * 2014-02-20 2018-11-06 Citus Data Bilgi Islemleri Ticaret A.S. Apparatus and method for processing distributed relational algebra operators in a distributed database
US9418137B2 (en) 2014-08-29 2016-08-16 Sherwin Han Database without structured query language
US10248694B2 (en) * 2015-08-31 2019-04-02 International Business Machines Corporation Bloom filter utilization for join processing
US9971831B2 (en) * 2015-11-25 2018-05-15 International Business Machines Corporation Managing complex queries with predicates
CN107305581B (zh) 2016-04-25 2020-06-16 华为技术有限公司 分布式数据库系统中的表连接方法及分布式数据库系统
US10417237B2 (en) * 2016-05-24 2019-09-17 International Business Machines Corporation Sorting tables in analytical databases
US10901999B2 (en) * 2017-10-23 2021-01-26 International Business Machines Corporation Graph-based searching for data stream
US11074272B1 (en) 2017-12-21 2021-07-27 Seeq Corporation System and method for managing streaming calculations
US11301471B2 (en) * 2020-05-21 2022-04-12 International Business Machines Corporation Database join prefetcher
US20240078237A1 (en) * 2022-09-07 2024-03-07 Google Llc Database Join Operations With Early Filtering

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009009556A1 (en) * 2007-07-11 2009-01-15 Calpont Corporation Method and system for performing a scan operation on a table of a column-oriented database
US20100082648A1 (en) * 2008-09-19 2010-04-01 Oracle International Corporation Hash join using collaborative parallel filtering in intelligent storage with offloaded bloom filters
CN102004754A (zh) * 2009-09-01 2011-04-06 商业对象软件有限公司 关系数据库的导航和可视化

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IT1303603B1 (it) * 1998-12-16 2000-11-14 Giovanni Sacco Procedimento a tassonomia dinamica per il reperimento di informazionisu grandi banche dati eterogenee.
US8671091B2 (en) * 2006-08-02 2014-03-11 Hewlett-Packard Development Company, L.P. Optimizing snowflake schema queries
US8126905B2 (en) * 2008-09-23 2012-02-28 Teradata Us, Inc. System, method, and computer-readable medium for optimizing the performance of outer joins
US20100088309A1 (en) * 2008-10-05 2010-04-08 Microsoft Corporation Efficient large-scale joining for querying of column based data encoded structures
US8478775B2 (en) 2008-10-05 2013-07-02 Microsoft Corporation Efficient large-scale filtering and/or sorting for querying of column based data encoded structures
US8234292B2 (en) * 2008-12-11 2012-07-31 Teradata Us, Inc. System, method, and computer-readable medium for optimizing processing of queries featuring maximum or minimum equality conditions in a parallel processing system
US8661019B2 (en) * 2010-01-28 2014-02-25 International Business Machines Corporation Join algorithms over full text indexes

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009009556A1 (en) * 2007-07-11 2009-01-15 Calpont Corporation Method and system for performing a scan operation on a table of a column-oriented database
US20100082648A1 (en) * 2008-09-19 2010-04-01 Oracle International Corporation Hash join using collaborative parallel filtering in intelligent storage with offloaded bloom filters
CN102004754A (zh) * 2009-09-01 2011-04-06 商业对象软件有限公司 关系数据库的导航和可视化

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105354323A (zh) * 2015-11-16 2016-02-24 天津南大通用数据技术股份有限公司 使用二级过滤提高列存数据库精确查询速度的方法与装置
CN110168517A (zh) * 2016-12-15 2019-08-23 华为技术有限公司 用于自适应分区数据以加快分布式并行数据库系统中连接查询的系统和方法
CN109101641A (zh) * 2018-08-20 2018-12-28 联想(北京)有限公司 表格处理方法、装置、系统和介质
CN110008238A (zh) * 2019-03-12 2019-07-12 北京东方国信科技股份有限公司 Nlj改进表连接方法及基于该改进方法的数据查询方法
CN110008238B (zh) * 2019-03-12 2021-04-27 北京东方国信科技股份有限公司 Nlj改进表连接方法及基于该改进方法的数据查询方法
WO2021098198A1 (zh) * 2019-11-19 2021-05-27 华为技术有限公司 查询数据的方法、数据节点、分布式数据库、计算设备

Also Published As

Publication number Publication date
WO2012170049A1 (en) 2012-12-13
EP2718847A1 (en) 2014-04-16
US20120317094A1 (en) 2012-12-13
US10380269B2 (en) 2019-08-13

Similar Documents

Publication Publication Date Title
CN103597472A (zh) 旁路信息传递
JP7273045B2 (ja) Sqlクエリプランを最適化するための次元コンテキスト伝搬技術
US9990362B2 (en) Profiling data with location information
Khurana et al. Storing and analyzing historical graph data at scale
US20090228434A1 (en) Addition and processing of continuous sql queries in a streaming relational database management system
KR101785959B1 (ko) 레코드들의 컬럼형 스토리지 표현
CN104050202A (zh) 用于搜索数据库的方法和装置
Khayyat et al. Fast and scalable inequality joins
US10877973B2 (en) Method for efficient one-to-one join
US10726005B2 (en) Virtual split dictionary for search optimization
US20150356141A1 (en) Extending relational algebra for data management
Löser et al. Situational business intelligence
US20210133190A1 (en) Methods and systems for storing and querying database entries with neuromorphic computers
CN104919445A (zh) 变换生成系统
EP3293645B1 (en) Iterative evaluation of data through simd processor registers
US20160203409A1 (en) Framework for calculating grouped optimization algorithms within a distributed data store
Nandi Mimir: Bringing ctables into practice
Marx et al. Large-scale RDF dataset slicing
Pal SQL on Big Data: Technology, Architecture, and Innovation
Urbani On web-scale reasoning
Kalavri Performance optimization techniques and tools for distributed graph processing
Greven et al. The hierarchical Cannings process in random environment
KR102671887B1 (ko) 부품 조달을 위한 글로벌 밸류 체인에 대한 데이터베이스 구축 방법 및 이를 구현하기 위한 시스템
Ramsingh PySpark toward Data Analytics
Aichinger Structure-Guided Query Optimization in Column-Stores

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
WD01 Invention patent application deemed withdrawn after publication
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20140219