发明内容
为了解决以上技术问题,本说明书实施例的主要目的在于提供一种失配值的处理方法、系统以及电子设备,以解决现有技术中对两张关系表进行重分区时数据传输效率低下,以及两张关系表进行连接时计算效率低下的问题。
本说明书的一个或多个实施例的技术方案是通过以下方式实现的:
本说明书实施例提供一种失配值的处理方法,当被重分区表与参照表按照预设重分区方式进行重分区,并且所述被重分区表与参照表按照预设连接方式进行连接的过程中出现失配值时,判断所述预设连接方式是否为约束连接方式,以及所述预设重分区方式是否为约束重分区方式;
根据判断结果,执行不同的执行策略对所述失配值进行处理。
本说明书实施例还提供一种失配值的处理方法,该处理方法还包括生成重分区的计划,所述计划包括:
被重分区表与参照表之间的预设连接方式和预设重分区方式;
被重分区表与参照表之间的约束连接方式、约束重分区方式;
不同约束重分区方式和不同约束连接方式采用的执行策略;
根据预设连接方式与约束连接方式,预设重分区方式与约束重分区方式之间的关系,执行相应的执行策略;
执行所述重分区的计划,以实现对所述失配值的处理。
本说明书实施例还提供一种失配值的处理方法,所述预设连接方式包括仅含有等值条件的内连接/半连接、仅含有等值条件的左外连接/左反连接、仅含有等值条件的右外连接/右反连接或全连接中的一种;所述预设重分区方式包括左表为被重分区表,右表为参照表;或者,右表为被重分区表,左表为参照表中的一种;
所述约束连接方式包括仅含有等值条件的内连接/半连接、仅含有等值条件的左外连接/左反连接、仅含有等值条件的右外连接/右反连接和全连接;所述约束重分区方式包括左表为被重分区表,右表为参照表;以及,右表为被重分区表,左表为参照表。
本说明书实施例还提供一种失配值的处理方法,所述判断所述预设连接方式是否为所述约束连接方式,和/或所述预设重分区方式是否为所述约束重分区方式的结果,执行不同的所述执行策略对所述失配值进行处理,具体包括:
判断所述预设连接方式是否为所述约束连接方式中的仅含有等值条件的内连接/半连接,若是,则执行第一执行策略;
否则,判断所述预设连接方式是否为所述约束连接方式中的仅含有等值条件的左外连接/左反连接、仅含有等值条件的右外连接/右反连接或全连接。
本说明书实施例还提供一种失配值的处理方法,所述第一执行策略为:将所述失配值丢弃。
本说明书实施例还提供一种种失配值的处理方法,当所述预设连接方式不为所述约束连接方式中的仅含有等值条件的内连接/半连接时,判断所述预设连接方式是否为所述约束连接方式中的仅含有等值条件的左外连接/左反连接,若是,则执行第二执行策略;
否则,判断所述预设连接方式是否为所述约束连接方式中的仅含有等值条件的右外连接/右反连接或全连接。
本说明书实施例还提供一种失配值的处理方法,所述第二执行策略为:
判断所述预设被重分区表是否为所述约束被重分区表中的左表,当所述预设被重分区表为所述约束被重分区表中的左表时,将所述失配值发送至所述参照表的分区中;否则,将所述失配值丢弃。
本说明书实施例还提供一种失配值的处理方法,将所述失配值发送至所述参照表中的分区中具体包括:
轮流选取所述参照表的不同分区,并将所述失配值发送至轮流选取的所述参照表的不同分区中。
本说明书实施例还提供一种失配值的处理方法,当所述预设连接方式不为所述约束连接方式中的仅含有等值条件的左外连接/左反连接时,判断所述预设连接方式是否为所述约束连接方式中的仅含有等值条件的右外连接/右反连接,若是,则执行第三执行策略;
否则,判断所述约束连接方式是否为所述约束连接方式中的仅含有等值条件的全连接。
本说明书实施例还提供一种失配值的处理方法,所述第三执行策略为:
判断所述预设被重分区表是否为约束被重分区表中的右表,当所述预设被重分区表为约束被重分区表中的右表时,将所述失配值发送至所述参照表的分区中;
否则,将所述失配值丢弃。
本说明书实施例还提供一种失配值的处理方法,将所述失配值发送至所述参照表中的分区中具体包括:
轮流选取所述参照表的不同分区,并将所述失配值发送至轮流选取的所述参照表的不同分区中。
本说明书实施例还提供一种失配值的处理方法,当所述预设连接方式不为所述约束连接方式中的仅含有等值条件的右外连接/右反连接时,判断所述预设连接方式是否为所述约束连接方式中的仅含有等值条件的全连接,若是,则执行第四执行策略。
本说明书实施例还提供一种失配值的处理方法,所述第四执行策略为:
轮流选取所述参照表的不同分区,并将所述失配值发送至轮流选取的所述参照表的不同分区中。
本说明书实施例还提供一种失配值的处理系统,包括:
处理模块,用于当被重分区表与参照表按照预设重分区方式进行重分区,并且所述被重分区表与参照表按照预设连接方式进行连接的过程中出现失配值时,判断所述预设连接方式是否为约束连接方式,以及所述预设重分区方式是否为约束重分区方式;
根据判断结果,执行不同的执行策略对所述失配值进行处理。
本说明书实施例还提供一种失配值的处理系统,所述处理系统还包括计划生成模块,用于生成重分区的计划,所述计划包括:
被重分区表与参照表之间的预设连接方式和预设重分区方式;
被重分区表与参照表之间的约束连接方式、约束重分区方式;
不同约束重分区方式和不同约束连接方式采用的执行策略;
根据预设连接方式与约束连接方式,预设重分区方式与约束重分区方式之间的关系,执行相应的执行策略;
执行所述重分区的计划,以实现对所述失配值的处理。
本说明书实施例还提供一种失配值的处理系统,所述计划生成模块包括预设连接方式生成子模块、预设重分区方式生成子模块、约束连接方式生成子模块、约束重分区方式生成子模块和执行策略生成子模块;
所述预设连接方式生成子模块,用于生成仅含有等值条件的内连接/半连接、仅含有等值条件的左外连接/左反连接、仅含有等值条件的右外连接/右反连接或全连接中的一种;
所述预设重分区方式生成子模块,用于生成左表为被重分区表,右表为参照表;或者,右表为被重分区表,左表为参照表中的一种;
所述约束连接方式生成子模块,用于生成仅含有等值条件的内连接/半连接、仅含有等值条件的左外连接/左反连接、仅含有等值条件的右外连接/右反连接和全连接;
所述约束重分区方式生成子模块,用于生成左表为被重分区表,右表为参照表;以及,右表为被重分区表,左表为参照表;
所述执行策略生成子模块,用于生成执行策略。
本说明书实施例还提供一种失配值的处理系统,所述执行策略包括:
第一执行策略,将所述失配值丢弃;
第二执行策略,判断所述预设被重分区表是否为所述约束被重分区表中的左表,当所述预设被重分区表为所述约束被重分区表中的左表时,将所述失配值发送至所述参照表的分区中;否则,将所述失配值丢弃;
第三执行策略,判断所述预设被重分区表是否为约束被重分区表中的右表,当所述预设被重分区表为约束被重分区表中的右表时,将所述失配值发送至所述参照表的分区中;否则,将所述失配值丢弃;
第四执行策略,轮流选取所述参照表的不同分区,并将所述失配值发送至轮流选取的所述参照表的不同分区中。
本说明书实施例还提供一种失配值的处理系统,所述处理模块包括:
第一判断模块,用于判断所述预设连接方式是否为所述约束连接方式中的仅含有等值条件的内连接/半连接;
第一执行模块,用于在所述第一判断模块的判断结果为是时,执行所述第一执行策略。
本说明书实施例还提供一种失配值的处理系统,所述处理模块还包括:
第二判断模块,用于在所述第一判断模块的判断结果为否时,判断所述预设连接方式是否为所述约束连接方式中的仅含有等值条件的左外连接/左反连接;
第二执行模块,用于在所述第二判断模块的判断结果为是时,执行所述第二执行策略。
本说明书实施例还提供一种失配值的处理系统,所述处理模块还包括:
第三判断模块,用于在所述第二判断模块的判断结果为否时,判断所述预设连接方式是否为所述约束连接方式中的仅含有等值条件的右外连接/右反连接;
第三执行模块,用于在所述第三判断模块的判断结果为是时,执行所述第三执行策略。
本说明书实施例还提供一种失配值的处理系统,所述处理模块还包括:
第四判断模块,用于在所述第三判断模块的判断结果为否是,判断所述预设连接方式是否为所述约束连接方式中的仅含有等值条件的全连接;
第四执行模块,用于在所述第四判断模块的判断结果为是时,执行所述第四执行策略。
本说明书实施例还提供一种失配值的处理系统,所述将所述失配值发送至所述参照表中的分区中具体包括:
轮流选取所述参照表的不同分区,并将所述失配值发送至轮流选取的所述参照表的不同分区中。
本说明书实施例还提供一种电子设备,包括:
存储器,用于存储程序指令;
处理器,用于执行所述程序指令,以实现上述本说明书实施例中所述的处理方法。
相比于现有技术,本说明书实施例采用的上述至少一个技术方案能够达到以下有益效果:
通过本说明书实施例提供的技术方案,可以实现对失配值更好的处理,根据被重分区表与参照表之间的连接方式以及重分区方式,在保证连接结果计算正确的前提下,确定被重分区表按照参照表的分区方式进行分区出现失配值时对失配值的处理方式。避免了将被重分区表中的所有数据全部发送至参照表中带来的数据传输数量过大导致的数据传输效率低下,以及在进行连接操作时连接效低下的技术问题。提高了跨机器关系表在重分区时的数据传输效率,进而提升连接操作的计算效率。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本说明书实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
在以MPP(大规模并行处理系统)系统架构为基础的关系型数据库中,其中某一张关系表在物理意义上往往是分布在多台机器上的。一般称某张关系表在某台机器中的数据为该关系表的一个分区,划分关系表的这些分区的常用方法是依据关系表中的某几列作为分区键,通过作为分区键的列,利用固定的规则来决定关系表中的数据应当如何分布在各个分区上。当需对这样的关系表做连接时,一种常用的解决方法是将两张关系表的数据先拷贝到同一台机器上然后再进行连接操作。采用这种方式带来的问题是串行的计算方式使得连接计算缓慢,甚至可能因为关系表中的数据量过大而无法继续进行。
为了达到在多台机器上并行执行连接操作的目的,一般需要将两张表的数据进行一定程度的移动。一种方法是对其中一张关系表进行特殊的重分区操作。具体的,当连接键中包含了某一张关系表全部分区键时,可以将另外一张关系表(被重分区的表)按照这张关系表的分区规则进行重分区操作,然后将另一张关系表中相同分区的数据发送到该张关系表的对应分区的机器上再进行连接操作。这种处理方式能够在移动相对较少的数据量的情况下,充分利用MPP架构中的多个CPU,进行并行连接的操作。需要注意的是,这种分区规则可能不适用于被重分区的关系表中的某些行,执行重分区操作时需要对这些行进行特殊的处理。例如A表的三个分区的范围分别是[0,100],[120,150],[160,199],B表按照A表的分区方式进行重分区后与A表进行连接,此时B表中出现了一行,其重分区依赖的键值为201,为了叙述方便,统一把这种情况中出现的这一行称为失配值。
构建在MPP架构之上的关系数据库系统的一个特性就是存储的水平可扩展性以及较强的并行执行能力。一个关系表往往是按照一定的规则进行数据分区并将各个分区的数据打散存储到不同的节点上,并且该分区信息能够在多个节点被访问到,在数据库最为常见的操作就是连接操作。将两张表的数据都打散的处理方式在编程模型框架中的被称为重分区连接,这是一种在MPP架构下进行并行连接操作的经典做法。一种充分利用MPP架构并行处理能力的典型例子就是在多台机器上进行并行的连接操作。这种数据移动到进行并行连接的机器的方法有多种,一种方法是将一张关系表中的所有数据传输到另外一张关系表的每一个分区所在的机器上;另一种方法是将一张关系表按照另外一张关系表的分区方式进行重分区后传输到另一张关系表对应的分区上所在的机器上;还有一种方法是将两张关系表都按照相同的规则进行重分区,然后将两张关系表的数据都传输到相同目的地。但是,仅有第二种方法会遇到出现失配值的情况。
数据重分区后往往需要跨网络将数据传输到另一张表的对应分区所在机器上再进行连接操作。一些基于MPP的通用计算框架,例如Spark或者Flink计算引擎,在处理连接的时候也会遇到数据传输的问题。它们都只提供了上述第一种方法和第三种方法。
以下结合附图,详细说明本说明书的一个或多个实施例提供的技术方案。
如图1所示,为本说明书的一个实施例提供的一种失配值的处理方法的总体流程示意图。该处理方法针对的是在出现适配值的情况下,如何选择对适配的处理方式,是丢弃还是将其发送至相应的关系表中,并不涉及通过该处理方法处理之后的步骤中失配值的具体使用方法(例如将失配值处理后,使用失配值具体去做什么)。本说明书实施例提供的处理方法主要包括以下步骤:预先设定被重分区表与参照表之间的连接方式和重分区方式,然后生成被重分区表与参照表的重分区所有可能的连接方式和所有可能的重分区方式,以及每种可能的连接方式和可能的重分区方式对应的处理方式。然后判断预先设定的被重分区表与参照表之间的连接方式和重分区方式属于哪种可能的连接方式和重分区方式,属于哪种就按照哪种方式对应的处理方式对失配值进行处理即可。
具体地:该处理方法包括生成重分区的计划。在本实施例中该计划是通过结构化查询语言SQL优化器生成的,也可以是其他优化器,该计划包括:
步骤S100,生成被重分区表与参照表之间的预设连接方式和预设重分区方式,被重分区表和参照表之间的预设连接方式和预设重分区方式是预先设定好的。被重分区表和参照表之间的预设连接方式和预设重分区方式预先设定的,并且分别只有一种方式,这种预设设定的方式可以是根据数据库中的其他数据和/或其他相关内容设定的。所述预设连接方式包括仅含有等值条件的内连接/半连接、仅含有等值条件的左外连接/左反连接、仅含有等值条件的右外连接/右反连接或全连接中的一种,被重分区表与参照表之间的连接方式可以是上述连接方式中的任意一种。所述预设重分区方式包括左表为被重分区表,右表为参照表;或者,右表为被重分区表,左表为参照表两种方式中的一种,两个关系表中,左表和右表均可以被预设为被重分区表。
步骤S200,生成被重分区表与参照表之间的约束连接方式、约束重分区方式。约束连接方式和约束重分区方式分别是相对于预设连接方式和预设重分区方式而言的,预设重分区方式可能与约束重分区方式相同,预设连接方式也可能和预设连接方式相同。当然,上述两种方式也可能不相同。生成的约束重分区方式和约束连接方式中包括预设重分区方式和约束连接方式,约束重分区方式和约束连接方式包括了关系表的各种重分区方式和连接方式。所述约束连接方式包括仅含有等值条件的内连接/半连接、仅含有等值条件的左外连接/左反连接、仅含有等值条件的右外连接/右反连接和全连接。所述预设重分区方式包括左表为被重分区表,右表为参照表;以及,右表为被重分区表,左表为参照表。本实施例中所说的“约束”,用于与“预设”进行区分,并不具有某中约束性质。
步骤S300,不同约束重分区方式和不同约束连接方式采用的执行策略,由于重分区方式和连接方式不同,所以不同约束重分区方式和约束连接方式需要对应的不同的执行策略。该执行策略针对的是失配值,具体包括将失配值丢弃还是将失配值发送至相应的关系表中。
步骤S400,当被重分区表与参照表按照预设重分区方式进行数据重分区,并且被重分区表与参照表按照所述连接方式进行连接的过程中出现失配值时,判断所述预设连接方式是否为所述约束连接方式,以及所述预设重分区方式是否为所述约束重分区方式。
步骤S500,根据判断结果,执行不同的执行策略对所述失配值进行处理。预设连接方式属于哪种约束连接方式,就执行哪种约束重分区方式对应的执行策略,确定失配值按照哪种执行策略进行处理,以完成与失配值、被重分区表以及参照表相关的后续工作。
该步骤中所说的“以及”的含义可以解释为:当判断预设连接方式是否为约束连接方式之后,需要判断预设重分区方式是否为约束重分区方式时,才进行该判断,不需要判断预设重分区方式是否为约束重分区方式时,不用进行该判断。该判断并不是在所有连接方式中都进行的。在本说明书实施例中,有两种情况只是判断预设连接方式是否为约束连接方式,然后执行相应的执行策略,有两种情况是需要判断预设连接方式是否为约束连接方式和预设重分区方式是否为约束重分区方式。
执行上述四个步骤后也就完成了执行所述重分区的计划的步骤,以实现对所述失配值的处理。需要说明的是,上述步骤中的前三个步骤的顺序可以不是固定的,凡是能实现本说明书实施例的技术方案的顺序均在本技术方案的保护范围之内。
为了详细介绍判断所述预设连接方式是否为所述约束连接方式,以及所述预设重分区方式是否为所述约束重分区方式的结果,执行不同的所述执行策略对所述失配值进行处理的步骤是如何进行处理的,本说明书的一个实施例提供还了一种失配值的处理方法的具体流程示意图,如图2所示。该处理方法主要包括以下步骤:
步骤S,600,判断所述预设连接方式是否为所述约束连接方式中的仅含有等值条件的内连接/半连接,若是,则执行第一执行策略。第一执行策略为:将所述失配值丢弃。
否则,判断所述预设连接方式是否为所述约束连接方式中的仅含有等值条件的左外连接/左反连接、仅含有等值条件的右外连接/右反连接或全连接。
由于是被重分区表与参照表的连接方式为内连接/半连接,所以采用第一执行策略处理失配值,被重分区表与参照表中的数据不会出现错误。
例如,有左表和右表两个表,左表有以包含键值为0、1、3、5的这一列为分区键的四行数据,分区方式为[0,5],[10,11]。右表有以包含键值为5、10、15的这一列为分区键的三行数据,分区方式为[1,5],[6,10],[11,15]。当预设连接方式为仅含有等值条件的内连接时,除了两个表中共有的键值为5的这一行之外,不管是将左表按照右表进行重分区还是将右表按照左表进行重分区,所产生的失配值都将失配值丢弃。因为已经得到了内连接所需要的数据,其他数据为本说明书实施例中不需要的数据,所以最后的计算结果不会出现错误,提高了数据传输效率和计算效率。
步骤S700,当所述预设连接方式不为所述约束连接方式中的仅含有等值条件的内连接/半连接时,本实施例中采用的是判断所述预设连接方式是否为所述约束连接方式中的仅含有等值条件的左外连接/左反连接,若是,则执行第二执行策略。
否则,判断所述预设连接方式是否为所述约束连接方式中的仅含有等值条件的右外连接/右反连接或全连接。
请参考图3,第二执行策略具体包括:判断所述预设被重分区表是否为所述约束被重分区表中的左表,当所述预设被重分区表为所述约束被重分区表中的左表时,采用ROUNDROBIN的策略,将所述失配值发送至所述参照表的分区中;否则,将所述失配值丢弃。
其中,采用ROUND ROBIN的策略,将所述失配值发送至所述参照表中的分区中具体包括:
轮流选取所述参照表的不同分区,并将所述失配值发送至轮流选取的所述参照表的不同分区中。具体可以细分为:
当所述失配值的数量小于或者等于所述参照表的分区的数量时,按照一定顺序或规则选取与失配值相同数量的所述参照表的不同分区,并将所述失配值发送至所述选取的所述参照表的不同分区中。
当所述失配值的数量大于所述参照表的分区的数量时,循环执行将所述失配值发送至轮流选取的所述参照表的分区中的操作。
采用ROUND ROBIN的策略,将所述失配值发送至所述参照表中的分区中可以将失配值均匀的打散到各个进行连接操作的节点中,避免发送到同一个节点进行处理,以免导致并行的连接操作中有任务长尾出现。
由于被重分区表与参照表的连接方式是仅含有等值条件的左外连接/左反连接,所以采用第二执行策略处理失配值,被重分区表和参照表中的数据不会出现错误。
例如,同样以左表有以包含键值为0、1、3、5的这一列为分区键的四行数据,分区方式为[0,5],[10,11]。右表有以包含键值为5、10、15的这一列为分区键的三行数据,分区方式为[1,5],[6,10],[11,15]为例。当左表与右表预设的连接方式为仅含有等值条件的左外连接时,预设的连接方式与约束连接方式相同,则进行进一步判断。判断是否是将左表进行重分区,当左表与右表预设的重分区方式为将左表进行重分区连接时,键值为0的这一行所对应的数据即为失配值,因为是左外连接,需要左表中的所有数据,所以产生的失配值不能丢弃,需要将失配值按照一定顺序或规则发送到右表中的一个分区中。本实施例中将这一个失配值发送至右表的[1,5]分区中,当产生多个失配值时,可以依次将多个失配值分别发送至右表的[1,5],[6,10],[11,15]四个分区中。例如左表有5个失配值产生,将其中前四个分别发送至右表的[1,5],[6,10],[11,15]分区中,最后产生的一个重新发送到右表的[1,5]分区中,也就是将产生的失配值轮流发送至参照表的分区中。
若左表与右表的重分区方式为将右表进行重分区,当产生失配值后,键值15对应的这一行的数据即为失配值,这种情况下将失配值丢弃。
步骤S800,当所述预设连接方式不为所述约束连接方式中的仅含有等值条件的左外连接/左反连接时,判断所述预设连接方式是否为所述约束连接方式中的仅含有等值条件的右外连接/右反连接,若是,则执行第三执行策略。
否则,判断所述约束连接方式是否为所述约束连接方式中的仅含有等值条件的全连接。
请参考图4,所述第三执行策略具体包括:判断所述预设被重分区表是否为约束被重分区表中的右表,当所述预设被重分区表为约束被重分区表中的右表时,采用ROUNDROBIN的策略,将所述失配值发送至所述参照表的分区中;否则,将所述失配值丢弃。
其中,采用ROUND ROBIN的策略,将所述失配值发送至所述参照表中的分区中具体包括:轮流选取所述参照表的不同分区,并将所述失配值发送至轮流选取的所述参照表的不同分区中。具体可以细分为:
当所述失配值的数量小于或者等于所述参照表的分区的数量时,按照一定顺序或者规则选取与失配值相同数量的所述参照表的不同分区,并将所述失配值发送至选取的所述参照表的不同分区中。
当所述失配值的数量大于所述参照表的分区的数量时,循环执行将所述失配值发送至轮流选取的所述参照表的分区中。
由于被重分区表与参照表的连接方式是仅含有等值条件的右外连接/右反连接,所以采用第三执行策略处理失配值,被重分区表和参照表中的数据不会出现错误。
参照步骤S700中的左表与右表的具体举例,按照步骤S800中的方式和策略执行,此处不再详细说明。
步骤S900,当所述预设连接方式不为所述约束连接方式中的仅含有等值条件的右外连接/右反连接时,判断所述预设连接方式是否为所述约束连接方式中的仅含有等值条件的全连接,当然此时的预设连接方式只能是所述约束连接方式中的仅含有等值条件的全连接,采用执行第四执行策略。
所述第四执行策略具体包括:轮流选取所述参照表的不同分区,并将所述失配值发送至轮流选取的所述参照表的不同分区中。具体可以细分为:
当所述失配值的数量小于或者等于所述参照表的分区的数量时,按照一定顺序或者规则选取与失配值相同数量的所述参照表的不同分区,并将所述失配值发送至所述选取的所述参照表的不同分区中。
当所述所述失配值的数量大于所述参照表的分区的数量时,循环执行将所述失配值发送至轮流选取的所述参照表的分区中的操作。
由于被重分区表与参照表的连接方式是仅含有等值条件的全连接,所以采用第四执行策略处理失配值,被重分区表和参照表中的数据不会出现错误。参照步骤S700中的左表与右表的具体举例,按照步骤S900中的方式和策略执行,此处不再详细说明。
由于上述步骤S600、步骤S700、步骤S800以及步骤S900中的判断条件均为互斥条件,所以这四个步骤可以是按照随机的先后顺序进行判断,例如,可以是按照步骤S800、步骤S700、步骤S600和步骤S900的顺序执行本说明书实施例的技术方案,当然还可以按照其他先后顺序执行本说明书实施例的技术方案,均在本说明书实施例的技术方案的保护范围之内。
通过本说明书实施例提供的技术方案,可以实现对失配值更好的处理,根据被重分区表与参照表之间的连接方式以及重分区方式,在保证连接结果计算正确的前提下,确定被重分区表按照参照表的分区方式进行分区出现失配值时对失配值的处理方式。避免了将被重分区表中的所有数据全部发送至参照表中带来的数据传输数量过大导致的数据传输效率低下,以及在进行连接操作时连接效低下的技术问题。提高了跨机器关系表在重分区时的数据传输效率,进而提升连接操作的计算效率。
同样的,还可以先可判断预设被重分区表是否为约束被重分区表中的右表或者左表,然后在根据预设被重分区表是否为约束被重分区表中的右表或者左表判断预设连接方式与所述约束连接方式之间的关系,此种方式与本说明书实施例中提供的上述处理方法并不冲突,同样可以实现本说明书实施例中的技术方案,解决同样的技术问题,达到同样的技术效果。
本说明书实施例提供的上述失配值的处理方法适用于所有带有连接动作的数据库、计算框架、分布式存储器等。如果没有失配值的产生则不执行本说明书实施例中的执行策略。
本说明书实施例提供的失配值的处理方法完成了对失配值的处理,该处理方法可以通过相应的处理系统来实现,本说明书的实施例还提供了一种失配值的处理系统,该系统包括:
计划生成模块1,用于生成重分区的计划,所述计划包括:
生成被重分区表与参照表之间的预设连接方式和预设重分区方式。
生成被重分区表与参照表之间的约束连接方式、约束重分区方式。
不同约束重分区方式和不同约束连接方式采用的执行策略采用的执行策略。
根据预设连接方式与约束连接方式,预设重分区方式与约束重分区方式之间的关系,执行相应的执行策略。
执行所述重分区的计划,以实现对所述失配值的处理。
处理模块2,用于当被重分区表与参照表按照预设重分区方式进行重分区,并且所述被重分区表与参照表按照预设连接方式进行连接的过程中出现失配值时,判断所述预设连接方式是否为约束连接方式,以及所述预设重分区方式是否为约束重分区方式。
根据判断结果,执行不同的执行策略对所述失配值进行处理。
具体地,所述计划生成模块1包括预设连接方式生成子模块101、预设重分区方式生成子模块102、约束连接方式生成子模块103、约束重分区方式生成子模块104和执行策略生成子模块105。
所述预设连接方式生成子模块101和约束连接方式生成子模块103,均用于生成仅含有等值条件的内连接/半连接、仅含有等值条件的左外连接/左反连接、仅含有等值条件的右外连接/右反连接或全连接。
所述预设重分区方式生成子模块102和约束重分区方式生成子模块104,均用于生成重分区方式,具体包括左表为被重分区表,右表为参照表;或者,右表为被重分区表,左表为参照表。
所述执行策略生成子模块105,用于生成执行策略。
其中,所述执行策略包括:
第一执行策略,将所述失配值丢弃。
第二执行策略,判断所述预设被重分区表是否为所述约束被重分区表中的左表,当所述预设被重分区表为所述约束被重分区表中的左表时,将所述失配值发送至所述参照表的分区中;否则,将所述失配值丢弃。
第三执行策略,判断所述预设被重分区表是否为约束被重分区表中的右表,当所述预设被重分区表为约束被重分区表中的右表时,将所述失配值发送至所述参照表的分区中;否则,将所述失配值丢弃。
第四执行策略,当所述失配值的数量小于或者等于所述参照表的分区的数量时,随机选取与失配值相同数量的所述参照表的不同分区,并将所述失配值发送至所述随机选取的所述参照表的不同分区中;当所述所述失配值的数量大于所述参照表的分区的数量时,循环执行将所述失配值随机发送至所述参照表的分区中,直至遍历所述参照表的分区的操作。
所述处理模块2包括:
第一判断模块201,用于判断所述预设连接方式是否为所述约束连接方式中的仅含有等值条件的内连接/半连接。
第一执行模块202,用于在所述第一判断模块的判断结果为是时,执行所述第一执行策略。
第二判断模块203,用于在所述第一判断模块的判断结果为否时,判断所述预设连接方式是否为所述约束连接方式中的仅含有等值条件的左外连接/左反连接。
第二执行模块204,用于在所述第二判断模块的判断结果为是时,执行所述第二执行策略。
第三判断模块205,用于在所述第二判断模块的判断结果为否时,判断所述预设连接方式是否为所述约束连接方式中的仅含有等值条件的右外连接/右反连接。
第三执行模块206,用于在所述第三判断模块的判断结果为是时,执行所述第三执行策略。
第四判断模块207,用于在所述第三判断模块的判断结果为否是,判断所述预设连接方式是否为所述约束连接方式中的仅含有等值条件的全连接。
第四执行模块208,用于在所述第四判断模块的判断结果为是时,执行所述第四执行策略。
所述将所述失配值发送至所述参照表中的分区中具体包括:轮流选取所述参照表的不同分区,并将所述失配值发送至轮流选取的所述参照表的不同分区中。可以细分如下:
当所述失配值的数量小于或者等于所述参照表的分区的数量时,按照一定顺序或规则选取与失配值相同数量的所述参照表的不同分区,并将所述失配值发送至所述选取的所述参照表的不同分区中。
当所述所述失配值的数量大于所述参照表的分区的数量时,循环执行将所述失配值轮流选取的发送至所述参照表的分区中的操作。
本说明书实施例提供的一种失配值的处理系统同样可以解决本说明书实施例提供的失配值的处理方法所解决的技术问题,达到本说明书实施例提供的失配值的处理方法达到的技术效果。
本说明书实施例还提供了一种电子设备,包括:一个以上存储器和一个以上处理器。其中,
存储器(图中未示出),用于存储程序指令,存储器可以是短暂存储或持久存储。
处理器(图中未示出),用于执行所述程序指令,以实现本技术方案中主节点的选取方法。
本说明书实施例还提供了一种存储介质,所述存储介质存储有可读指令,所述可读指令可被处理器执行时实现本技术方案中失配值的处理方法。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field ProgrammableGateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上,仅为本发明说明书的一个或多个实施例较佳的具体实施方式,但发明说明书的一个或多个实施例的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明说明书的一个或多个实施例揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明说明书的一个或多个实施例的保护范围之内。因此,本发明说明书的一个或多个实施例的保护范围应该以权利要求书的保护范围为准。