用于集群中的基于联接的查询处理的工作负载感知的数据放置的制作方法

文档序号:13041838阅读:124来源:国知局
用于集群中的基于联接的查询处理的工作负载感知的数据放置的制作方法与工艺

本发明一般涉及数据库管理系统,并且更具体而言涉及集群辅助的数据库管理系统。



背景技术:

查询处理已经针对基于盘的系统被优化,因为这些系统可以容纳处理对其进行操作的非常大的表。查询处理中的常见操作是对非常大的表的联接(join)操作。这种联接操作可能引发对盘系统的许多i/o操作,从而降低性能。基于盘的系统的替代物是计算节点的集群,这些计算节点中的每个计算节点具有处理器、适量的存储器和用于存储由查询处理访问的表数据的非持久性存储装置,并且这些计算节点中的每个计算节点通过网络被联接在一起。但是,计算节点的集群可以具有非常大的数量,实际上可以具有数千个节点。大量节点的聚合的存储器和处理能力提供了集群与基于盘的系统相比的益处。

但是,由于与基于盘的系统的盘存储装置相比,集群的计算节点具有相对小的存储器,因此每个节点可能不能存储查询中的联接操作所需的所有数据库对象。因此,为了完成联接操作,数据可能需要在节点之间来回转移。这种跨集群网络的数据运输增加了查询处理的传输延迟,并且可能使得完成联接操作的成本比在基于盘的系统上的成本更高。为了从集群获得最大的性能,需要一种机制来最佳地将来自数据库对象的数据放置到集群节点上,以最小化网络延迟对诸如联接之类的操作的查询处理的影响。

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

附图说明

在某些实施例的附图中,其中相同的附图标记贯穿各图指代对应的部件:

图1是描绘根据一个或多个实施例的用于复制或去规范化(de-normalization)数据放置方案选择的过程的流程图。

图2是描绘根据一个或多个实施例的用于数据放置方案的递归选择的过程的流程图。

图3是描绘在实施例中用于对集群上的联接表进行共同分区的过程的流程图。

图4是示出其上可以实现本方法的实施例的计算机系统的框图。

具体实施方式

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

总体概述

为了加速在基于集群的数据库管理系统(dbms)上的联接操作的处理,本文描述了用于选择用于跨集群的节点来分布表的最佳数据放置方案的技术。可以通过分析可以在dbms上执行的一组查询(诸如工作负载集)来得到数据放置方案。在实施例中,针对表的大小来评估来自工作负载集的表以确定表或表的部分是否可以跨集群的节点被复制。可以针对表的复制或去规范化数据放置方案来评估集群存储器空间。如果表大小满足集群节点存储器限制,那么可以基于工作负载集的估计的执行成本来选择复制或去规范化方案。

在实施例中,接下来,对于针对复制或去规范化没有被选择的每个表,可以选择共同分区方案。如本文所使用的,分区是指基于特定键列中的值集合将表拆分成被称为分区的多个部分。如本文所使用的,共同分区是指在多个表中的每个表的特定键列中的相同值集合上对该多个表进行分区。对应于特定键列中的相同值集合的分区可以被存储在集群的相同节点上。

在联接操作中使用的列(在本文中被称为“联接键”)被用于在多个分区中对表进行分区,然后,该多个分区跨集群的节点被存储。对于关于查询中的多个联接键被联接的表,本文还描述了用于选择联接键以最小化工作负载集的执行成本的技术。

基于工作负载集的数据放置方案

在实施例中,dbms可以评估用于基于查询的工作负载集在集群中存储数据库管理系统的表的替代数据放置方案。数据放置方案指定跨节点集群的表的分布。工作负载集是查询和查询的执行计划的集合。根据一个实施例,工作负载集被存储为sql调优集(sqltuningset)。sql调优集在于2004年9月7日提交的申请号为10/936,449的“sqltuningsets”中描述,该申请的全部内容通过引用并入本文。

在实施例中,dbms可以评估工作负载集,尤其是评估执行计划,以识别联接操作。这些联接操作中的每个联接操作中的表关于这些表中的每个表中的特定列被联接,该特定列在本文被称为“联接键”,并且这些表被称为“联接表”。在联接操作中与另一个联接表联接的联接表在本文中被称为“共同联接表”。当联接表被包括在多于一个联接操作中时,该表可以包含多个联接键。例如,工作负载集可以包括第一查询“select*fromainnerjoinbonb.col1=a.col1”以及第二查询“select*fromcinnerjoinbonb.col2=c.col1”。根据这两个查询,联接表a和c各自分别具有单个联接键col1和col2。但是,联接表b具有两个联接键:col1和col2。在这个示例中,dbms可以执行两个联接操作:基于来自a.col1和b.col1列的值的比较的联接表b与共同联接表a的联接操作;以及基于b.col2和c.col1列的值的比较的联接表c与共同联接表b的联接操作。

在实施例中,可以对跨集群节点的联接表执行联接操作。为了对被存储在不同集群节点上的联接表执行具有联接操作的查询,dbms可以在查询运行时聚合来自一个或多个公共节点上的联接表的数据。然后,dbms可以利用公共节点的处理能力来比较和过滤来自联接表的联接键的值。在相关实施例中,dbms可以通过在共同联接表被存储在其上的每个节点上复制联接表中的一个联接表来执行联接操作,以及请求这些节点执行联接键值的处理。因为联接表被广播到共同联接表的节点上,以便这些节点执行联接操作,因此这个联接操作被称为“广播联接”。例如,继续以上示例,如果第一查询在节点的集群上被执行,那么dbms可以在存储共同联接表a的所有节点上复制联接表b,或者反过来也一样,在存储共同联接表b的所有节点上复制联接表a。在这些节点中的每个节点上,联接键a.col1和b.col1被比较和过滤以产生来自表a和b的其中a.col1和b.col1列的值匹配的行的数据集。还可以使用类似的方法在集群上执行第二查询。

复制数据放置方案

在实施例中,dbms可以在查询执行之前通过在集群的节点上复制联接表来分布联接表。用于联接表的这种放置方案在本文中被称为“复制方案”。根据复制方案,dbms可以在每个集群节点的存储器中存储联接表的副本,以改善集群上的查询执行。通过在每个节点上存储联接表的副本,集群中的联接操作可以完全在节点上本地执行,而无需从其它节点传输联接表的数据。消除查询运行时集群网络的延迟可以对查询性能产生积极的影响。在相关实施例中,dbms可以在集群中的节点的子集上复制联接表。dbms可以仅在存储工作负载集中的查询的共同联接表的节点上复制联接表。通过仅在集群中的节点的子集上复制联接表,dbms可以节省在子集之外的节点中的存储器空间。但是,如果dbms执行包含联接表与不是工作负载集中的共同联接表之一的另一个表的联接操作的另一个查询,那么dbms可能必须在查询运行时在存储共同联接表的节点上复制联接表。

去规范化数据放置方案

在实施例中,dbms可以在集群上的查询执行之前,通过对在集群的存储共同联接表的节点上的联接表去规范化来分布联接表。这种放置方案在本文中被称为“去规范化方案”。在相关实施例中,可以通过关于联接键执行联接表与共同联接表的完全外部联接操作来实现去规范化。该操作将生成联接的数据集,该联接的数据集包含联接表的在联接键上一起对齐的所有行。如果联接表的某行包含共同联接表中未找到的联接键值,那么共同联接表将不包含用于联接的数据集的该行的值。为了对跨集群的联接表去规范化,联接表可以被复制到存储共同联接表的节点,然后dbms可以生成包含联接表和共同联接表的联接的数据集,并且将该数据集存储在节点上。例如,如果共同联接表被存储在两个或更多个节点上,那么联接表可以被去规范化,其中共同联接表的一部分被存储在该两个或更多个节点中的每个节点上。因此,所生成的联接的数据集可以被存储在两个或更多个节点上。

继续以上示例,在实施例中,可以通过将联接表b的副本存储在存储共同联接表a的节点集合中的每个节点上来复制联接表b。在节点集合中的每个节点上,对表a与表b执行完全外部联接操作,以生成联接的数据集。共同联接表a的其中a.col1值等于b.col1的行被联接在一起。共同联接表a的其中a.col1值在b.col1中没有相等值的行被添加到联接的数据集,其中与表b对应的列不包含用于这些行的值。类似地,联接表b的其中b.col1值在a.col1列中没有相等值的行被添加到联接的数据集,其中与表a对应的列不包含值。一旦被联接,则联接的数据集包含存储在集群节点集合上的联接表b的数据和共同联接表a的数据。因此,当以上示例的第一查询由集群上的dbms执行时,可以不需要复制,此外,也不需要表a和表b的行的联接:节点可能仅需要在运行时执行过滤操作。过滤操作可以过滤掉联接的数据集中不包含用于共同联接表a行或联接表b行的值的行,仅留下数据集的已经基于联接键被匹配的行。然后,dbms可以基于过滤后的联接的数据集来返回表a与表b的联接操作。通过仅对节点的集群执行过滤操作,去规范化方案可以节省节点之间的数据传输的延迟时间以及在节点上执行匹配操作的时间。

共同分区数据放置方案

在实施例中,dbms还可以在集群的节点上对联接表与共同联接表进行共同分区(co-partition)。由联接表与共同联接表的共同分区得到的对应分区被存储在同一节点上。通过在节点的集群上对联接表进行共同分区的这种放置方案在本文中被称为“共同分区方案”。

在实施例中,dbms可以基于联接键对联接表与共同联接表进行共同分区。联接键值可以被划分为值的集合,这些值的集合在本文中被称为“区块(division)”。在相关实施例中,区块可以基于范围,这些区块在本文中被称为“范围区块”。例如,当联接键具有数值类型(integer,number或其它)时,那么联接键值可以基于数值范围进行范围划分;当联接键具有串类型(varchar或其它)时,那么联接键值可以基于字母数字字符值范围来划分。

在将联接键划分为值的集合之后,dbms可以将联接表和共同联接表的联接键列中的值与这些集合中的每个集合进行匹配。在特定集合中具有匹配的联接键值的行然后可以被存储在集群的节点上。因此,集群的节点可以包含来自联接表的分区和来自共同联接表的分区,其中这两个分区都包括具有与特定集合中的联接键值匹配的联接键值的行。

在相关实施例中,联接键值的区块的数量可以依赖于可用的节点的数量以及联接表和共同联接表可以被存储在其上的可用节点上的存储器空间的可用性。集群节点可以至少容纳联接表的分区和共同联接表的分区。对应分区的大小可以直接依赖于包含与联接键的区块的值匹配的值的行的数量。因此,dbms可以操纵联接键值的区块的数量,以更好地匹配集群上可用的节点的数量和存储器空间。

在实施例中,dbms可以对在集群上被共同分区的联接表和共同联接表执行联接操作。dbms可以通过联接联接表和共同联接表的被存储在同一节点上的分区中的每个分区来执行联接操作。由于这些分区与联接键的同一区块对应,因此在节点上本地执行的每个联接可以产生联接操作的得到的数据集的一部分。然后,dbms可以聚合得到的数据集的所有部分,以返回该数据集以作为联接操作的输出。

继续上面的第一查询的工作负载集的示例,dbms可以确定在节点1和节点2上针对第一查询联接操作对表a和表b进行共同分区。为了对表a和表b进行分区,dbms导出联接键a.col1和b.col1列的值的全部范围。例如,如果a.col1和b.col1是整数类型,并且a.col1包含最小值10和最大值1000,而b.col1具有相应的最小值1和最大值100,那么联接键的全部范围将为值1-1000。然后该全部范围被划分为值的两个子范围,诸如1-500和501-1000。表a的由具有在1-500范围中的a.col1值的行组成的第一分区被存储在节点1上,而表a的另一个分区被存储在节点2上,在表a的该另一个分区中,行具有在501-1000范围中的a.col1列。类似地,表b的由具有在1-500范围内的b.col1列的行组成的第一分区也被存储在节点1上,而表b的另一个分区也被存储在节点2上,在表b的该另一个分区中行具有在501-1000范围中的b.col1列。因此,当dbms执行第一查询时,dbms可以分别针对表a和表b的第一分区在节点1上执行内部联接操作。该操作将生成针对联接键的1-500值范围的得到的数据集。dbms还可以分别针对表和表b的其它分区在节点2上执行内部联接操作。该操作将生成针对联接键的501-1000值范围的另一个得到的数据集。然后,dbms可以聚合两个数据集,以获得针对第一查询的结果的完整数据集。

选择数据放置方案

在实施例中,基于在工作负载集的查询中的联接表和联接操作的属性,联接表可以被复制到集群的节点。dbms可以评估联接表的大小,并且确定联接表可以被复制到集群的节点。dbms可以通过将联接表的大小与集群中节点的存储器的大小进行比较来确定联接表可以被复制。如果联接表的大小小于节点处可用的存储器,那么dbms可以在集群的该节点上复制和存储该表的副本。在相关实施例中,dbms可以针对联接表的复制来评估集群的每一个节点。

除了大小考虑之外,dbms还可以考虑由于联接表的复制对工作负载集执行成本的改善。“工作负载集执行成本”是指用于执行工作负载集中的每个查询的系统资源成本的总和。因此,工作负载集执行成本的改善可以是由于联接操作需要较少的系统资源。例如,当在集群上执行联接操作时,dbms不需要向具有存储在其上的联接表的副本的节点广播联接表。因此,dmbs可以显著地减少工作负载集执行成本。

在另一个实施例中,可以通过对复制的联接表进行去规范化来进一步改善工作负载集执行成本。对联接表去规范化去除了在存储联接表和共同联接表的节点执行联接操作期间执行匹配的必要性。因此,节点可以在执行时仅执行过滤操作以产生针对联接操作的得到的数据集。

图1是描绘根据一个或多个实施例的、用于选择用于工作负载集中的联接表的复制或去规范化数据放置方案的过程的流程图。在框105处,dbms基于默认数据放置方案来估计工作负载集执行成本。默认数据放置方案可以包括用于工作负载集中的表的复制数据放置方案、去规范化数据放置方案或共同分区数据放置方案。在框110处,从工作负载集的联接操作中选择先前还未被评估的联接表。

在框120处,基于对相关集群节点上的存储器空间可用性的评估,dbms可以确定是否可以在集群的每个相关节点上复制联接表。相关节点可以包括集群的所有节点或者可以仅包括集群中的具有存储在节点上的共同联接表的那些节点。如果可以在集群的每个相关节点上复制联接表,那么在框125处,基于每个节点上正在复制和可用的联接表来评估工作负载集执行成本。在框135处,如果新估计的工作负载集执行成本小于先前估计的工作负载集执行成本(诸如来自框105的默认执行成本),那么在框137处为联接表选择该复制方案。

在相关实施例中,可以通过对联接表的去规范化来进一步减少工作负载集执行成本。在框140处,dbms评估在相关节点上用于去规范化的空间可用性。如果对于联接表的去规范化没有存储器可用性,那么过程进行到框155以选择下一个联接表。否则,在框143处,dbms通过在具有共同联接表的复制节点上对联接表进行去规范化来估计工作负载集执行成本。

基于在框143处的执行成本的确定,如果在框145处去规范化方案的成本的计算结果小于复制方案的成本,那么可以在框150处为集群上的联接表选择去规范化方案。无论为联接表选择了去规范化还是复制,过程都进行到框155。在框155处,从工作负载集的查询中的联接操作中的多个联接表中选择下一个联接表。

图1描绘的过程可以在第一查询和第二查询的上述工作负载集的示例上被示出,其中表a、表b和表c基于表的各自大小而有资格或无资格在集群的每个节点上被复制。当在框110处选择表a时,将通过估计第一查询和第二查询的执行成本来针对复制而评估表a。由于表a将在集群的每个节点上可用,因此对表a与表b的第一查询联接操作将具有较少的执行成本,而第二查询执行成本将保持不变,因为表a不是联接操作的一部分。因此,在框137处,表a针对复制方案被选择,因为复制将改善工作负载集执行成本。

接下来,在框110处针对放置方案确定而选择表b。复制表b将不会改善第一查询的执行成本,因为第一查询联接操作的表a将已经在集群的每个节点上可用。但是,复制表b将改善其中表b与表c联接的第二查询的执行成本,因为表b将在每个节点上可用,并且与表c的联接操作可以在节点上本地执行。由于表b和表a两者都将被存储在每个节点上,因此,通过对表a与表b进行去规范化来改善第一查询的联接操作,可以进一步改善工作负载集执行成本。最后,当在框110处选择表c进行评估时,表c的复制将不会改善任一查询的执行成本。第二查询的执行将已经在本地执行,因为每个节点都已经包含表b,并且第一查询不包括对表c的任何操作。

递归选择数据放置方案

在相关实施例中,可以针对先前评估的共同联接表中的每个共同联接表递归执行图1中的操作。一旦在框137处针对复制方案联接表被选择,则可以对于已经针对复制方案被选择的联接表的所有已经评估的共同联接表重复框120至150中的操作。在为联接表选择复制方案的情况下,许多查询的执行成本可能不受先前评估的共同联接表的复制的影响。例如,继续先前评估的工作负载集的示例,当选择表b进行复制时,先前选择表a进行复制不再影响执行成本。因此,当再次针对复制方案重新评估表a时,工作负载集的成本将保持不变,因为表b在集群的每个节点上可用,并且表a与表b的联接操作可能已经在没有表a的复制的情况下在节点上本地执行。因此,仅表b的复制将类似地降低工作负载集的执行成本,而不需要跨集群的节点复制表a或表c。因此,对联接表的递归评估不仅可以产生工作负载集的成本最低的执行,而且可以产生用于集群的存储器空间最佳的数据放置方案。

根据替代的一个或多个实施例,图2是描绘用于递归地选择用于联接表的复制数据放置方案或去规范化数据放置方案的过程的流程图。在框210处,来自工作负载集的联接表可以各自基于其大小和集群节点存储器空间来被评估,以确定哪些联接表有资格被复制。在框215处,基于每个有资格的联接表的复制单独地或与其它有资格的联接表的复制相结合地估计工作负载集的执行成本。为了这样做,可以首先估计有资格的联接表的复制的工作负载集执行成本。然后,可以为工作负载集估计有资格的表的复制以及另一个有资格的表的复制的第二执行成本。然后,递归地重复该过程,直到估计了复制有资格的联接表的所有组合的执行成本。在框220处,确定产生最少工作负载集执行成本的有资格的联接表的组合,并且对于该组合中的有资格的联接表中的每个联接表选择复制方案。如果两个或更多个组合具有相同的工作负载集执行成本,那么可以选择具有最少数量的表的组合以节省集群的节点上的存储器空间。

在相关实施例中,如果单独复制有资格的联接表不能改善工作负载集执行计划,那么包括该有资格的联接表的任何组合可能都不需要被评估。因此,根据该实施例,如果工作负载集执行成本对于复制某一有资格的联接表的集群被估计为是相同的,那么可以不对复制该有资格的联接表与任何其它有资格联接表的集群估计工作负载集执行成本。

在另一个相关实施例中,对于已经针对复制方案被选择的有资格的联接表,在框225处还针对去规范化方案来估计工作负载集执行成本。对已经有资格进行复制的联接表与共同联接表进行去规范化的工作负载集执行成本被估计。如果对于这样的有资格的联接表,工作负载集成本被估计为改善,那么在框230处选择去规范化方案。

图2的实施例可以在第一查询和第二查询的上述工作负载集的示例上示出,其中表a、表b和表c基于它们各自的大小有资格被复制到集群的每个节点上。在框215处,仅复制表a;仅复制表b;仅复制表c;复制表a和表b;复制表b和表c;复制表a和表c;以及复制表a、表b和表c的工作负载集执行成本分别各自被计算。根据相关实施例,为了减少用于估计复制的工作负载集执行成本的表组合的数量,可以修剪组合的数量。例如,如果仅复制表a的估计工作负载集执行成本没有被改善,那么诸如表a和表b;表a和表c;以及表a、表b和表c之类的包含表a的组合可能不需要被估计。类似地,修剪可以对表b和表c进行。在框220处,来自具有最少执行成本的组合的表的表针对复制方案被选择。所选择的表还可以针对去规范化被考虑,如在框225和框230处所描述的。

共同分区数据放置方案

在实施例中,由于集群具有有限的存储容量,在每个节点上允许用于复制的存储器是有限的,因此并不是所有联接表都有资格进行复制。无资格的联接表可以在集群上与共同联接表一起被共同分区。由于联接表可以在不同联接键上与多个表共同联接,因此基于不同联接键对联接表进行共同分区的所有不同组合可以针对工作负载集被评估。可以为集群选择具有最低的估计工作负载集执行成本的共同分区方案。

图3是描绘在实施例中用于在集群上对联接表进行共同分区的过程的流程图。在框305处,从工作负载集中选择联接表,并且在框310处还可以选择联接表是其一部分的所有联接操作。基于在框315处的判定,如果对于所选择的联接操作中的联接表仅存在单个联接键,那么在框330处,该联接键被选择以用于联接表的共同分区。

但是,联接表可以是使用不同联接键的多个联接操作的一部分。如果对于所选择的联接操作中的联接表存在多个联接键,那么在框320处可以根据用于相应的联接键中的每个联接键的共同分区方案来估计工作负载集执行成本。在相关实施例中,如果联接表的关于特定联接键的共同分区方案已经作为相同联接操作的共同联接表的评估的一部分进行了评估,那么可以使用先前估计的执行成本。

当另一个联接键被用于联接表的共同分区时,工作负载集执行成本可能改变。在框325处,该过程对于联接键中的每个联接键评估共同分区方案,并且在框320处估计相应方案中的每个方案的工作负载集执行成本。一旦基于成本最少的工作负载集执行成本选择了用于联接表的共同分区的联接键,则然后在框335处针对工作负载集中的所有联接表重复该过程。在框340处,为联接表基于所选择的联接键和估计的工作负载集成本来选择共同分区方案。

图3的实施例可以在第一查询和第二查询的上述工作负载集的示例上示出,其中表a、表b和表c具有足够大的大小而无资格用于复制方案。表a仅是工作负载集中与表b的单个联接操作的一部分。因此,如在“共同分区数据放置方案”部分中所描述的,针对关于联接键列a.col1与共同联接表b进行共同分区来评估表a。那么表b可能类似地被评估两次,因为表b是两个联接操作的一部分:一个是在联接键列b.col1上与表a的联接操作,另一个是在联接键列b.col2上与表c的联接操作。由于已经为第一查询联接操作估计了工作负载集执行成本,因此仅需要为基于b.col2的共同分区估计工作负载执行成本。在框330处比较工作负载集执行成本,并且选择具有最低成本的联接键。如果所选择的联接键是b.col2,那么在框340处,基于联接键b.col2和c.col1的用于表b和表c的共同分区方案被选择。否则,在框340处,基于联接键b.col1和a.col1的用于表b和表a的共同分区方案被选择。

在相关实施例中,联接键值的区块可能影响共同分区方案的工作负载集执行成本。联接键值的区块的大小决定了联接表的分区大小,并且因此可以依赖于集群的节点上可用存储器的大小。例如,如果集群的每个节点都具有很少的存储器空间,那么为了在节点上适合,联接键值的区块可以较小,以便为联接表和共同联接表产生较小的分区。联接键值的较小的区块可以与来自具有与区块中的每个区块匹配的值的联接表和共同联接表的较少数量的行对应。因此,这种共同分区可以将联接表与共同联接表分区成更多数量的更小的分区。因此,可能需要集群中更多数量的节点来跨集群存储联接表。由于联接表的数据可能变得跨集群节点更加分散,因此可能在包括这个操作和其它联接操作的操作执行中引入附加的网络延迟时延。因此,工作负载集执行成本可以依赖于联接键的选择而变化。当在图3的框325处为每个联接键估计工作负载集执行成本时,该过程可以考虑这种依赖性。

数据库管理系统

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

在实施例中,dbms可以被连接到可以存储一个或多个表的节点的集群或者包括可以存储一个或多个表的节点的集群。dbms可以与管理存储在持久性存储装置上的表类似地管理存储在节点的集群上的表。

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

如本文所使用的,“查询”是指数据库命令,并且可以以符合数据库语言的数据库语句的形式。在一个实施例中,用于表达查询的数据库语言是结构化查询语言(sql)。存在许多不同版本的sql,一些版本是标准的,一些版本是专有的,并且存在各种扩展。数据定义语言(“ddl”)命令被发布到数据库服务器,以创建或配置数据库对象,诸如表、视图或复杂数据类型。sql/xml是在对象-关系数据库中操纵xml数据时使用的sql的常见扩展。虽然本文使用术语“sql”来描述本发明的实施例,但是本发明不仅仅限于该特定的数据库查询语言,并且可以与其它数据库查询语言和构造结合使用。

客户端可以通过建立数据库会话(在本文中被称为“会话”)向数据库服务器发出一系列请求,诸如用于执行查询的请求。会话包括为客户端建立的到数据库服务器(诸如数据库实例)的特定连接,客户端可以通过该连接发出一系列请求。数据库服务器可以维护关于会话的会话状态数据。会话状态数据反映会话的当前状态,并且可以包含为其建立会话的用户的身份、由用户使用的服务、对象类型的实例、语言和字符集数据、关于会话的资源使用的统计数据、由会话内执行软件的进程生成的临时变量值、以及用于光标和变量以及其它信息的存储。会话状态数据还可以包含为会话配置的执行计划参数。

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

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

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

硬件概述

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

例如,图4是示出本方法的实施例可以在其上被实现的计算机系统400的框图。计算机系统400包括用于传送信息的总线402或者其它通信机制、以及与总线402耦接以用于处理信息的硬件处理器404。硬件处理器404可以是例如通用微处理器。

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

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

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

计算机系统400可以利用与计算机系统相结合使计算机系统400成为专用机器或者把计算机系统400编程为专用机器的定制的硬连线逻辑、一个或多个asic或fpga、固件和/或程序逻辑来实现本文描述的技术。根据一种实施例,本文的技术由计算机系统400响应于处理器404执行包含在主存储器406中的一条或多条指令的一个或多个序列而被执行。这样的指令可以从诸如存储设备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或者到由互联网服务提供商(isp)426操作的数据设备的连接。isp426又通过现在通常被称为“互联网”428的全球分组数据通信网络来提供数据通信服务。局域网422和互联网428两者都使用携带数字数据流的电信号、电磁信号或光信号。通过各个网络的信号以及在网络链接420上并且通过通信接口418的信号是传输介质的示例形式,这些信号把数字数据带到计算机系统400或者携带来自计算机系统400的数字数据。

计算机系统400可以通过(一个或多个)网络、网络链接420和通信接口418发送消息和接收包括程序代码的数据。在互联网示例中,服务器430可以通过互联网428、isp426、局域网422和通信接口418发送对于应用程序的请求的代码。

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

云计算概述

本文描述的技术使用一个或多个处理解决方案来实现,处理解决方案的示例包括分布式系统、集群计算系统和云计算系统。在实施例中,dbms和/或节点的集群可以是云计算系统的一部分。云计算系统实现以下中的一个或多个:云存储、云处理、云通信和任何其它类型的云计算服务。此外,云计算系统可以在使用时按使用付费(pay-for-what-you-use-as-you-use-it)模式下操作、在固定订阅模型下操作等。在该实施例中,属于dbms和节点的集群的功能或者属于本说明书内的其它实体的功能的任何部分(或全部)可经由在云计算系统处暴露的接口来控制。

在前面的说明书中,已经参考依实施方式而不同的众多具体细节描述了本发明的实施例。因此,说明书和附图被认为是说明性的而不是限制性的。本发明的范围的唯一且排他的指示物,以及申请人旨在作为本发明的范围的内容是以这些权利要求产生的具体形式从本申请发布的权利要求集合的字面范围和等价范围,包括任何后续的改正。

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