用于数据的高效重新分区的通信的制作方法

文档序号:11530786阅读:158来源:国知局
用于数据的高效重新分区的通信的制造方法与工艺

本公开涉及网络通信,并且更具体地涉及为数据的高效重新分区确定网络调度表。



背景技术:

当在分布式多节点系统中评估分析查询时,常常会出现将数据重新分发或重新分区的需要。例如,在数据库系统的上下文中,需要对不同的键进行连接(join)和聚合操作的分析查询将受益于数据的重新分区,以便最佳地处理对不同键的每个操作。此外,如果对于特定运算符的数据分发朝某些节点严重偏斜,则可以通过将数据重新分区以跨多节点系统重新平衡工作负载来提高性能。

虽然重新分区允许在分布式多节点系统中更高效地处理数据,但是因为需要以多对多的方式在节点之间交换大量的数据,所以重新分区本身会增加处理开销。重新分区的复杂性还随着节点数量的增加而增加。可以使用非阻塞的、高带宽的互连(诸如infiniband(无限带宽))来加速重新分区。然而,即使使用适当的高速互连,重新分区也仍然可能占整个查询执行时间的50-60%。

基于上述,存在对用于优化分布式多节点系统中的数据重新分区的方法的需要。

本节中描述的方法是可以被追寻的方法,但不一定是以前已经构想或追寻的方法。因此,除非另有指示,否则不应当假设本节中描述的任何方法仅仅因为被包含在本节中而成为现有技术。

附图说明

在附图的图中以示例的方式而非限制的方式示出了本发明,并且附图中相似的附图标记指代相似的元件,在附图中:

图1a是绘出用于在多个服务器节点之间进行数据重新分区的示例系统的框图;

图1b是绘出根据实施例的用于在多个服务器节点之间进行数据重新分区的示例系统的框图;

图1c是绘出根据实施例的示例重新分区数据的矩阵表示的框图;

图1d、图1e和图1f是绘出基于图1c的重新分区数据来将数据重新分区的示例网络调度表的框图;

图2a是绘出根据实施例的用于为数据的高效重新分区构建网络调度表的过程的框图;

图2b是绘出根据实施例的图1f的网络调度表的填充的框图;

图3是其上可以实现实施例的计算机系统的框图。

具体实施方式

在以下描述中,出于解释的目的,阐述了许多具体细节,以便提供对本发明的透彻理解。然而,将明显的是,可以在没有这些具体细节的情况下实践本发明。在其它实例中,公知的结构和设备以框图的形式示出,以避免不必要地使本发明模糊。

总体概述

在实施例中,提供了用于使用经调度的网络通信来将数据高效地重新分区的改进方法。给定定义要在多个服务器节点之间发送的数据块的重新分区数据,对应的网络调度表(schedule)被确定,以便以协调的方式发送数据块。网络调度表被划分为时隙(timeslot),其中多个服务器节点中的每个服务器节点可以在每个时隙中发送多达一个数据块以及接收多达一个数据块。

通过使用首先优先化具有要发送的最大数量的数据块的发送者节点、其次优先化具有要接收的最大数量的数据块的最大接收者节点的贪婪选择算法,可以确定近似最佳调度表。此外,通过优先化具有要发送或接收的最大量的数据的节点,贪婪选择算法特别适用于朝特定节点严重偏斜的重新分区。通过使用为发送者和接收者维护的经排序的列表实现贪婪选择算法而带来最小的计算开销。在确定网络调度表之后,数据重新分区可以根据该网络调度表继续进行。

用于使用近似最佳网络调度表将数据重新分区的这种改进的方法可以显著减少完成重新分区所需的时间。此外,与在o(n^4)时间内运行的最优解相比,贪婪选择算法可以利用o(t*n^2)的时间复杂度来实现,其中t是用于网络调度表的时隙的总数,n是通信节点的数量。因此,这种方法与扩展到具有许多服务器节点的大型多节点集群特别相关。

数据库系统

本发明的实施例在dbms的上下文中使用。因此,对dbms的描述是有用的。

dbms管理数据库。dbms可以包括一个或多个数据库服务器。数据库包括存储在持久性存储器机构(诸如硬盘集合)上的数据库数据和数据库字典。数据库数据可以被存储在一个或多个数据容器中。每个容器包含记录。每个记录内的数据被组织成一个或多个字段。在关系dbms中,数据容器被称为表,记录被称为行,并且字段被称为列。在面向对象的数据库中,数据容器被称为对象类,记录被称为对象,记录在本文中还被称为对象记录,并且字段被称为属性。其它数据库架构可以使用其它术语。

用户通过向数据库服务器提交使得数据库服务器对存储在数据库中的数据执行操作的命令来与dbms的数据库服务器交互。用户可以是运行在客户端计算机上与数据库服务器交互的一个或多个应用。本文中多个用户还可以被统称为用户。

数据库命令可以是符合数据库语言的数据库语句的形式。用于表达数据库命令的数据库语言是结构化查询语言(sql)。存在很多不同版本的sql,一些版本是标准的,一些版本是专有的,并且存在各种扩展。数据操纵语言(“dml”)语句是在表中检索或操纵数据的sql语句。dml语句是最常用的sql语句。数据定义语言(“ddl”)命令被发给数据库服务器,以创建或配置数据库对象,诸如表、视图或复杂数据类型。sql/xml是在对象-关系数据库中操纵xml数据时使用的sql的常见扩展。

多节点数据库管理系统由共享对同一数据库的访问的互连节点组成。通常,节点经由网络互连并且以不同的程度共享对共享存储装置的访问,例如,对一组盘驱动器和存储在其上的数据库块的共享访问。多节点数据库系统中的节点可以是经由网络互连的一组计算机(例如,工作站、个人计算机)的形式。可替代地,节点可以是网格的节点,该网格由以与机架上的其它服务器刀片互连的服务器刀片的形式的节点组成。

多节点数据库系统中的每个节点托管数据库服务器。服务器(诸如数据库服务器)是集成的软件组件和计算资源分配的组合,其中计算资源诸如存储器、节点和节点上的用于在处理器上执行集成的软件组件的进程,软件和计算资源的组合专用于代表一个或多个客户端执行特定的功能。

来自多节点数据库系统中的多个节点的资源可以被分配以运行特定数据库服务器的软件。软件和来自节点的资源分配的每个组合是在本文中被称为“服务器实例”或“实例”的服务器。数据库服务器可以包括多个数据库实例,这些数据库实例中的一些或全部在分开的计算机(包括分开的服务器刀片)上运行。

系统概述

图1a是绘出用于在多个服务器节点之间进行数据重新分区的示例系统的框图。图1a的系统100包括服务器节点110a、服务器节点110b、服务器节点110c、服务器节点110d、互连120a、互连120b、互连120c、互连120d和网络180。

为了支持具有大量记录和事务的数据密集型应用,可以使用图1a中的服务器节点110a-110d来实现多节点数据库系统。对于诸如表连接和聚合之类的某些数据库操作,为了并行处理而在多个服务器节点之间(例如通过指派节点基于由数据库操作使用的键来处理某些键范围)将数据工作负载重新分区可能是高效的。对于每次重新分区,可能需要在服务器节点110a-110d之间经网络180交换大量数据。

在详细描述重新分区过程之前,首先建立如在本申请中使用的“时隙”的概念会是有帮助的。每个调度表可以依据顺序时隙来定义。时隙定义一段时间,在该段时间中每个服务器节点可以从网络发送或接收多达设置量的数据。该设置量的数据被称为数据块;数据块大小可以根据应用、硬件或网络规范来设置。因此,每个时隙的长度可以依赖于所选择的数据块大小和网络180的性能特性,其中网络180可以是诸如infiniband、高速以太网或另一种合适的高速网络之类的高速结构(fabric)。

图1a和图1b中所示的示例是为了说明的目的,因此每个服务器节点110a-110d仅可以在单个时隙内经网络180发送或接收最多一个数据块。然而,在其它实施例中,每个服务器节点可以在单个时隙内发送最多一个数据块并且接收最多一个数据块。因此,服务器节点可以在同一时隙内并发地经网络发送数据块并且经同一网络接收不同的数据块。

在实施例中,系统100可以在数据库的上下文中使用。然而,系统100不一定限于数据库上下文,并且系统100可以对应于为了通过多个节点并行处理而需要数据重新分区的任何应用或服务。在数据库的上下文中,服务器节点110a-110d可以对应于多节点数据库管理系统。

当系统100接收到来自应用的数据库查询时,系统100可以形成查询执行计划,以实施从数据库检索所请求的数据库记录的select查询。作为查询执行计划的一部分,具有可并行化的工作负载的运算符可以在服务器节点110a-110d之间分发工作负载以便并行处理。然而,如果查询计划中的后续运算符对不同的键操作,则工作负载数据将需要根据关于之后的运算符的新键被重新分区。作为该重新分区的一部分,服务器节点110a可能需要向服务器节点110b、110c和110d发送数据,服务器节点110b可能需要向服务器节点110a、110c和110d发送数据,服务器节点110c可能需要向服务器节点110a、110b和110d发送数据,并且服务器节点110d可能需要向服务器节点110a、110b和110c发送数据。换句话说,服务器节点110a-110d将需要以多对多的方式在它们自身之间交换数据。

未经调度的重新分区

图1a展示了如果在没有网络调度表的情况下以未经协调的方式利用网络180则可能导致的效率低下。图1a中所示的数据传送可以经四(4)个顺序的时隙发生。例如,作为重新分区的一部分,服务器节点110a和服务器节点110d二者可能都需要向服务器节点110c发送数据。如果服务器节点110a和服务器节点110d二者尝试同时向服务器节点110c发送数据块,则发送节点将受到接收节点的最大带宽的限制。因此,虽然服务器节点110c以全带宽(4个时隙4个数据块)接收来自互连120c的数据块,但是服务器节点110a-110b仅以半带宽(4个时隙2个数据块)经由各自的互连120a-120b发送数据块。此外,用于服务器节点110b的互连120b根本没有被利用(4个时隙0个数据块)。因此,网络180没有被利用到它的全带宽潜力。

经调度的重新分区

为了提高网络180的利用率并且从而在较少的时间内完成重新分区,可以利用网络调度表。图1b示出了使用网络调度表来协调服务器节点之间的数据交换的示例。图1b是绘出根据实施例的用于在多个服务器节点之间进行数据重新分区的示例系统的框图。图1b的系统102包括服务器节点110a、服务器节点110b、服务器节点110c、服务器节点110d、互连120a、互连120b、互连120c、互连120d和网络180。

如图1b中所示,服务器节点110a-110d之间的传送已经被协调,以优化网络180的使用。因此,不是让服务器节点110a和110d同时尝试向服务器节点110c发送数据,而是发送被错开,以使得服务器节点110a首先向服务器节点110c发送它的数据块,然后服务器节点110d在稍后的时间向服务器节点110c发送它的数据块(图1b中未具体示出)。因此,互连120a和120c的全部带宽被利用,其中在4个时隙中发送和接收了4个数据块。此外,通过同时调度服务器节点110d向服务器节点110b发送数据块,互连120d和120b的全部带宽也被完全利用,其中在相同的4个时隙中发送和接收了4个数据块。因此,通过使用网络调度表,与其中没有利用网络调度表的图1a中的系统100的网络180相比,系统102的网络180以最佳方式被利用。

虽然与图1a相比在图1b中优化了网络180的使用,但是作为让图1b继续进行的前提条件,网络调度表必须是可用的。生成网络调度表不是一项简单的任务,尤其是在涉及大量节点时。因此,给定定义要经网络传送的数据块的重新分区数据,考察生成网络调度表的一些不同的方法会是有益的。

重新分发数据矩阵

为了更详细地检查重新分区数据,图1c是绘出根据实施例的示例重新分区数据的矩阵表示的框图。图1c包括以矩阵形式示出的重新分区数据125。因此,重新分区数据125指示服务器节点110a需要向服务器节点110b发送3个数据块、向服务器节点110c发送3个数据块以及向服务器节点110d发送3个数据块。服务器节点110b需要向服务器节点110a发送2个数据块、向服务器节点110c发送3个数据块以及向服务器节点110d发送2个数据块。服务器节点110c需要向服务器节点110a发送2个数据块、向服务器节点110b发送3个数据块以及向服务器节点110d发送3个数据块。服务器节点110d需要向服务器节点110a发送2个数据块、向服务器节点110b发送1个数据块以及向服务器节点110c发送2个数据块。

虽然图1c的重新分区数据125被描绘为仅指示每个发送者节点要向每个接收者节点发送的块的总数,但是重新分区数据125还可以识别对于每个矩阵单元格要发送的具体数据块。因此,对于数据库运算符的示例,可以在为每个服务器节点确定数据库运算符的键范围之后确定工作负载数据的新分区。基于工作负载数据的现有分区,用于转变到新分区的必要网络数据传送可以被确定为重新分区数据125,其中数据被划分为设置的数据块大小的数据块。

未经调度的、最佳的和贪婪的启发式调度表

现在重新分区数据125是可用的,可以使用重新分区数据125作为示例数据来比较各种网络调度方法。图1d、图1e和图1f是绘出基于图1c的重新分区数据来将数据重新分区的示例网络调度表的框图。如图1d的网络调度表130中所示,网络调度表是从时隙#0到时隙#13的时隙的顺序列表。每个时隙(列)为作为发送者节点的每个服务器节点(行)定义最多一个服务器节点作为接收者节点(单元格)。如果在单元格中没有指定接收者节点,则在相关联的时隙中对于该发送者节点不发生网络数据传送。相应的图1e和图1f的网络调度表132和134也以与图1d的网络调度表130相同的方式构造

图1d的网络调度表130基于未经调度的方法。因此,不管需要传送到每个服务器节点的数据量如何,每个服务器节点都被视为对于发送数据同等重要。因此数据以未经协调的方式在节点之间发送,从而造成迫使节点在时隙期间无成效地(unproductively)等待的网络瓶颈。因此,需要总共14个时隙来完成网络调度表130。

图1e的网络调度表132基于优化的方法。因此,重新分区数据125被分析,以创建需要最少量的时隙,或9个时隙来完成的网络调度表132。虽然网络调度表132在比网络调度表130少得多的时间内完成了重新分区,但是在评估这两种方法时还必须考虑生成网络调度表132的时间。由于求解这样的网络调度表不是一项简单的任务并且已知的算法具有o(n^4)或更高的复杂度,因此该优化的方法仅对于非常小的n或对于具有非常少的服务器节点的系统是实际的。因此,该优化的方法无法扩展到具有许多节点的大规模系统。

图1f的网络调度表134基于启发式贪婪方法。为了生成网络调度表134,具有要发送的最大数量的数据块的发送节点(行)被优先化以被首先填充。当确定对于给定发送节点(行)的接收者节点(单元格)时,对于该发送节点而言具有最大数量的要接收的数据块的接收者节点被优先化以被首先选择。如果该接收者节点在同一时隙(列)中已经被指派给不同的发送者节点,则选择对于该发送节点具有最大数量的要接收的数据块的下一个接收者节点。这个过程被重复直到接收者节点被选择或者直到所有可能的可用接收者节点被耗尽为止,在所有可能的可用接收者节点被耗尽的情况下,单元格保留为空并且发送节点仅在该时隙期间等待。当接收者节点被选择时,该过程可以被重复以填充后续的相邻顺序时隙,以便为接收者节点联合(coalesce)数据块。

通过优先化具有要传送的最大量的数据的发送节点和接收节点,可用的网络带宽以启发式、贪婪的方式被分配给需要最多网络资源的节点。因此,因为需要发送或接收大量数据的偏斜节点被优先化以被首先服务,所以启发式贪婪方法对于偏斜的(skewed)数据重新分区特别有效。如图1f中所示,对于启发式贪婪方法,需要总共10个时隙,这与图1e的最佳方法所需的9个时隙相比,提供了近似最佳的结果。然而,因为启发式贪婪方法可以通过维护发送者和接收者的经排序的列表来实现,所以最差情况下的时间复杂度仅为o(t*n^2),其中t是用于网络调度表的时隙总数。因此,提供了用于大型多节点系统的扩展。下文结合图2a更详细地描述用于构建网络调度表134的过程。

网络调度表构建过程

现在已经有了系统100和网络调度表134的基本概要,考察用于构建网络调度表134的处理步骤的高级概述会是有益的。转向图2a,图2a是绘出根据实施例的用于为数据的高效重新分区构建网络调度表的过程的框图。

接收重新分区数据

在过程200的框202处,参考图1a和图1c,服务器节点110a接收重新分区数据125。在这个特定示例中,任意选择服务器节点110a以执行过程200。在某些实施例中,可以选择来自服务器节点110a-110d中的特定服务器节点来执行过程200。在其它实施例中,可以指派专用的协调器服务器(图1a中未示出)来执行过程200,其中该协调器服务器与服务器节点110a-110d分开。

为了接收重新分区数据125,可以首先从服务器节点110a-110d中的每个服务器节点收集关于当前可用的数据块和所需的数据块的信息。例如,在执行数据库执行计划的上下文中,服务器节点110a-110d上的当前可用的数据块可以对应于根据使用第一键的第一数据库运算符的工作负载分割,并且服务器节点110a-110d上的所需的数据块可以对应于根据使用第二键的第二后续数据库运算符的工作负载分割。在收集和分析关于可用的数据块和所需的数据块的信息之后,可以以矩阵形式接收重新分区数据125,如图2a中所示。因此,重新分区数据125为服务器节点110a-110d中的每个服务器节点指定要发送到服务器节点110a-110d中的每个服务器节点的数据块的数量。

确定发送者次序

在过程200的框204处,参考图1a和图1c,服务器节点110a通过使用重新分区数据125按照要发送的数据块的总数将服务器节点110a-110d按降序排列来为服务器节点110a-110d确定发送者次序。给定图1c的重新分区数据125中示出的示例数据,可以通过首先对每一行求和来容易地确定要由每个服务器节点发送的数据块的总量:

服务器节点110a–3+3+3=9个数据块

服务器节点110b–2+3+2=7个数据块

服务器节点110c–2+3+3=8个数据块

服务器节点110d–2+1+2=5个数据块

接下来,通过按照要发送的数据块的总量的降序排序,发送次序可以被确定如下所示:

1.服务器节点110a(9个数据块)

2.服务器节点110c(8个数据块)

3.服务器节点110b(7个数据块)

4.服务器节点110d(5个数据块)

填充网络调度表

在过程200的框206处,参考图1a和图1f,服务器节点110a按照从框204确定的发送者次序来填充网络调度表134。如图1f中所示,网络调度表134包括编号为从0到9的10个时隙。由于在网络调度表134被完全填充之前所需的时隙总数可能是未知的,因此预定数量的时隙可以最初被保留并且一旦已知所需的时隙总数则稍后被修剪。

如框206中所示,网络调度表134的构建遵循特定的规则。首先,按照从框204确定的发送者次序来填充网络调度表134。换句话说,最大的数据发送者被首先优先化。因此,用于服务器节点110a(发送9个块)的整个行首先被填充,然后用于服务器节点110c(发送8个块)的整个行第二个被填充,然后用于服务器节点110b(发送7个块)的整个行第三个被填充,然后用于服务器节点110d(发送5个块)的整个行第四个被填充。

第二,每个时隙为作为发送者节点的服务器节点中的每个服务器节点指定最多一个接收者节点。这对应于用于特定列(时隙)的单元格。每个单元格可以是空的或者可以指定对于对应的发送节点(行)的一个接收者节点。例如,时隙#0指定服务器节点110a向服务器节点110b发送数据块,服务器节点110b向服务器节点110c发送数据块,服务器节点110c向服务器节点110a发送数据块,服务器节点110d什么也不做(空单元格)。

第三,时隙中的每个时隙将特定节点指定为接收者节点不多于一次。例如,如网络调度表134的时隙#0中所示,因为服务器节点110a、110b和110c已经在用于服务器节点110a-110c的单元格中被指定,所以用于服务器节点110d的单元格需要为空。当该第三个规则与上面的第二个规则组合时,每个服务器节点被限制为在单个时隙内发送最多一个数据块并且接收最多一个数据块。通过实行这些规则,在构建网络调度表134时可以避免网络引发的瓶颈。

第四,根据重新分区数据125,至少基于具有要由发送者节点接收的最大可能数量的数据块来指定用于每个单元格的最多一个接收者节点。换句话说,最大的数据接收者第二个被优先化。为了实行这个规则,可以为每个发送者创建按照要由发送者接收的数据块的降序来维护的接收者的经排序的列表。为了为特定的发送者和单元格选择接收者,遍历用于该特定发送者的经排序的列表直到找到在同一时隙中尚未为先前发送者指定的接收者为止。可以为每个时隙维护位掩码或类似的结构,以跟踪已经被指定的接收者,由此确保时隙中的每个时隙指定特定接收者不多于一次。注意到,位掩码的使用实现在o(1)时间内对接收者的查找。如果在用于单元格的遍历中没有找到合适的接收者,则单元格保留为空。

假设为单元格指定了合适的接收者,则在经排序的列表中该接收者的值(要接收的数据块的数量)递减。所指定的接收者可以被重复指定,以填充后续的顺序时隙,直到所指定的接收者的值被递减为0或者直到达到如下时隙为止:在该时隙中所指定的接收者已经被指派给先前的发送者。因此,还可以基于将所指定的接收者联合或填充到相邻的时隙中来指定该最多一个接收者节点。在所指定的接收者不能为更多相邻的时隙指定之后,如果必要的话,则将接收者的经排序的列表重新排序,并且为下一个要被填充的单元格重新启动对经排序的列表的遍历。由于经排序的列表是按次序维护的,因此可以在o(log(n))内并且最坏情况下可以在o(n)内完成重新排序。

注意到,上面的示例首先优先化最大的发送者,并且其次优先化最大的接收者。因此,网络调度表134是按行或发送者次序构建的。在替代实施例中,最大的接收者可以首先被优先化,并且最大的发送者可以其次被优先化。在这个实施例中,网络调度表134可以按列或接收者次序被构建。

示例填充

在布置了框206的一般规则之后,观察这些规则被应用到重新分区数据125中示出的示例数据会是有帮助的。如上面针对框204所讨论的,用于服务器节点110a的整个行在网络调度表134中首先被填充。由于如由重新分区数据125所指示的,服务器节点110a需要向服务器节点110b-110d中的每个服务器节点发送3个数据块,因此用于服务器节点110a的发送调度表如图2b中所示被构建。转向图2b,图2b是绘出根据实施例的来自图1f的网络调度表134的填充的框图。参考图2b,网络调度表234a、网络调度表234b、网络调度表234c和网络调度表234d可以对应于在不同的完成阶段处的图1f的网络调度表134。

第一发送者

对于作为发送节点的服务器节点110a,接收者的经排序的列表如下所示:

1.服务器节点110b(3个数据块)

2.服务器节点110c(3个数据块)

3.服务器节点110d(3个数据块)

由于服务器节点110a是要填充的第一发送者行,因此在选择接收者时在同一时隙中不存在需要考虑的先前的行。因此,可以按顺序次序来处理接收者的经排序的列表,如网络调度表234a中所示,其中3个数据块在时隙0-2内被发送到服务器节点110b,3个数据块在时隙3-5内被发送到服务器节点110c,并且3个数据块在时隙6-8内被发送到服务器节点110d。

第二发送者

按照框204的发送者次序来确定下一个要填充的发送节点。因此,接下来填充服务器节点110c。对于作为发送节点的服务器节点110c,接收者的经排序的列表如下所示:

1.服务器节点110b(3个数据块)

2.服务器节点110d(3个数据块)

2.服务器节点110a(2个数据块)

从网络调度表234a中用于服务器节点110c的时隙#0开始,遍历接收者的经排序的列表,以便为空单元格选择候选接收者。因此,经排序的列表中的条目1,或服务器节点110b,被选择。由于服务器节点110b之前已经由服务器节点110a在时隙#0中指定,因此遍历继续到经排序的列表中的条目2,或服务器节点110d。由于服务器节点110d之前在时隙#0中尚未被指定,因此服务器节点110d被指定为用于时隙#0的接收者,如网络调度表234b中所示。

如上面所讨论的,可以维护用于每个时隙的可用接收者的位掩码,以辅助确定节点之前是否已经被指定。因此,对于时隙#0,位掩码可以对应于0100,以指示服务器节点110b已经被指定。在利用服务器节点110d作为用于时隙#0的接收节点来填充服务器节点110c之后,然后位掩码可以被更新为0101。在经排序的列表中所选择的接收者的值还被递减。在一些实施例中,接收者的经排序的列表可以直接引用重新分区数据125中的值。接收者的经排序的列表被更新为如下所示:

1.服务器节点110b(3个数据块)

2.服务器节点110d(2个数据块)

3.服务器节点110a(2个数据块)

回想一旦接收者被指定,它就可以继续被指定为用于后续的相邻顺序时隙,直到经排序的列表中该接收者的值递减为0或者直到在时隙中该接收者已经被指定为用于先前的发送者为止。在网络调度表234b的情况下,可以继续为时隙#1和#2指定所选择的接收者或服务器节点110d,由此通过递减两次来耗尽接收者的值。因此,接收者的经排序的列表被更新为如下所示:

1.服务器节点110b(3个数据块)

2.服务器节点110a(2个数据块)

网络调度表234b中的时隙#3至时隙#7的填充可以以类似的方式进行。为了简洁起见,详细的讨论被省略。一旦接收者的经排序的列表被完全耗尽,则作为发送节点的服务器节点110c的填充完成,并且可以处理下一个发送者。

第三发送者

回顾框204的发送者次序,要处理的下一个发送者是服务器节点110b。对于作为发送节点的服务器节点110b,接收者的经排序的列表如下所示:

1.服务器节点110c(3个数据块)

2.服务器节点110a(2个数据块)

3.服务器节点110d(2个数据块)

经排序的列表中的第一候选接收者,或服务器节点110c,可用于填充时隙#0、#1和#2,如网络调度表234c中所示。因此,接收者的经排序的列表被更新为如下所示:

1.服务器节点110a(2个数据块)

2.服务器节点110d(2个数据块)

经排序的列表中的第一候选接收者,或服务器节点110a,可用于填充时隙#3和#4,如网络调度表234c中所示。因此,接收者的经排序的列表被更新为如下所示:

1.服务器节点110d(2个数据块)

经排序的列表中的第一候选接收者,或服务器节点110d,可用于填充时隙#5,如网络调度表234c中所示。然而,可以看出,服务器节点110d已经在时隙#6、#7和#8中为服务器节点110a指定。因此,因为在接收者的经排序的列表中没有剩余的候选者,所以对于节点110b,这些时隙保留为空。一旦到达时隙#9,就可以指定用于服务器节点110d的最终数据块,并且用于作为发送者节点的服务器节点110b的调度完成。

第四发送者

回顾框204的发送者次序,要处理的下一个发送者是服务器节点110d。对于作为发送节点的服务器节点110d,接收者的经排序的列表如下所示:

1.服务器节点110a(2个数据块)

2.服务器节点110c(2个数据块)

3.服务器节点110b(1个数据块)

对于时隙#0和时隙#1,因为可能的接收者中的所有接收者已经被指定,所以没有接收者可以被指定。因此,时隙#0和#1保留为空。经排序的列表中的第一候选接收者,或服务器节点110a,可用于填充时隙#2,如网络调度表234d中所示。因此,接收者的经排序的列表被更新并且重新排序(resort)为如下所示:

1.服务器节点110c(2个数据块)

2.服务器节点110a(1个数据块)

3.服务器节点110b(1个数据块)

对于时隙#3,遍历经排序的列表直到例如通过在遍历经排序的列表时检查位掩码而找到在条目3处可用的接收者,或服务器节点110b为止。因此,对于时隙#3,服务器节点110b被填充,如网络调度表234d中所示。因此,接收者的经排序的列表被更新为如下所示:

1.服务器节点110c(2个数据块)

2.服务器节点110a(1个数据块)

对于时隙#4,因为可能的接收者中的所有接收者已经被指定,所以没有接收者可以被指定。因此,时隙#4保留为空。对于时隙#5,有序列表被遍历直到找到在条目2处可用的接收者,或服务器节点110a为止。因此,接收者的经排序的列表被更新为如下所示:

1.服务器节点110c(2个数据块)

对于时隙#6,剩下的唯一接收者是服务器节点110c,服务器节点110c可以被指定为用于时隙#6和下一个时隙#7。因此,对应于来自图1f的网络调度表134,接收者的经排序的列表被完全耗尽,并且网络调度表234d的构建完成。

根据网络调度表的重新分区

在过程200的框208处,参考1a和图1f,服务器节点110a使得服务器节点110a-110d根据网络调度表134来重新分区。例如,网络调度表134可以被分发到服务器节点110a-110d中的每个服务器节点,其中服务器节点110a-110d被时间同步,以根据网络调度表134经网络180发送它们各自的数据块。在框208之后,重新分区完成。在数据库上下文中,然后用于执行计划中的下一个数据库运算符的工作负载可以开始。

硬件概述

根据一个实施例,本文所描述的技术由一个或多个专用计算设备实现。专用计算设备可以被硬连线以执行技术,或者可以包括被永久编程以执行技术的诸如一个或多个专用集成电路(asic)或现场可编程门阵列(fpga)之类的数字电子设备,或者可以包括被编程以按照固件、存储器、其它存储装置或者其组合中的程序指令来执行技术的一个或多个通用硬件处理器。这样的专用计算设备还可以将定制的硬连线逻辑、asic或fpga与定制的编程组合来实现技术。专用计算设备可以是结合硬连线和/或程序逻辑来实现技术的台式计算机系统、便携式计算机系统、手持式设备、联网设备或者任何其它设备。

例如,图3是示出本发明的实施例可以在其上实现的计算机系统300的框图。计算机系统300包括用于传送信息的总线302或者其它通信机构、以及与总线302耦接以用于处理信息的硬件处理器304。硬件处理器304可以是例如通用微处理器。

计算机系统300还包括耦接到总线302以用于存储信息和要由处理器304执行的指令的主存储器306,诸如随机存取存储器(ram)或其它动态存储设备。主存储器306还可以被用于在要由处理器304执行的指令执行期间存储临时变量或其它中间信息。这样的指令当存储在处理器304可访问的存储介质中时,使得计算机系统300成为被定制以执行指令中指定的操作的专用机器。

计算机系统300还包括耦接到总线302的只读存储器(rom)308或者其它静态存储设备,以用于为处理器304存储静态信息和指令。诸如磁盘或光盘之类的存储设备310被提供并且被耦接到总线302,以用于存储信息和指令。

计算机系统300可以经由总线302耦接到显示器312(诸如阴极射线管(crt)),以用于向计算机用户显示信息。包括字母数字键和其它键的输入设备314被耦接到总线302,以用于向处理器304传送信息和命令选择。另一种类型的用户输入设备是诸如鼠标、轨迹球或者光标方向键之类的光标控制器316,以用于向处理器304传送方向信息和命令选择以及用于控制显示器312上的光标移动。这种输入设备通常具有允许设备在平面中指定位置的在两个轴(第一轴(例如,x)和第二轴(例如,y))上的两个自由度。

计算机系统300可以使用与计算机系统结合使得计算机系统300成为专用机器或者将计算机系统300编程为专用机器的定制的硬连线逻辑、一个或多个asic或fpga、固件和/或程序逻辑来实现本文所描述的技术。根据本发明的一个实施例,响应于处理器304执行包含在主存储器306中的一条或多条指令的一个或多个序列,本文的技术由计算机系统300执行。这样的指令可以从诸如存储设备310之类的另一存储介质读取到主存储器306中。包含在主存储器306中的指令序列的执行使得处理器304执行本文所描述的过程步骤。在替代实施例中,硬连线的电路系统可以代替软件指令或者与软件指令结合使用。

如本文所使用的,术语“存储介质”是指存储使得机器以特定方式操作的数据和/或指令的任何介质。这样的存储介质可以包括非易失性介质和/或易失性介质。非易失性介质包括例如光盘或磁盘,诸如存储设备310。易失性介质包括动态存储器,诸如主存储器306。存储介质的常见形式包括:例如,软盘、柔性盘、硬盘、固态驱动器、磁带、或者任何其它磁性数据存储介质、cd-rom、任何其它光学数据存储介质、具有孔的图案的任何物理介质、ram、prom以及eprom、flash-eprom、nvram、任何其它存储器芯片或盒式磁带。

存储介质与传输介质不同但是可以与传输介质结合使用。传输介质参与在存储介质之间传送信息。例如,传输介质包括同轴线缆、铜线和光纤,这些同轴线缆、铜线和光纤包括包含总线302的线。传输介质还可以采取声波或光波的形式,诸如在无线电波和红外数据通信期间产生的声波或光波。

将一条或多条指令的一个或多个序列承载到处理器304以供执行可以涉及各种形式的介质。例如,指令最初可以被承载在远程计算机的磁盘或固态驱动器上。远程计算机可以把指令加载到它的动态存储器中并且使用调制解调器经电话线发送指令。计算机系统300本地的调制解调器可以接收电话线上的数据并且使用红外发射器将数据转换成红外信号。红外检测器可以接收红外信号中承载的数据,而适当的电路系统可以把数据放在总线302上。总线302把数据承载到主存储器306,处理器304从主存储器306检索指令并且执行指令。由主存储器306接收的指令可以可选地在由处理器304执行之前或之后被存储在存储设备310上。

计算机系统300还包括耦接到总线302的通信接口318。通信接口318提供耦接到网络链路320的双向数据通信,其中网络链路320连接到局域网322。例如,通信接口318可以是提供到对应类型的电话线的数据通信连接的综合业务数字网络(isdn)卡、线缆调制解调器、卫星调制解调器或调制解调器。作为另一个示例,通信接口318可以是提供到兼容的局域网(lan)的数据通信连接的lan卡。无线链路也可以被实现。在任何这样的实现中,通信接口318发送和接收电信号、电磁信号或光信号,这些电信号、电磁信号或光信号承载表示各种类型的信息的数字数据流。

网络链路320通常通过一个或多个网络提供到其它数据设备的数据通信。例如,网络链路320可以通过局域网322提供到主机计算机324或者到由因特网服务提供商(isp)326运营的数据设备的连接。isp326又通过现在通常被称为“因特网”328的全球分组数据通信网络提供数据通信服务。局域网322和因特网328两者都使用承载数字数据流的电信号、电磁信号或光信号。通过各种网络的信号以及在网络链路320上并且通过通信接口318的信号是传输介质的示例形式,其中这些信号承载到计算机系统300的数字数据以及承载来自计算机系统300的数字数据。

计算机系统300可以通过网络(多个网络)、网络链路320和通信接口318发送消息和接收包括程序代码的数据。在因特网示例中,服务器330可以通过因特网328、isp326、局域网322和通信接口318传送对应用程序的请求代码。

接收的代码可以在它被接收到时由处理器304执行,和/或被存储在存储设备310或其它非易失性存储装置中以供以后执行。

在前面的说明书中,参考依实施方式不同的许多具体细节描述了本发明的实施例。因此,什么是本发明以及申请人旨在将什么作为本发明的唯一且排他的指示物是以权利要求发布的具体形式从本申请发布的权利要求集合,包括任何后续补正。本文对于在这样的权利要求中包含的术语明确阐述的任何定义将决定如权利要求中使用的这样的术语的含义。因此,没有在权利要求中明确记载的任何限制、元素、性质、特征、优点或属性不应当以任何方式限制这样的权利要求的范围。因此,说明书和附图应当被视为是说明性的而不是限制性的。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1