买专利卖专利找龙图腾,真高效! 查专利查商标用IPTOP,全免费!专利年费监控用IP管家,真方便!
申请/专利权人:甲骨文国际公司
摘要:实施例包括分布式联接处理技术,其减少通过网络交换的数据。实施例首先基于表示要联接的行的联接元组使用分区的并行联接来评估联接,以产生表示用于联接结果的行之间的匹配的联接结果元组。实施例使用来自联接结果元组的记录标识符通过网络从系统的节点当中的表的分区中提取投影列。为了进一步节省网络带宽,实施例基于来自联接操作中涉及的关系的投影列的相应大小来执行附加的记录标识符混洗阶段。具体而言,对结果元组进行混洗,使得避免从与较大有效载荷的联接关系发送投影列,并且系统仅需要通过网络交换来自与较小有效载荷的联接关系的投影列。
主权项:1.一种计算机实现的方法,用于数据库管理系统对跨多个节点被水平分区的第一数据库对象和第二数据库对象执行联接操作,以产生联接结果物化,包括:将来自所述多个节点的相应本地联接节点指派给第一数据库对象和第二数据库对象中的多个行中的每个相应行;通过网络向每个本地联接节点传送相应的联接元组集合,其中所述相应的联接元组集合中的每个联接元组:表示所述多个行的行集合中本地联接节点被指派给的相应行;以及包括来自所表示的行的联接键和用于所表示的行的行标识符;所述多个节点中的每个本地联接节点对所述相应的联接元组集合执行本地联接操作,以产生相应的联接结果元组集合;其中多个联接结果元组包括来自所述多个节点中的本地联接节点的所述相应的联接结果元组集合;其中所述多个联接结果元组中的每个联接结果元组包括识别由本地联接操作匹配的相应行的来自第一数据库对象的相应第一行标识符和来自第二数据库对象的相应第二行标识符;所述多个节点中的每个节点接收从所述多个节点中的一个或多个其它节点发送的相应的联接结果元组的物化集合;以及所述多个节点中的每个节点至少部分地基于由所述节点接收的所述相应的联接结果元组的物化集合来物化联接结果物化的相应部分;其中该方法由一个或多个计算设备执行。
全文数据:回旋镖联接:网络高效、后期物化、分布式联接技术技术领域本发明涉及分布式联接技术,更具体而言,涉及用于无共享系统的基于后期物化late-materialization的分布式联接技术,其减少了执行分布式联接操作所需的网络带宽。背景技术分布式联接可以用于联接来自在实现多节点数据库管理系统的多个节点之间水平分布的表的数据。传统的分布式联接技术通过网络交换联接操作的物化结果所需的表的所有列,因此导致联接查询的执行时间由网络时间支配。这种技术被广泛使用,通常称为“早期物化”方法,其中联接的所有所需列在通过网络被发送之前被拼接在一起以组装成物化的联接结果。在用于涉及大量数据的联接的早期物化方法期间交换数据所需的大量网络带宽导致处理瓶颈。照此,常规采用诸如布隆过滤器之类的数据简化技术来减少交换的数据量。但是,这种数据简化技术一般影响在早期物化方法期间被交换的行数,并且仍然需要通过网络交换大量列。此外,早期并行数据库系统奠定了分布式并行联接处理的基础。例如,在Gamma项目中,基于行的元组使用基于散列的拆分表被路由到处理节点。完全相同的拆分表被应用于两个输入关系,因此关系对于独立的并行联接处理是逐行分布和分区的。但是,考虑到在诸如Gamma之类的早期系统中的节点之间混洗shuffle的大量数据有时甚至包括不需要被包括在联接物化中的数据库数据,这些系统遭受上述网络数据交换瓶颈。而且,由Bernstein等人在早期分布式数据库中引入的SDD-1算法旨在减少分布式联接处理的网络使用率。但是,该算法基于不同数据库对象作为整体驻留在不同节点上的想法,在许多现代分布式数据库管理系统中不是这种情况,现代分布式数据库管理系统通常在系统的多个节点上水平地对数据库对象进行分区。此外,该算法需要分布式执行而不是分布式联接操作的并行执行,并且也不考虑数据库数据的面向列的存储。关于正由单个机器执行的后期物化,Manegold等人提出使用高速缓存意识的基数划分投影用于低选择性联接,以消除在单个机器中的物化阶段期间产生的随机存取存储器成本。但是,这个解决方案不适用于现代分布式查询处理系统,因为对于在无共享系统的节点之间被水平分区的数据,元组的各种属性不能通过由该技术所需的记录标识符而一致地直接访问。而且,该技术不解决分布式系统中的网络带宽问题,因为由该技术使用的上游运算符需要从联接结果访问相关属性,因此,为了将这种技术的原理应用于分布式系统,需要将那些属性运送到分布式系统内的对应处理节点。而且通过在单个机器上处理联接,Abadi等人在单个机器上分析面向列的数据库系统中的物化策略的权衡,并得出结论,对于具有高选择性谓词的运算符,使用后期物化策略几乎总是更好,并且对于联接,几乎在所有情况下都应当早期物化正确的输入表。由于Abadi分析了用于单个机器的物化技术,因此不考虑网络瓶颈或在分布式系统上执行物化的问题。另外,跟踪联接方法着重于通过为每个不同的联接键生成最佳传递调度来减少跨网络的冗余数据传递。但是,这种方法改变了主分区的联接-处理算法的骨架,并且需要CPU中针对每个不同的联接键的密集计算。但是,它并没有减少个体元组的占用空间。总的来说,这种方法用附加的CPU工作换取减少的网络数据传递的可能性。由于在涉及大量数据的分布式联接操作的早期物化方法期间交换数据所需的大量网络带宽导致处理瓶颈,因此可靠地减少在分布式联接操作期间在网络上交换的流量而不造成CPU使用率增加将是有益的。本节中描述的方法是可以追求的方法,但不一定是以前已构想或追求的方法。因此,除非另有指示,否则不应当仅仅由于它们包括在本节中而假设本节中描述的任何方法是现有技术。附图说明在附图中:图1是描绘示例数据库管理系统的框图。图2描绘了用于在跨多个节点被水平分区的第一数据库对象和第二数据库对象上执行后期物化联接操作以生成联接结果物化的流程图。图3A-图3C描绘了存储在数据库管理系统的节点内的水平分区的数据库对象,并且还描绘了与示例后期物化分布式联接操作相关的元组的交换和处理。图4是可以在其上实现实施例的计算机系统的框图。图5是可以用于控制计算机系统的操作的基本软件系统的框图。具体实施方式在下面的描述中,为了解释的目的,阐述了许多具体细节,以便提供对本发明的透彻理解。但是,显而易见的是,可以在没有这些具体细节的情况下实践本发明。在其它情况下,以框图形式示出众所周知的结构和设备,以便避免不必要的模糊本发明。总体概述实施例包括分布式联接处理技术,在本文称为“回旋镖联接”“boomerangjoin”,其通过利用后期物化技术来减少在网络上交换的数据量。本文描述的回旋镖联接处理技术提供了重要的性能增益,尤其是对于在面向列的数据上执行大的分布式联接。回旋镖联接的实施例减少了通过网络交换的数据,这通常是在大型无共享数据库系统中处理分布式联接操作的瓶颈。实施例首先基于表示要联接的行的联接元组使用分区的并行联接技术来评估联接,即,包括对。例如,无共享数据库管理系统DBMS使用散列分区技术识别联接元组的分区。接收联接元组的每个节点对接收到的元组执行本地联接,从而产生相应的联接结果元组列表包括,用于识别来自联接的表的匹配记录。因此,准备联接结果物化只需要在网络上混洗非常小的联接元组,而不需要混洗来自正在被联接的表的有效载荷列,这是基于需要通过网络交换相对少量数据的对现有技术的重大改进。由于联接结果元组不包括产生联接结果生成本文称为物化所需的所有信息,因此实施例使用来自联接结果元组的记录标识符通过网络从系统的节点当中的表的适当分区中提取投影列。因此,为了进一步减少在准备回旋镖联接的物化阶段中必须混洗的数据量,实施例执行附加的记录标识符混洗阶段,在本文称为“回旋镖”阶段。根据一个或多个实施例,在回旋镖阶段期间,首先将联接结果元组混洗到节点,该节点存储来自为联接结果物化贡献较大量的投影列的关系的联接结果元组的数据。在这种混洗之后,接收到联接结果元组的节点从被联接的两个关系中贡献较少量数据的关系中提取联接结果元组的投影列。作为混洗联接结果元组的这种回旋镖阶段的结果,取决于联接操作的要求,当与早期物化技术相比时,交换的数据总量可以显著减少。根据一个或多个另外的实施例,不是将联接结果元组发送到具有较大有效载荷的关系的源,而是在回旋镖阶段期间,首先将联接结果元组发送到具有较小有效载荷的关系的源。在接收侧,每个节点从本地存储器提取较小关系的有效载荷由接收到的联接结果元组指示,并向相应联接结果元组中指示的另一个关系的源节点发送拼接的元组包括所提取的有效载荷和具有较大有效载荷的关系中的记录的标识符。根据这样的实施例,回旋镖阶段仅需要在网络上混洗较小关系的有效载荷。因此,回旋镖联接的一个好处是,在回旋镖阶段期间,结果元组被混洗,使得避免从具有较大有效载荷的关系传送投影列,并且系统仅需要通过网络交换来自具有较小有效载荷的关系的投影列,以便准备联接结果的物化。存储在水平分区的数据库中的联接表很多时候,在无共享数据库系统中,存储数据库数据的非常大的表跨系统的节点被水平分区。例如,图1描绘了包括三个节点110、130和150的无共享DBMS100。图3A还描绘了跨节点110、130和150被水平分区的表R和S。DBMS100如图1和图3A-图3C中所示被呈现为示例,并且实现本文描述的实施例的系统可以包括任何数量的节点,其中数据以任何数量的方式在其上分区。根据实施例,如本文所述,通过与节点110、130和150相关联的资源来存储、维护和操纵图3A-图3C中的节点110、130和150内描绘的数据。例如,图3A中被描绘为存储在节点110内的数据库数据,由在服务器设备112上运行的数据库服务器实例114在存储装置116中的数据库数据118内维护。另外,图3A-图3C中的节点110内描绘的数据的处理,由数据库服务器实例114执行,并且与这种处理相关联的数据根据需要存储在服务器设备112中的易失性存储器内和或存储装置116内。根据实施例,本文描述为由诸如节点110之类的节点执行的动作,由数据库服务器实例或与该节点相关联的其它资源诸如由节点110的数据库服务器实例114执行。如图3A-图3C所示,每个节点110、130和150在存储装置中维护来自表R的数据的分区即:节点110上的行312和314;节点130上的行332和334;以及节点150上的行352和354。另外,每个节点110、130和150在存储装置中维护来自表S的数据的分区即:节点110上的行316和318;节点130上的行336和338;以及节点150上的行356和358。因此,表R和表S的数据跨节点110、130和150被水平分区。根据实施例,包括节点110、130和150的DBMS100接收对表R和表S执行联接的命令。例如,DBMS100从数据库客户端接收对表R和表S执行联接的以下查询1:查询1:SELECTR.R_PAYLOAD,S.S_PAYLOADFROMR,SWHERER.R_KEY=S.S_KEY因而,DBMS100对所指示的数据库对象即,表R和表S执行分布式联接操作,所述数据库对象跨多个节点即,节点110、130和150被水平分区。查询1描绘了仅涉及要联接的两个数据库对象中的每一个的一个联接键的联接操作。但是,根据实施例,联接操作可以涉及跨任意数量的表的任何数量的联接键。当DBMS100接收到需要分布式联接操作的查询诸如查询1时,DBMS100的查询优化器至少部分地基于数据库统计和查询来确定是否使用根据实施例的后期物化联接用于联接操作。实施例用于响应于查询优化器确定这样做而执行这种分布式联接操作,如下面进一步详细描述的。图2描绘了根据实施例的用于对跨多个节点被水平分区的第一数据库对象和第二数据库对象执行回旋镖后期物化联接操作以产生联接结果物化的流程图200。结合流程图200,由多个节点执行但针对单个节点描述的功能由所有适用的节点并行执行。联接操作的散列分区在流程图200的步骤202处,将来自多个节点的相应的本地联接节点指派给第一数据库对象和第二数据库对象中的多个行中的每个相应行。例如,包括节点110、130和150的无共享DBMS100将节点110、130或150中的相应一个指派为要联接的数据库对象例如,表R和表S的每个相应行的本地联接节点。根据实施例,系统使用任何分区技术将本地联接节点指派给来自要联接的关系的记录。例如,DBMS100利用散列分区操作,在该操作期间,系统100中存储表R或表S的至少一个分区的每个节点在由节点维护的表R和或表S的行的联接键上执行特定散列函数例如,[join-key]MOD3。在映射数据内将散列函数的任何给定结果映射到DBMS100中的相应节点。例如,上面的示例散列函数[join-key]MOD3具有三种可能的结果,即,“0”、“1”和“2”。在映射数据中,“0”是映射到节点110的联接节点标识符,“1”是映射到节点130的联接节点标识符,而“2”是映射到节点150的联接节点标识符。照此,对于每一行,散列运算的结果指示作为该行的本地联接节点的系统的节点。根据实施例,可以使用任何散列函数来在系统的节点之间对记录进行分区用于联接操作。为了说明基于散列的分区的操作,节点110识别由节点110维护的表R和表S的每一行的联接节点。例如,基于来自行312的联接键“9”,节点110确定行312的联接节点标识符是9MOD3=0。由于节点110被映射到联接节点标识符“0”,因此节点110将其自身指派为行312的联接节点。节点110、130和150以类似的方式识别表R和表S的每一行的联接节点。在流程图200的步骤204处,通过网络将相应的联接元组集合传送到每个本地联接节点,其中相应的联接元组集合的每个联接元组表示多个行中的行集合中本地联接节点被指派给的相应行,并且其中每个联接元组包括来自所表示的行的联接键和所表示的行的行标识符。例如,节点110、130和150中的每个节点针对由如下这样的节点维护的每一行生成联接元组,该节点被指派除发起节点即,维护该行的节点之外的联接节点。每个联接元组包括来自所表示的行的联接键和唯一地识别所表示的行的行标识符。例如,节点110生成包括来自行314的R_KEY和R-RID的联接元组314A随后如下所述被传送到节点150。因此,联接元组314A唯一地表示行314。根据实施例,节点110不针对与由节点110维护的行的表示不同的行312生成联接元组,因为该行的联接节点是发起节点并且联接元组不需要被混洗到非发起联接节点。节点110、130和150中的每个节点向DBMS100的其它节点传送表示在步骤202中的分区操作期间被指派给那些其它节点的行的联接元组。为了说明,图3A描绘了已经接收到节点被指派给的联接元组的每个节点其中一些所描绘的联接元组诸如联接元组312A表示由节点实际维护的数据而不是与所维护的行不同的元组。更具体而言,节点110维护或已经接收到用于联接元组312A、354A、338A和356A其分别表示行312、354、338和356的数据,因为那些元组的联接键R_KEY和S_KEY散列到联接节点标识符“0”。节点130维持或已经接收到用于联接元组334A、352A、316A和336A其分别表示行334、352、316和336的数据,因为那些元组的联接键散列到联接节点标识符“1”。另外,节点150维护或已经接收用于联接元组314A、332A、318A和358A其分别表示行314、332、318和358的数据,因为那些元组的联接键散列到联接节点标识符“2”。基于联接元组的本地联接操作在步骤206处,多个节点中的每个本地联接节点对相应的联接元组集合执行本地联接操作,以产生相应的联接结果元组集合;其中每个联接结果元组包括来自第一数据库对象的第一行标识符和来自第二数据库对象的第二行标识符,其识别由本地联接操作匹配的相应行。例如,节点110通过在被指派给节点的那些元组当中基于R_KEY=S_KEY执行联接,对被指派给节点110的联接元组集合执行本地联接操作。联接是“本地”联接,因为节点不考虑指被派给任何其它节点的元组以执行联接,因为具有可能与被指派给给定节点的任何元组匹配的联接键的所有元组也被指派给那个节点。每个节点处的本地联接导致相应的联接结果元组集合,其反映在本地联接操作期间识别出的联接匹配。具体而言,由节点生成的每个联接结果元组表示包括匹配的联接键即,相同的联接键值的一对行一个来自表R,一个来自表S。照此,每个联接结果元组包括来自R表的行的标识符和来自S表的具有匹配的联接键的行的标识符。例如,如图3A所描绘的,节点110上的本地联接操作返回联接结果元组320,指示具有行标识符“5”的来自表R的行与具有行标识符“3”的来自表S的行匹配。另外,节点130上的本地联接操作返回联接结果元组340和342,并且节点150上的本地联接操作返回联接结果元组360。实施例使得能够使用任何种类的联接算法,包括高速缓存和硬件意识算法。例如,一个或多个实施例采用硬件意识的分布式基数散列联接来实现流程图200的步骤202-206。混洗结果元组以执行联接物化在步骤208处,多个节点中的每个节点接收从多个节点中的一个或多个其它节点发送的相应的联接结果元组的物化集合。例如,节点110、130和150中的每个节点在联接结果回旋镖阶段期间接收联接结果元组集合。基于对物化的较大贡献者在回旋镖阶段期间混洗元组根据一个或多个实施例,在回旋镖阶段期间,每个节点从对联接结果物化贡献最大数据量的联接的关系接收联接结果元组集合,其涉及由节点维护的行。在本文中,对联接结果物化贡献最大数据量的联接的关系在本文中被称为具有较大最大有效载荷的关系或表。例如,至少部分地基于确定针对第一数据库对象的行的联接结果物化所需的第一数据量大于针对第二数据库对象的行的联接结果物化所需的第二数据量,将第一数据库对象识别为目标数据库对象。为了说明,在查询1的编译时,DBMS100至少部分地基于为查询1生成的联接规范和数据库统计包括由联接规范所需的列的数量大小来识别具有最大有效载荷的目标数据库对象。根据一个或多个实施例,在目标数据库对象的确定中,DBMS还可以考虑来自给定表的数据与来自联接操作中的另一个表的数据匹配的次数。例如,基于用于查询1中的联接操作的联接规范,DBMS100确定表R比表S对联接物化贡献更多数据。换句话说,DBMS100确定表R具有最大有效载荷。此外,根据实施例,在回旋镖阶段期间,多个节点中的每个本地联接节点将相应的联接结果元组集合的至少一部分中的每个联接结果元组发送到多个节点中发起了由所述每个联接结果元组中的第一行标识符识别出的目标数据库对象中的行的节点。例如,在如图3B所描绘的回旋镖阶段期间,节点110将联接结果元组320发送到从表R表R是具有最大有效载荷的关系发起在联接结果元组中识别出的行的节点。为了说明,如图3B所示,节点110确定节点150存储与来自联接结果元组320的R-RID“5”对应的行354。照此,在回旋镖阶段期间,节点110将联接结果元组320发送到节点150如节点150处的联接结果元组320A所描绘的。根据实施例,节点基于将行标识符映射到发起即,维护所识别出的行的数据的节点的映射数据,来识别哪个节点发起由给定行标识符识别出的特定行。继续前面的示例,由系统维护的映射数据将R-RID“4”和“5”映射到作为那些行的发起节点的节点150。节点110基于那个映射数据确定节点150存储与R-RID“5”对应的行。根据另外的实施例,节点基于识别在行标识符本身内被编码的发起节点的信息,来识别哪个节点发起由给定行标识符识别出的特定行。例如,特定的R-RID可以是“5-2”,指示行标识符是“5”,而发起节点标识符是“2”即,节点150。为清楚起见,这个实施例未在图3B中绘出。基于对物化的较大贡献者在回旋镖阶段之后的物化阶段在流程图200的步骤210处,多个节点中的每个节点至少部分地基于由所述节点接收的相应的联接结果元组的物化集合,来物化联接结果物化的相应部分。根据将回旋镖阶段基于对联接结果物化的较大贡献者即,具有最大有效载荷的关系的实施例,节点通过以下来物化与由节点接收的联接结果元组的物化集合对应的联接结果物化的部分:a通过网络检索具有较小有效载荷的关系的投影列以及b从存储器中检索具有较大有效载荷的关系的投影列。根据实施例,在特定节点处接收的联接结果元组的物化集合包括由DBMS100中的任何节点生成的那些联接结果元组,联接结果元组包括在该特定节点处发起的具有最大有效载荷的关系的标识符。例如,节点150接收与回旋镖阶段相关的联接结果元组即,联接结果元组320A和342A的物化集合,其中物化集合中的每个联接结果元组涉及被存储在节点150处的来自具有最大有效载荷的关系表R的行。在物化阶段期间,节点150根据需要通过网络检索具有较小有效载荷的关系的投影列。具体而言,在物化阶段期间,多个节点中的特定节点部分地通过从特定节点的存储器中检索第一数据库对象的第一行的来自第一数据库对象的第一投影列,来至少部分地基于由该特定节点接收的特定联接结果元组的物化集合中的特定联接结果元组来物化联接结果物化的特定行,该第一行由特定联接结果元组中包括的特定第一行标识符来识别。例如,为了物化与联接结果元组320A对应的联接结果物化的一行,节点150从存储装置156图1中检索与联接结果元组320A的R-RID“5”对应的行354的有效载荷列R_PAYLOAD“P5”。另外,特定节点通过从多个节点中的第二节点请求第二数据库对象的第二行的来自第二数据库对象的第二投影列,来继续针对联接结果物化的特定行的物化阶段,该第二行由特定联接结果元组中包括的特定第二行标识符来识别。例如,节点150确定节点130是与来自联接结果元组320A的S-RID“3”对应的行338的发起者即,根据上述用于确定行发起者节点的技术。照此,节点150从节点130请求来自表S的行338的表S的投影列即,S_PAYLOAD“P9”,例如,通过从联接结果元组320A向节点130发送S-RID。当然,在特定联接结果元组中涉及的两行都存储在同一节点的情况下,不需要从第二节点检索数据。特定节点通过创建联接结果物化的特定行包括第一行的第一投影列和第二行的第二投影列来完成联接结果物化的特定行的物化阶段。例如,节点150从行338接收表S的投影列,并且用来自行354的R_PAYLOAD“P5”和来自行338的S_PAYLOAD“P9”来物化与联接结果元组320A对应的联接结果物化的特定行。基于对物化的较小贡献者在回旋镖阶段期间混洗元组根据上述实施例,联接结果物化需要将a联接结果元组的物化集合发送到发起具有最大有效载荷的关系的行数据的节点以及b具有较小有效载荷的关系中的行的行标识符发送到发起具有较小有效载荷的关系的行数据的节点。但是,通过改变在回旋镖阶段中联接结果元组被向其发送的初始节点,可以进一步减少通过网络正发送的数据量。因此,根据一个或多个另外的实施例,不是将联接结果元组发送到来自具有较大有效载荷的关系的行的发起节点,而是在回旋镖阶段的步骤A期间将联接结果元组发送到具有较小有效载荷的关系的发起者。在回旋镖阶段的步骤B期间,从回旋镖阶段的步骤A接收到联接结果元组的节点创建拼接的联接结果元组,拼接的联接结果元组包括来自具有较小有效载荷的关系的投影列,然后向来自具有最大有效载荷的关系的拼接的元组内识别出的行的发起者发送拼接的联接结果元组。因此,根据这样的实施例,至少部分地基于确定针对第一数据库对象的行的联接结果物化所需的第一数据量小于针对第二数据库对象的行的联接结果物化所需的第二数据量,DBMS100将第一数据库对象即,表R识别为目标数据库对象。可以以上面结合确定具有最大有效载荷的关系所阐述的方式进行这种确定。在回旋镖阶段的步骤A期间,多个节点中的每个本地联接节点将相应的联接结果元组集合的至少一部分中的每个联接结果元组发送到多个节点中发起了由所述每个联接结果元组中的第一行标识符识别出的目标数据库对象即,较小的贡献者中的行的节点。例如,节点110将从本地联接操作生成的联接结果元组320发送到从表R在这个示例中,表R被确定为具有较小有效载荷的关系发起联接结果元组的数据的部分的节点。为了说明,如图3C所示,节点110确定根据上述一种或多种技术节点150发起与来自联接结果元组320的R-RID“5”对应的行354。照此,在回旋镖阶段的步骤A期间,节点110将联接结果元组320发送到节点150如图3C中的节点150处的联接结果元组320A所示。在回旋镖阶段的步骤A中接收联接结果元组的节点在回旋镖阶段的步骤B期间,使用接收到的联接结果元组和具有较小有效载荷的表的数据创建拼接的元组,然后向发起较大贡献者的数据的节点发送拼接的元组。例如,节点150从节点110接收联接结果元组320。照此,节点150从由来自接收到的联接结果元组中的特定第一行标识符识别出的第一行中检索第一投影列。例如,节点150从存储装置156图1中检索与来自接收到的联接结果元组320的R-RID“5”对应的行354的R_PAYLOAD列即,R_PAYLOAD“P5”。然后,节点140创建拼接的联接结果元组,拼接的联接结果元组包括a第一投影列和b来自特定联接结果元组的特定第二行标识符。例如,节点150创建拼接的联接结果元组320A,拼接的联接结果元组320A包括来自行354的R_PAYLOAD数据和来自联接结果元组320的用于表S的行标识符即,S-RID“3”。在图3C所描绘的示例中,拼接的联接结果元组320A还包括来自联接结果元组320的R-RID“5”。在回旋镖阶段的步骤B期间,节点150将拼接的联接结果元组发送到多个节点中存储与特定第二行标识符匹配的记录的另一个节点。例如,节点150将拼接的联接结果元组320A发送到节点130,节点130是由来自联接结果元组320A的S-RID“3”识别出的行338的数据的发起者。节点150根据上述技术确定由特定S-RID识别出的行的发起者。因此,在回旋镖阶段的步骤B期间,节点110、130和150中的每个节点接收包括拼接的联接结果元组的联接结果元组的物化集合,该拼接的联接结果元组涉及在相应节点处维护的来自具有最大有效载荷的关系的行。如图3C所描绘的,节点150的联接结果元组的物化集合是空的。另外,节点130的联接结果元组的物化集合包括拼接的联接结果元组320B和342B,并且节点110的联接结果元组的物化集合包括拼接的联接结果元组360B和340B。基于对物化的较小贡献者在回旋镖阶段之后的物化阶段如上所述,在流程图200的步骤210,在物化阶段期间,多个节点中的每个节点至少部分地基于由所述节点接收的相应的联接结果元组的物化集合,来物化联接结果物化的相应部分。根据上述实施例,多个节点中的另一个节点通过首先从另一个节点的存储器中检索第二数据库对象的第二行的来自第二数据库对象的第二投影列,来至少部分地基于由特定节点接收的特定联接结果元组的物化集合中的拼接的联接结果元组来物化联接结果物化的特定行,该第二行由特定的第二行标识符标识。例如,如图3C所描绘的,节点130接收拼接的联接结果元组320B。因而,在物化阶段期间,节点130从存储装置136图1中检索与被包括在拼接的联接结果元组320B中的S-SID“3”对应的来自行338的表S的投影列即,S_PAYLOAD“P9”。为了完成针对联接结果元组的物化阶段,另一个节点然后创建联接结果物化的特定行,包括第一行的第一投影列和第二行的第二投影列。例如,节点130创建与拼接的联接结果元组320B对应的联接结果物化的特定行,包括来自拼接的联接结果元组320B的表R的投影列即,R_PAYLOAD“P5”以及拼接的联接结果元组320B的针对表S检索到的投影列S即,S_PAYLOAD“P9”。根据基于对联接物化的较小贡献者的此类实施例,联接结果的物化仅需要通过网络混洗较小关系的有效载荷,不需要通过网络对标识符的附加混洗,如上述基于对联接物化的较大贡献者的实施例需要的那样。数据库管理系统本发明的实施例用在数据库管理系统的上下文中。因此,DBMS的描述是有用的。DBMS管理数据库。DBMS可以包括一个或多个数据库服务器,如下面进一步详细描述的。数据库包括存储在永久存储器机制诸如硬盘集合上的数据库数据和数据库字典。数据库数据可以存储在一个或多个数据容器中。每个容器包含记录。每个记录内的数据被组织成一个或多个字段。在本文提到的关系DBMS中,数据容器被称为关系或表,记录被称为行,字段被称为列。根据面向对象的数据库中的其它实施例,数据容器被称为对象类,记录被称为对象,字段被称为属性。其它数据库架构可以使用其它术语。用户可以通过向数据库服务器实例提交使数据库服务器实例对存储在数据库中的数据执行操作的命令来与DBMS的数据库服务器的实例交互。例如,客户端设备处的用户经由数据库客户端向数据库服务器实例114提交数据库命令,该数据库命令需要分布式联接诸如查询1,数据库客户端与数据库服务器实例114维持连接。用户可以是在客户端设备上运行的一个或多个应用,其使得数据库客户端与数据库服务器实例114交互。多方可以通过给定的应用来访问数据库资源。多方和或用户在本文也可以统称为用户。无共享数据库在无共享系统诸如DBMS100中,所有处理器、存储器和盘被分组为节点。如同在共享盘系统中,在无共享系统中,每个节点本身可以构成共享所有系统或共享盘系统。无共享数据库假设处理仅在数据被包含在与该处理属于同一节点的盘上时才能访问数据。因此,如果特定节点想要对由另一个节点拥有的数据项执行操作,那么该特定节点必须向另一个节点发送请求以供另一个节点执行操作。因此,代替在节点之间运送数据,据说无共享数据库执行“功能运送”。因为任何给定的数据片段仅由一个节点拥有,所以只有该一个节点数据的“所有者”或“发起者”将在其高速缓存中具有数据的副本。无共享数据库可以在共享盘和无共享多处理系统上运行。为了在共享盘机器上运行无共享数据库,可以提供一种机制来对数据库进行分区,并将每个分区的所有权指派给特定节点。示例网络布置根据一个或多个实施例,节点110、130和150中的一个或多个节点实现无共享数据库管理系统100。根据一个或多个实施例,节点110、130和150是由多节点DBMS100管理的节点集群的至少一部分,多节点DBMS100例如大规模并行MPP无共享数据库环境。根据一个或多个实施例,任何数量的节点可以是由诸如DBMS100之类的多节点DBMS管理的节点集群的一部分。具体而言,可以分配来自多节点数据库系统中的多个节点的资源以运行特定数据库服务器的软件。服务器设备112、132和152由能够运行数据库服务器实例以管理服务器设备的存储装置中的数据并且能够与集群中的其它节点通信的任何类型的计算设备来实现。在图1中,服务器设备112配置有数据库服务器实例114,服务器设备132配置有数据库服务器实例134,并且服务器设备152配置有数据库服务器实例154。数据库服务器实例或“实例”是包括软件和来自节点的资源分配的组合的服务器。具体而言,诸如数据库服务器之类的服务器是集成的软件组件和计算资源诸如存储器、节点即,计算设备和或节点上用于在处理器上执行集成的软件组件的处理的分配的组合,软件和计算资源的组合专用于代表一个或多个客户端执行特定功能。数据库服务器实例114维护对存储在存储装置116中的数据库数据118的访问并进行管理,数据库服务器实例134维护对存储在存储装置136中的数据库数据138的访问并进行管理,并且数据库服务器实例154维护对存储在存储装置156中的数据库数据的访问并进行管理。根据一个或多个实施例,对给定数据库的访问包括访问a存储数据库的数据的盘驱动器的集合,以及b存储在其上的数据块。根据一个或多个实施例,数据库数据118、138和158至少部分地作为面向列的数据被维护。实施例还可以应用于面向行的数据,其中来自正被联接的数据库表作为面向行的数据被存储的每一行可以用于或被分解成面向列的格式。根据一个或多个实施例,如本文所述,归因于在节点110、130和150上运行的处理的一个或多个功能可以被作为DBMS100的一部分的任何其它逻辑实体执行。取决于特定实现,服务器设备112、132和152可以配置有其它机制、处理和功能。而且,根据一个或多个实施例,示例DBMS100可以包括其它设备,包括客户端设备、服务器设备、存储设备、网络和显示设备。在实施例中,结合节点110、130和150中的每个节点描述的每个处理和或功能被自动执行,并且可以使用一个或多个计算机程序、其它软件元素和或数字逻辑在通用计算机或专用计算机中的任何一个中来实现,同时执行涉及与计算机的存储器的物理状态交互和变换的数据检索、变换和存储操作。用于大到大large-to-large表联接的网络节省的分析估计根据实施例,需要查询优化器来分析将在无共享系统的节点之间交换的用于大表到大表联接的数据量,大表到大表联接具有用于两个表的不同高数量的值和每个输出表元组一个匹配的平均值。本文在图3A-图3C中描绘的示例的上下文中描述这种分析的示例。具体而言,查询优化器可以利用如下所述的等式来估计使用各种技术执行联接操作的相对成本,各种技术包括早期物化技术和根据实施例的回旋镖后期物化联接技术。由组成的联接元组的大小在本文表示为||t||。对于R表和S表,联接后投影的属性的大小分别由||ΠR||和||ΠS||表示。节点数量中的集群的大小由N表示。首先,给出等式以预测在早期物化联接期间交换的数据量。早期物化联接通过网络在进行分区期间执行所有投影属性。在对所有节点的联接密钥的均匀随机分布中,节点110、130和150中的每个节点需要通过网络发送|R|+|S|N×N-1N个元组。因此,通过网络由所有节点交换的总数据TE由等式1给出。TE=N–1N·|R|·||t||+||ΠR||+|S|·||t||+||ΠS||1第二,给出等式以预测用于后期物化联接的朴素物化策略交换的数据量,其中假定节点110、130和150中的每个节点提取内部和外部关系两者的相关有效载荷。除了用于这种朴素物化策略的联接阶段中的元组交换之外,关系R和关系S两者的RID和有效载荷将通过网络针对|S|个结果元组中的每个结果元组进行混洗。交换的总数据量TN由等式2给出。TN=N–1N·|R|·2·||t||+||ΠR||+|S|·2·||t||+||ΠS||2最后,给出用于包括用于后期物化联接的回旋镖技术的实施例的等式。如上所述,这种技术的好处在于完全避免了其中一个关系的有效载荷的混洗。因此,在回旋镖阶段中,对预期联接结果中的与行数量近似的数量的RID进行混洗。之后,只有具有较小有效载荷大小B的关系的有效载荷通过网络进行混洗。通过网络交换的总数据量TB由等式3给出。TB=N–1N·|R|·||t||+2·|S|·||t||+|S|·||ΠB||+||t||;其中B=argminΠR,S3如等式3所示,a如果较小关系的有效载荷大小大于联接结果元组的大小,和b如果两个关系的有效载荷大小中存在显著差异,那么回旋镖物化技术导致网络数据交换的显著减少。硬件概述根据一个实施例,本文描述的技术由一个或多个专用计算设备实现。专用计算设备可以是硬连线的以执行这些技术,或者可以包括数字电子设备诸如永久地编程以执行这些技术的一个或多个专用集成电路ASIC或现场可编程门阵列FPGA,或者可以包括被编程为按照固件、存储器、其它存储装置或其组合中的程序指令来执行这些技术的一个或多个通用硬件处理器。这种专用计算设备还可以将定制的硬连线逻辑、ASIC或FPGA与定制的编程相结合,以实现这些技术。专用计算设备可以是台式计算机系统、便携式计算机系统、手持式设备、联网设备或者结合硬连线和或程序逻辑以实现这些技术的任何其它设备。例如,图4是图示可以在其上实现本发明实施例的计算机系统400的框图。计算机系统400包括总线402或用于传送信息的其它通信机制、以及与总线402耦合以处理信息的硬件处理器404。硬件处理器404可以是例如通用微处理器。计算机系统400还包括耦合到总线402的主存储器406,诸如随机存取存储器RAM或其它动态存储设备,用于存储信息和将由处理器404执行的指令。主存储器406还可以用于在执行要由处理器404执行的指令期间存储临时变量或其它中间信息。当存储在处理器404可访问的非瞬态存储介质中时,这些指令使计算机系统400成为被定制以执行指令中指定的操作的专用机器。计算机系统400还包括耦合到总线402的只读存储器ROM408或其它静态存储设备,用于存储用于处理器404的静态信息和指令。存储设备410诸如磁盘、光盘或固态驱动器被提供并被耦合到总线402,用于存储信息和指令。计算机系统400可以经由总线402耦合到显示器412诸如阴极射线管CRT,用于向计算机用户显示信息。包括字母数字键和其它键的输入设备414被耦合到总线402,用于将信息和命令选择传送到处理器404。另一种类型的用户输入设备是光标控制416诸如鼠标、轨迹球或光标方向键,用于将方向信息和命令选择传送到处理器404并用于控制显示器412上的光标移动。这种输入设备通常在两个轴上具有两个自由度,第一轴例如,x和第二轴例如,y,这允许设备指定平面中的位置。计算机系统400可以使用定制的硬连线逻辑、一个或多个ASIC或FPGA、固件和或程序逻辑它们与计算机系统相结合,使计算机系统400成为或将计算机系统400编程为专用机器来实现本文所述的技术。根据一个实施例,响应于处理器404执行包含在主存储器406中的一个或多个指令的一个或多个序列,计算机系统400执行本文的技术。这些指令可以从另一个存储介质诸如存储设备410读入到主存储器406中。包含在主存储器406中的指令序列的执行使得处理器404执行本文所述的处理步骤。在替代实施例中,可以使用硬连线的电路系统代替软件指令或与软件指令组合。如本文所使用的,术语“存储介质”是指存储使机器以特定方式操作的数据和或指令的任何非瞬态介质。这种存储介质可以包括非易失性介质和或易失性介质。非易失性介质包括例如光盘、磁盘或固态驱动器,诸如存储设备410。易失性介质包括动态存储器,诸如主存储器406。存储介质的常见形式包括例如软盘、柔性盘、硬盘、固态驱动器、磁带或任何其它磁数据存储介质、CD-ROM、任何其它光学数据存储介质、任何具有孔模式的物理介质、RAM、PROM和EPROM、FLASH-EPROM、NVRAM、任何其它存储器芯片或盒式磁带。存储介质不同于传输介质但可以与传输介质结合使用。传输介质参与在存储介质之间传递信息。例如,传输介质包括同轴电缆、铜线和光纤,包括包含总线402的导线。传输介质也可以采用声波或光波的形式,诸如在无线电波和红外数据通信期间生成的那些。各种形式的介质可以参与将一个或多个指令的一个或多个序列携带到处理器404以供执行。例如,指令最初可以在远程计算机的磁盘或固态驱动器上携带。远程计算机可以将指令加载到其动态存储器中,并使用调制解调器通过电话线发送指令。位于计算机系统400本地的调制解调器可以在电话线上接收数据并使用红外发送器将数据转换成红外信号。红外检测器可以接收红外信号中携带的数据,并且适当的电路系统可以将数据放在总线402上。总线402将数据携带到主存储器406,处理器404从主存储器406检索并执行指令。由主存储器406接收的指令可以可选地在由处理器404执行之前或之后存储在存储设备410上。计算机系统400还包括耦合到总线402的通信接口418。通信接口418提供耦合到网络链路420的双向数据通信,其中网络链路420连接到本地网络422。例如,通信接口418可以是综合业务数字网ISDN卡、电缆调制解调器、卫星调制解调器或者提供与对应类型的电话线的数据通信连接的调制解调器。作为另一个示例,通信接口418可以是局域网LAN卡,以提供与兼容LAN的数据通信连接。还可以实现无线链路。在任何此类实现中,通信接口418都发送和接收携带表示各种类型信息的数字数据流的电信号、电磁信号或光信号。网络链路420通常通过一个或多个网络向其它数据设备提供数据通信。例如,网络链路420可以通过本地网络422提供到主计算机424或到由因特网服务提供商ISP426操作的数据设备的连接。ISP426进而通过全球分组数据通信网络现在通常称为“因特网”428提供数据通信服务。本地网络422和因特网428都使用携带数字数据流的电信号、电磁信号或光信号。通过各种网络的信号以及网络链路420上并通过通信接口418的信号其将数字数据携带到计算机系统400和从计算机系统400携带数字数据是传输介质的示例形式。计算机系统400可以通过一个或多个网络、网络链路420和通信接口418发送消息和接收数据,包括程序代码。在因特网示例中,服务器430可以通过因特网428、ISP426、本地网络422和通信接口418发送对应用程序的所请求代码。接收到的代码可以在被接收到时由处理器404执行,和或存储在存储设备410或其它非易失性存储器中以供稍后执行。在前面的说明书中,已经参考众多具体细节描述了本发明的实施例,这些细节可以从实现到实现有所变化。因而,说明书和附图应被视为说明性的而非限制性的。本发明范围的唯一和排他性指示,以及申请人意图作为本发明范围的内容,是以这种权利要求发出的具体形式从本申请发出的权利要求集合的字面和等同范围,包括任何后续更正。软件概述图5是可以用于控制计算机系统400的操作的基本软件系统500的框图。软件系统500及其组件,包括它们的连接、关系和功能,仅仅是示例性的,并且不意味着限制一个或多个示例实施例的实现。适于实现一个或多个示例实施例的其它软件系统可以具有不同的组件,包括具有不同的连接、关系和功能的组件。提供软件系统500用于指导计算机系统400的操作。可以存储在系统存储器RAM406中和固定存储装置例如,硬盘或闪存410上的软件系统500包括内核或操作系统OS510。OS510管理计算机操作的低级方面,包括管理进程的执行、存储器分配、文件输入和输出IO以及设备IO。表示为502A、502B、502C……502N的一个或多个应用可以被“加载”例如,从固定存储装置410传递到存储器406中以供系统500执行。意图在计算机系统400上使用的应用或其它软件也可以被存储为可下载的计算机可执行指令集,例如,用于从因特网位置例如,Web服务器、app商店或其它在线服务下载和安装。软件系统500包括图形用户界面GUI515,用于以图形例如,“点击”或“触摸手势”方式接收用户命令和数据。进而,这些输入可以由系统500根据来自操作系统510和或一个或多个应用502的指令来操作。GUI515还用于显示来自OS510和一个或多个应用502的操作的结果,因此用户可以提供附加的输入或终止会话例如,注销。OS510可以直接在计算机系统400的裸硬件520例如,一个或多个处理器404上执行。可替代地,管理程序hypervisor或虚拟机监视器VMM530可以插入在裸硬件520和OS510之间。在这个配置中,VMM530充当OS510与计算机系统400的裸硬件520之间的软件“缓冲”或虚拟化层。VMM530实例化并运行一个或多个虚拟机实例“客人机”。每个客人机包括“客人”操作系统诸如OS510以及被设计为在客人操作系统上执行的一个或多个应用诸如一个或多个应用502。VMM530向客人操作系统呈现虚拟操作平台并管理客人操作系统的执行。在一些实例中,VMM530可以允许客人操作系统如同其直接在计算机系统400的裸硬件520上运行一样运行。在这些实例中,被配置为直接在裸硬件520上执行的客人操作系统的相同版本也可以在VMM530上执行而无需修改或重新配置。换句话说,VMM530可以在一些情况下向客人操作系统提供完全硬件和CPU虚拟化。在其它实例中,客人操作系统可以被专门设计或配置为在VMM530上执行以提高效率。在这些实例中,客人操作系统“意识到”它在虚拟机监视器上执行。换句话说,VMM530可以在某些情况下向客人操作系统提供准虚拟化para-virtualization。计算机系统进程包括硬件处理器时间的分配以及存储器物理和或虚拟的分配,存储器的分配是用于存储由硬件处理器执行的指令、用于存储由硬件处理器执行指令所生成的数据、和或用于当计算机系统进程未运行时在硬件处理器时间的分配之间存储硬件处理器状态例如,寄存器的内容。计算机系统进程在操作系统的控制下运行,并且可以在计算机系统上执行的其它程序的控制下运行。云计算本文一般地使用术语“云计算”来描述计算模型,该计算模型使得能够按需访问计算资源的共享池,计算资源诸如计算机网络、服务器、软件应用和服务,并且允许以最少的管理工作或服务提供商交互来快速提供和释放资源。云计算环境有时称为云环境或云可以以各种不同方式实现,以最好地适应不同要求。例如,在公共云环境中,底层计算基础设施由组织拥有,该组织使其云服务可供其它组织或公众使用。相比之下,私有云环境一般仅供单个组织使用或在单个组织内使用。社区云旨在由社区内的若干组织共享;而混合云包括通过数据和应用可移植性绑定在一起的两种或更多种类型的云例如,私有、社区或公共。一般而言,云计算模型使得先前可能已经由组织自己的信息技术部门提供的那些职责中的一些职责代替地作为云环境内的服务层来输送,以供消费者使用根据云的公共私有性质,在组织内部或外部。取决于特定实现,由每个云服务层提供或在每个云服务层内提供的组件或特征的精确定义可以有所不同,但常见示例包括:软件即服务SaaS,其中消费者使用在云基础设施上运行的软件应用,同时SaaS提供商管理或控制底层云基础设施和应用。平台即服务PaaS,其中消费者可以使用由PaaS提供商支持的软件编程语言和开发工具,以开发、部署和以其它方式控制它们自己的应用,同时PaaS提供商管理或控制云环境的其它方面即,运行时执行环境下的一切。基础设施即服务IaaS,其中消费者可以部署和运行任意软件应用,和或提供处理、存储、网络和其它基础计算资源,同时IaaS提供商管理或控制底层物理云基础设施即,操作系统层下面的一切。数据库即服务DBaaS,其中消费者使用在云基础设施上运行的数据库服务器或数据库管理系统,同时DbaaS提供商管理或控制底层云基础设施、应用和服务器包括一个或多个数据库服务器。上述基本计算机硬件和软件以及云计算环境是为了说明可以用于实现一个或多个示例实施例的基本底层计算机组件的目的而给出的。但是,一个或多个示例实施例不必限于任何特定的计算环境或计算设备配置。相反,一个或多个示例实施例可以在本领域技术人员依据本公开将理解为能够支持本文呈现的一个或多个示例实施例的特征和功能的任何类型的系统架构或处理环境中实现。
权利要求:1.一种计算机实现的方法,用于数据库管理系统对跨多个节点被水平分区的第一数据库对象和第二数据库对象执行联接操作,以产生联接结果物化,包括:将来自所述多个节点的相应本地联接节点指派给第一数据库对象和第二数据库对象中的多个行中的每个相应行;通过网络向每个本地联接节点传送相应的联接元组集合,其中所述相应的联接元组集合中的每个联接元组表示所述多个行的行集合中本地联接节点被指派给的相应行;其中每个联接元组包括来自所表示的行的联接键和用于所表示的行的行标识符;所述多个节点中的每个本地联接节点对所述相应的联接元组集合执行本地联接操作,以产生相应的联接结果元组集合;其中每个联接结果元组包括识别由本地联接操作匹配的相应行的来自第一数据库对象的第一行标识符和来自第二数据库对象的第二行标识符;所述多个节点中的每个节点接收从所述多个节点中的一个或多个其它节点发送的相应的联接结果元组的物化集合;以及所述多个节点中的每个节点至少部分地基于由所述节点接收的所述相应的联接结果元组的物化集合来物化联接结果物化的相应部分;其中该方法由一个或多个计算设备执行。2.如权利要求1所述的方法,还包括将所述多个节点中的特定本地联接节点指派给所述多个行中的特定行,包括:对所述特定行中的特定联接键执行散列分区操作,以产生所述特定行的特定散列值;其中所述特定本地联接节点与所述特定散列值相关联;以及基于所述特定行的所述特定散列值与所述特定本地联接节点相关联,将所述特定本地联接节点指派给所述特定行。3.如权利要求1所述的方法,还包括所述多个节点中的特定联接节点对被传送到所述特定联接节点的特定联接元组集合执行特定本地联接操作,以产生特定联接结果元组集合,包括:基于第一联接元组和第二联接元组具有相同联接键,将来自第一数据库对象的所述特定联接元组集合的第一联接元组与来自第二数据库对象的所述特定联接元组集合的第二联接元组匹配;以及产生所述特定联接结果元组集合中的特定联接结果元组,包括第一联接元组的第一组件行标识符和第二联接元组的第二组件行标识符。4.如权利要求1所述的方法,还包括:至少部分地基于确定针对第一数据库对象的行的联接结果物化所需的第一数据量大于针对第二数据库对象的行的联接结果物化所需的第二数据量,将第一数据库对象识别为目标数据库对象;以及所述多个节点中的每个本地联接节点将所述相应的联接结果元组集合的至少一部分中的每个联接结果元组发送到所述多个节点中发起了由所述每个联接结果元组中的第一行标识符识别出的目标数据库对象中的行的节点。5.如权利要求4所述的方法,还包括:所述多个节点中的特定节点至少部分地基于由所述特定节点接收的特定联接结果元组的物化集合中的特定联接结果元组来物化联接结果物化的特定行;其中,所述特定联接结果元组包括a识别第一数据库对象的第一行的特定第一行标识符和b识别第二数据库对象的第二行的特定第二行标识符;其中物化所述特定行包括:从所述特定节点的存储器中检索由所述特定第一行标识符识别出的第一数据库对象的第一行的来自第一数据库对象的第一投影列;从所述多个节点中的第二节点请求由所述特定第二行标识符识别出的第二数据库对象的第二行的来自第二数据库对象的第二投影列;以及创建联接结果物化的所述特定行,包括第一行的第一投影列和第二行的第二投影列。6.如权利要求4所述的方法,还包括:所述多个节点中的特定节点接收特定联接结果元组的物化集合;其中所述特定联接结果元组的物化集合中的每个元组包括识别被存储在所述特定节点处的目标数据库对象的相应行的相应的第一行标识符。7.如权利要求1所述的方法,还包括:至少部分地基于确定针对第一数据库对象的行的联接结果物化所需的第一数据量小于针对第二数据库对象的行的联接结果物化所需的第二数据量,将第一数据库对象识别为目标数据库对象;以及所述多个节点中的每个本地联接节点将所述相应的联接结果元组集合的至少一部分中的每个联接结果元组发送到所述多个节点中发起了由所述每个联接结果元组中的第一行标识符识别出的目标数据库对象中的行的节点。8.如权利要求7所述的方法,还包括:所述多个节点中的特定节点接收从所述多个节点中的一个或多个其它节点发送的特定联接结果元组;所述特定节点从由来自所述特定联接结果元组的特定第一行标识符识别出的第一行中检索第一投影列;所述特定节点创建拼接的联接结果元组,拼接的联接结果元组包括a第一投影列和b来自所述特定联接结果元组的特定第二行标识符;以及所述特定节点将拼接的联接结果元组发送到存储与特定第二行标识符匹配的记录的所述多个节点中的另一个节点;其中在所述多个节点的所述另一个节点处接收的特定联接结果元组的物化集合包括所述拼接的联接结果元组。9.如权利要求8所述的方法,还包括:所述多个节点中的所述另一个节点至少部分地基于由所述特定节点接收的所述特定联接结果元组的物化集合中的所述拼接的联接结果元组来物化联接结果物化的特定行;其中物化所述特定行包括:从所述另一个节点的存储器中检索由所述特定第二行标识符识别出的第二数据库对象的第二行的来自第二数据库对象的第二投影列;创建联接结果物化的所述特定行,包括第一行的第一投影列和第二行的第二投影列。10.如权利要求1所述的方法,还包括:数据库管理系统接收包括联接操作的查询;响应于接收到所述查询,数据库管理系统的查询优化器至少部分地基于数据库统计和所述查询来确定是否使用后期物化联接用于联接操作;以及其中,数据库管理系统对第一数据库对象和第二数据库对象执行联接操作以产生联接结果物化是响应于查询优化器确定使用后期物化联接用于查询而执行的。11.一个或多个存储指令的计算机可读存储介质,当指令由一个或多个处理器执行时,使得执行如权利要求1-10中任一项所述的方法。
百度查询: 甲骨文国际公司 回旋镖联接:网络高效、后期物化、分布式联接技术
免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。