一种数据处理的方法、存储节点及协调节点与流程

文档序号:11177183阅读:436来源:国知局
本申请涉及数据库
技术领域
:,特别涉及一种数据处理的方法、存储节点及协调节点。
背景技术
::社会各行业的业务系统越来越互联网化,服务的范围无限扩大化,导致海量用户、海量智能设备的参与,从而导致数据爆发性的增长。传统基于单机的数据库技术已经无法支撑海量数据的分析处理,在此情况下,基于mpp(massivelyparallelprocessing)并行计算的并行数据库集群应运而生。在这些使用场景中,常常存在数据量很大的表,而且这种表的字段很多,甚至能达到几百个字段。为了取得较好的性能,这样的大表都会做水平分区(根据某个字段做hash分区,或者随机分布),将表中数据分布到集群的不同节点上。在表中数据分布到集群的不同节点上,在进行大表间的表连接操作(join操作)时,如果节点间传输的数据量很大,一般通过把数据打包压缩的方式进行传输,这种方案在一定程度上减少了节点间数据传输量,但是在接收到数据后还需要解压缩后才能进行下一步操作,因此在内存占用量上没有变化;,因为数据传输量变小,节点间数据传输时间变短,因此总执行时间变短。但是上述方案虽然使用压缩技术减少了节点间数据传输量,但是不必要的数据量只是减少了,并没有完全消失,同时内存占用量并没有减少,在数据压缩后解压缩占用了中央处理器(centralprocessingunit,cpu)时间,即虽然传输时间减少,但cpu处理时间增加,总执行时间并没有显著减少。技术实现要素:本申请实施例提供了一种数据处理的方法、存储节点及协调节点,大大降低了表连接操作时节点间数据的传输,极大节省了网络带宽,同时减少了表连接操作的总执行时间。一方面,本申请的实施例提供一种数据处理的方法,应用于并行计算的并行数据库集群mppdb,该mppdb中可以包括多个存储节点以及协调节点,每个存储节点中可以保存多个表格的数据的一部分,本申请实施例中,该mppdb至少包括第一存储节点,该第一存储节点保存了第一表格数据的一部分和第二表格数据的一部分,该方法包括:第一存储节点获取客户端设备发起的表连接操作的请求,该请求为将第一表格数据中运算列数据和第二表格数据中运算列数据进行表连接操作的请求,运算列数据指的是表格数据中将要进行连接操作对应的该行或该列数据,由于行和列是相对的,行换一个方向即为列,此处用运算列数据中的“列”不限“行”的情况;第一存储节点根据本地保存的第一表格数据中运算列数据生成第一中间数据,根据本地保存的第二表格数据中运算列数据生成第二中间数据,其中,第一中间数据包括所述第一表格数据中连接运算列数据和存储所述第一表格数据中非连接运算列数据的位置信息,第二中间数据包括所述第二表格数据中连接运算列数据和存储第二表格数据中非连接运算列数据的位置信息,此处所描述的连接运算列数据指运算列数据中参与连接运算的数据;第一存储节点获取第二存储节点的第三中间数据的集合,第二存储节点包括所述mppdb中除所述第一存储节点外存储了所述第二表格数据的所有存储节点,第三中间数据包括第二存储节点中第二表格数据中连接运算列数据和存储第二存储节点中第二表格数据中非连接运算列数据的位置信息;第一存储节点将第一中间数据与第二中间数据、第三中间数据进行表连接操作,得到计算结果,并将计算结果发送给目标接收节点。本申请实施例中,由于第一中间数据、第二中间数据,第三中间数据只包括相应的连接运算列数据和非连接运算列数据的位置信息,并不包括非连接运算列数据的实际数据,因此第一存储节点中第一表格中运算列数据与获取的所有的第二表格的运算列数据进行的表连接操作,实际进行的是它们对应的中间数据进行的表连接操作,大大降低了表连接操作时节点间数据的传输,极大节省了网络带宽,同时减少了表连接操作的总执行时间。在一个可能的设计中,可以设定中间数据的数据格式,以方便运算,具 体的,可以采用如下方式:第一中间数据、第二中间数据、第三中间数据均为混合数据格式,该混合数据格式中存储非连接运算列数据的位置信息包括:节点标识id和表id和表中的行id。在另一个可能的设计中,所述将所述计算结果发送给目标接收节点,可以包括:第一存储节点将所述计算结果进行格式转化,将位置信息是相同节点id且相同表id的数据合并到一起表示,将格式转化后的计算结果发送给目标接收节点。此时,由于将位置信息是相同节点id和相同表id的数据进行了合并,进一步减少了计算结果中数据量,从而进一步降低了对传输带宽的要求和存储空间的要求。在另一个可能的设计中,所述将所述计算结果发送给目标接收节点可以,包括:第一存储节点将所述计算结果进行分组整理,同一个分组的数据只使用一个分组标识,将整理后的计算结果发送给目标接收节点。此时,由于对计算结果进行了分组整合,减少了计算结果中的数据标识,同样也进一步减少了计算结果中数据量,从而进一步降低了对传输带宽的要求和存储空间的要求。在另一个可能的设计中,所述目标接收节点可以为所述客户端设备,此时,存储节点直接将计算结果发送给客户端设备了,让客户端设备根据计算结果去请求实际数据;所述目标接收节点还可以为协调节点,此时,协调节点可以接收多个存储节点计算的计算结果,将这些计算结果一起转发给客户端设备,客户端设备可以通过协调节点来获取计算结果的实际数据。第二方面,本申请实施例中提供一种数据处理的方法,该方法应用于并行计算的并行数据库集群mppdb,该mppdb中包括协调节点和第一存储节点,第一存储节点中保存了第一表格数据的一部分和第二表格数据的一部分,该方法具体可以包括:协调节点接收第一存储节点中发送第一请求的计算结果,该第一请求为 客户端设备发起的将第一表格数据中第一运算列数据和第二表格数据中第二运算列数据进行表连接操作的请求,该计算结果为第一存储节点将第一中间数据与第二中间数据、第三中间数据进行表连接操作后得到的,该第一中间数据包括第一表格数据中连接运算列数据和存储第一表格数据中非连接运算列数据的位置信息,第二中间数据包括所述第二表格数据中连接运算列数据和存储所述第二表格数据中非连接运算列数据的位置信息,第三中间数据包括第二存储节点中第二表格数据中连接运算列数据和存储所述第二存储节点中第二表格数据中非连接运算列数据的位置信息,第二存储节点包括所述mppdb中除第一存储节点外存储了所述第二表格数据的所有存储节点;协调节点根据所述计算结果,从第一存储节点、第二存储节点中获取第一表格数据和第二表格数据进行表连接操作的非连接运算列数据;协调节点将获取的非连接运算列数据发送给客户端设备。本申请实施例中,由于协调节点接收的计算结果是第一存储节点中第一表格中运算列数据与获取的所有的第二表格的运算列数据它们对应的中间数据进行的表连接操作,协调节点是在获取计算结果后再去获取的计算结果对应非连接运算列对应的实际数据,避免了现有计算过程中边计算边传递计算数据,以防万一出现故障而导致数据传输中断,需要重新发起请求的问题,降低了表连接操作时节点间数据的传输,极大节省了网络带宽,减少了表连接操作的总执行时间。在一个可能的设计中,所述第一中间数据、第二中间数据、第三中间数据均为混合数据格式,所述混合数据格式中存储非连接运算列数据的位置信息包括:节点标识id和表id和表中的行id。在另一个可能的设计中,所述方法还可以包括:协调节点根据所述计算结果,生成所述混合数据格式的所述计算结果对应的物化视图并保存。此时,协调节点可以将每个请求对应的计算结果,生成物化视图进行保存,以便后续相同的请求,直接根据物化视图去获取相应的数据,而不用重新利用存储节点进行计算,提高了效率,同时由于本地保存的物化视图也是以所述混合数据格式保存的,因此可以大大减少本地保存的数据量,节约了 存储空间占用。在另一个可能的设计中,所述方法还可以包括:协调节点接收所述客户端设备发送的第二请求,所述第二请求与所述第一请求相同;协调节点根据所述计算结果对应的物化视图,从第一存储节点、第二存储节点中获取第一表格数据和第二表格数据进行表连接操作的非连接运算列数据;协调节点将获取的非连接运算列数据发送给客户端设备。此时,协调节点在保存了第一请求的计算结果对应的物化视图的情况下,若获取的到与第一请求相同的第二请求,则可以根据第一请求的计算结果对应的物化视图,直接获取对应的计算数据,响应第二请求,提高了处理效率。在另一个可能的设计中,协调节点还可以将保存的物化视图发送到所述mppdb外的第三存储节点保存,此时,该方法还可以包括:协调节点将所述计算结果对应的物化视图发送给所述mppdb外的第三存储节点保存,所述第三存储节点中保存的物化视图可供包括所述mppdb的至少两个mppdb访问。这时候,一方面,由于上述物化视图是以所述混合数据格式保存的,其数据量相对于实际数据大大减少,为物化视图数据发送到其他节点存储提供了可能,另一方面,协调节点将生成的物化视图保存所述mppdb外的一个可供多个集群访问的目标集群节点,使得已进行的表连接操作结果可以供多个集群访问,获取已进行的表连接操作结果的实际数据,扩大了物化视图的应用场景和范围。第三方面,本申请实施例中提供一种存储节点,应用于并行计算的并行数据库集群mppdb,所述存储节点包括接收器、发送器、处理器和存储器,所述存储器保存了第一表格数据的一部分和第二表格数据的一部分;所述接收器用于获取客户端设备发起的表连接操作的请求,所述请求为将所述第一表格数据中运算列数据和所述第二表格数据中运算列数据进行表连接操作的请求;所述处理器用于根据本地保存的所述第一表格数据中运算列数据生成第 一中间数据,根据本地保存的所述第二表格数据中运算列数据生成第二中间数据,其中,所述第一中间数据包括所述第一表格数据中连接运算列数据和存储所述第一表格数据中非连接运算列数据的位置信息,第二中间数据包括所述第二表格数据中连接运算列数据和存储所述第二表格数据中非连接运算列数据的位置信息;所述接收器还用于获取目标存储节点的第三中间数据的集合,所述目标存储节点包括所述mppdb中除所述存储节点外存储了所述第二表格数据的所有存储节点,所述第三中间数据包括所述目标存储节点中第二表格数据中连接运算列数据和存储所述目标存储节点中第二表格数据中非连接运算列数据的位置信息;所述处理器还用于将所述第一中间数据与所述第二中间数据、所述第三中间数据进行表连接操作,得到计算结果;所述发送器用于将所述计算结果发送给目标接收节点。在一个可能的设计中,所述第一中间数据、第二中间数据、第三中间数据均为混合数据格式,所述混合数据格式中存储所述非连接运算列数据的位置信息包括:节点标识id和表id和表中的行id。在另一个可能的设计中,所述处理器还用于将所述计算结果进行格式转化,将位置信息是相同节点id且相同表id的数据合并到一起表示,所述发送器具体用于将格式转化后的计算结果发送给所述目标接收节点。在另一个可能的设计中,所述处理器还用于将所述计算结果进行分组整理,同一个分组的数据只使用一个分组标识,所述发送器具体用于将整理后的计算结果发送给所述目标接收节点。在另一个可能的设计中,所述目标接收节点为协调节点或者所述客户端设备。第四方面,本申请实施例提供一种协调节点,应用于并行计算的并行数据库集群mppdb,所述mppdb中还包括第一存储节点,所述第一存储节点中保存了第一表格数据的一部分和第二表格数据的一部分,所述协调节点包括:接收器,用于接收所述第一存储节点中发送第一请求的计算结果,所述 第一请求为客户端设备发起的将所述第一表格数据中第一运算列数据和所述第二表格数据中第二运算列数据进行表连接操作的请求,所述计算结果为所述第一存储节点将所述第一中间数据与所述第二中间数据、所述第三中间数据进行表连接操作后得到的,所述第一中间数据包括所述第一表格数据中连接运算列数据和存储所述第一表格数据中非连接运算列数据的位置信息,第二中间数据包括所述第二表格数据中连接运算列数据和存储所述第二表格数据中非连接运算列数据的位置信息,所述第三中间数据包括第二存储节点中第二表格数据中连接运算列数据和存储所述第二存储节点中第二表格数据中非连接运算列数据的位置信息,所述第二存储节点包括所述mppdb中除所述第一存储节点外存储了所述第二表格数据的所有存储节点;处理器,用于根据所述计算结果,从所述第一存储节点、所述第二存储节点中获取所述第一表格数据和所述第二表格数据进行表连接操作的非连接运算列数据;发送器,用于将获取的非连接运算列数据发送给客户端设备。在一个可能的设计中,所述第一中间数据、第二中间数据、第三中间数据均为混合数据格式,所述混合数据格式中存储非连接运算列数据的位置信息包括:节点标识id和表id和表中的行id。在另一个可能的设计中,所述处理器还用于根据所述计算结果,生成所述混合数据格式的所述计算结果对应的物化视图并保存。在另一个可能的设计中,所述接收器还用于接收所述客户端设备发送的第二请求,所述第二请求与所述第一请求相同;所述处理器还用于根据所述计算结果对应的物化视图,从所述第一存储节点、所述第二存储节点中获取所述第一表格数据和所述第二表格数据进行表连接操作的非连接运算列数据;所述发送器还用于将获取的非连接运算列数据发送给客户端设备。在另一个可能的设计中,所述发送器还用于将所述计算结果对应的物化视图发送给所述mppdb外的第三存储节点保存,所述第三存储节点中保存的物化视图可供包括所述mppdb的至少两个mppdb访问。从以上技术方案可以看出,本申请实施例具有以下优点:本申请实施例中,由于第一中间数据、第二中间数据,第三中间数据只包括相应的连接运算列数据和非连接运算列数据的位置信息,并不包括非连接运算列数据的实际数据,因此第一存储节点中第一表格中运算列数据与获取的所有的第二表格的运算列数据进行的表连接操作,实际进行的是它们对应的中间数据进行的表连接操作,大大降低了表连接操作时节点间数据的传输,极大节省了网络带宽,同时减少了表连接操作的总执行时间。附图说明图1是本申请实施例中应用场景示意;图2是本申请实施例中数据处理的方法的一个实施例示意图;图3是本申请实施例中计算结果的一种转换格式的实施例示意图;图4是本申请实施例中计算结果的一中分组方式的实施例示意图;图5是本申请实施例中数据处理的方法的另一个实施例示意图;图6是本申请实施例中存储节点的一个实施例示意图;图7是本申请实施例中协调节点的一个实施例示意图。具体实施方式本申请实施例提供了一种数据处理的方法、存储节点及协调节点,大大降低了表连接操作时节点间数据的传输,极大节省了网络带宽,同时减少了表连接操作的总执行时间。为了使本
技术领域
:的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含,例如,包含 了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。本申请实施例应用于并行计算的并行数据库集群(英文全称:massivelyparallelprocessingdatabase,英文简称:mppdb),在mppdb中,大表会进行水平分区,即将表中的数据分布到集群中不同的存储节点上,一般mppdb中,会包括多个用于存储数据的存储节点和用于管理的协调节点,协调节点可以用于获取客户端设备发起的表连接操作请求,并将表连接操作请求转发给对应的存储节点。如图1所示,为本申请实施例中应用场景示意图,该应用场景中包括mppdb和客户端设备,mppdb中包括协调节点和多个存储节点,客户端设备可以与协调节点和存储节点交互数据。下面首先介绍本申请实施例数据处理的方法。请参阅图2,本申请实施例中数据处理的方法应用于上述mppdb中,所述mppdb中包括第一存储节点,所述第一存储节点保存了第一表格数据的一部分和第二表格数据的一部分,所述方法包括:201、第一存储节点获取客户端设备发起的表连接操作的请求;其中,所述请求为将所述第一表格数据中运算列数据和所述第二表格数据中运算列数据进行表连接操作的请求;运算列数据指的是表格数据中将要进行连接操作对应的该行或该列数据,由于行和列是相对的,行换一个方向即为列,此处用运算列数据中的“列”不限“行”的情况。一般情况下,mppdb中存储节点存储的表格数据中的运算列数据,包括参与对应运算的运算列数据以及和不参与对应运算的非运算列数据,例如本申请实施例中,连接运算列数据和非连接运算列数据,连接运算列数据即指运算列数据中参与连接运算的数据,非连接运算列数据即运算列数据中不参与连接操作的数据。本实施例中,第一存储节点获取客户端设备发起的表连接操作的请求的方式可以是:客户端设备向mppdb发起表连接操作请求,mppdb中的协调 节点获取该表连接操作请求,并将该表连接操作请求发送给存储第一表格数据和第二表格数据的所有节点。202、第一存储节点根据本地保存的第一表格数据中运算列数据生成第一中间数据,根据本地保存的第二表格数据中运算列数据生成第二中间数据;其中,第一中间数据包括所述第一表格数据中连接运算列数据和存储所述第一表格数据中非连接运算列数据的位置信息,第二中间数据包括所述第二表格数据中连接运算列数据和存储第二表格数据中非连接运算列数据的位置信息;可选的,本申请实施例中可以设定中间数据的数据格式,以方便运算,具体的,可以采用如下方式:第一中间数据、第二中间数据、第三中间数据均为混合数据格式,该混合数据格式中存储非连接运算列数据的位置信息包括:节点标识id和表id和表中的行id。其中,节点id指的是存储节点的id,例如第一存储节点的节点id可以为dn1,表id可以指表的名称,例如表t1-a,行id指的是多少行,同上,由于行和列是相对的,本申请实施例除了应用于行存数据的mppdb外,也可以应用于列存数据的mppdb。混合数据格式可以如下表1所示:表1连接运算列数据节点id表id行id以连接运算列数据为5,存储于节点id为1中的表1的a部分(即表id为t1-a)的第5行为例,混合数据格式的表示方式如下表1-1:表1-15dn1t1-a5203、第一存储节点获取第二存储节点的第三中间数据的集合;其中,第二存储节点包括所述mppdb中除所述第一存储节点外存储了所述第二表格数据的所有存储节点,第三中间数据包括第二存储节点中第二表格数据中连接运算列数据和存储第二存储节点中第二表格数据中非连接运算列数据的位置信息。204、第一存储节点将所述第一中间数据与所述第二中间数据、所述第三 中间数据进行表连接操作,得到计算结果,并将所述计算结果发送给目标接收节点。本实施例中,所述接收节点可以为所述mppdb中的协调节点或者所述客户端设备,即第一存储节点可以将计算结果直接发送给客户端设备,以使得客户端设备根据接收的所有所述表连接操作的计算结果,去请求所有对应的存储节点获取计算结果对应的实际数据,也可以是第一存储节点将计算结果发送给协调节点,协调节点可以接收所有进行该表连接操作的节点的计算结果之后,根据获取的所有结果,去各存储节点获取实际数据,发送实际数据给客户端设备,此处不作限定。本申请实施例中,由于第一中间数据、第二中间数据,第三中间数据只包括相应的连接运算列数据和非连接运算列数据的位置信息,并不包括非连接运算列数据的实际数据,因此第一存储节点中第一表格中运算列数据与获取的所有的第二表格的运算列数据进行的表连接操作,实际进行的是它们对应的中间数据进行的表连接操作,大大降低了表连接操作时节点间数据的传输,极大节省了网络带宽,同时减少了表连接操作的总执行时间。下面以一具体应用场景为例对上述实施例进行描述。t1表数据分布在node1和node2两个节点上,分别是t1-a和t1-b;t2表的数据同样如此分布在node1和node2两个节点上,分别是t2-a和t2-b,假设node1为本申请中的第一存储节点,第一存储节点的节点id为dn1,在执行sql语句:select*fromt1,t2wheret1.id1=t2.id2这样的表连接操作时,node1会获取到这样的表连接操作请求,即将所述第一表格数据(t1)中运算列数据(id1)和所述第二表格数据(t2)中运算列数据(id2)进行表连接操作的请求,此时,在node1上t1a需要和t2表全部数据做连接操作,由于node1中保存的t1表和t2表数据分别为t1-a和t1-b,因此node1需要将本地保存的表t1-a中id1的运算列数据转换为第一中间数据,假设表t1-a中id1的运算列数据在第5行,将本地保存的表t1-b中id2的运算列数据转换为第二中间数据,假设表t1-b中id2的运算列数据在第3行。假设表t1-a、t1-b(表格中实际数据已略)分别具体为如下:表t1-aid13………………5………………7………………11………………表t1-bid211………………7………………8………………5………………因此,上面得到第一中间数据、第二中间数据格式可以类似如下:第一中间数据格式如下表1-2:表1-2id1dn1t1-a5第二中间数据格式如下表1-3:表1-3id2dn1t1-b3由于是t1和t2的连接操作,id1=id2,则第一存储节点上的第一中间数据和第二中间数据做连接运算产生的中间结果如下表1-4所示:表1-45dn1t1-a2dn1t1-b47dn1t1-a3dn1t1-b211dn1t1-a4dn1t1-b1同理,第一存储节点上的第一中间数据和获取的第二存储节点的第三中间数据,也可以采用如上所述的运算方式,此处不再赘述。本申请实施例中,为了进一步降低节点间数据量的传输,上述将所述计算结果发送给目标接收节点可以采用如下多种方式:(1)在混合数据格式中存储非连接运算列数据的位置信息中包括节点 id、表id和行id时,所述将所述计算结果发送给目标接收节点,可以包括:所述第一存储节点将所述计算结果进行格式转化,将位置信息是相同节点id且相同表id的数据合并到一起表示,将格式转化后的计算结果发送给目标接收节点。具体的,将所述计算结果进行格式转化可以定义数据分块算法,得到的转化后计算结果格式如下表2所示:表2pos1pos2pos3…posn其中,pos0,pos1…posn中每一个pos中包括一个连接运算列数据和它对应的非运算列数据的位置信息。而每个posn(n大于等于1的正整数)的格式如下表3:表3positionitempos1pos2detail:节点id,表id其中,positionitem代表连接运算列数据,例如表t1-a中的5,7,11等,pos1分别表示该连接运算列数据处于不同表格数据的行id,例如,pos1表示该连接运算列数据处于第一表格数据的行id,pos2表示该连接运算列数据处于第二表格数据的行id;detail:节点id,表id,是定义前面的运算列数据都是属于该节点id中该表id的数据,以表1-4中运算列数据为5的数据为例,该detail即为:dn1,t1,即该连接运算列数据为5的数据属于节点id为dn1,表id为t1的数据。图3即为以上述第一中间数据和第二中间数据做连接运算产生的计算结果进行格式转换表示为例。(2)所述将所述计算结果发送给目标接收节点,也可以包括:所述第一存储节点将所述计算结果进行分组整理,同一个分组的数据只使用一个分组标识,将整理后的计算结果发送给目标接收节点。具体的,在混合数据格式中存储所述非连接运算列数据的位置信息中包括节点id、表id和行id时,根据相同的节点id和表id对所述计算结果进行分组,每组结果都是使用相同的节点id和表id位置信息,每组结果内不再存储节点id和表id等位置信息,只保存运算列数据的行号或列号信息。图4即为以上述第一中间数据和第二中间数据做连接运算产生的计算结果,根据相同的节点id和表id对所述计算结果进行分组后的表示实例,其中,recordnumber为运算列数据的id,nodeid即为节点id,tableid即为表id。下面介绍本申请实施例中协调节点侧数据处理的方法的实施例。请参阅图5,本申请实施例中数据处理的方法的另一个实施例应用于mppdb,该mppdb中包括协调节点和第一存储节点,第一存储节点中保存了第一表格数据的一部分和第二表格数据的一部分,该方法具体可以包括:501、协调节点接收第一存储节点中发送第一请求的计算结果;其中,该第一请求为客户端设备发起的将第一表格数据中第一运算列数据和第二表格数据中第二运算列数据进行表连接操作的请求,该计算结果为第一存储节点将第一中间数据与第二中间数据、第三中间数据进行表连接操作后得到的,该第一中间数据包括第一表格数据中连接运算列数据和存储第一表格数据中非连接运算列数据的位置信息,第二中间数据包括所述第二表格数据中连接运算列数据和存储所述第二表格数据中非连接运算列数据的位置信息,第三中间数据包括第二存储节点中第二表格数据中连接运算列数据和存储所述第二存储节点中第二表格数据中非连接运算列数据的位置信息,第二存储节点包括所述mppdb中除第一存储节点外存储了所述第二表格数据的所有存储节点;可选的,所述第一中间数据、第二中间数据、第三中间数据均为混合数据格式,所述混合数据格式中存储非连接运算列数据的位置信息包括:节点标识id和表id和表中的行id。502、协调节点根据所述计算结果,从第一存储节点、第二存储节点中获取第一表格数据和第二表格数据进行表连接操作的非连接运算列数据;本申请实施例中,由于上述实施例中第一存储节点的发送的混合数据格式的计算结果有多种形式,有直接的混合数据格式,也有经过压缩处理的混合数据格式,因此此处协调节点根据所述计算结果,从所述至少两个存储节点中获取所述第一表格数据中第一运算列数据和所述第二表格数据中第二运算列数据进行表连接操作的实际数据有多种方式:(1)若所述计算结果是直接的混合数据格式,即如上表1中混合数据格 式,则协调节点根据预置的该表1的混合数据格式存储所述非连接运算列数据的位置信息,从所述至少两个存储节点中获取所述第一表格数据中运算列数据和所述第二表格数据中运算列数据进行表连接操作的非连接运算列数据;(2)若所述计算结果是表1中混合数据格式经过如图3或图4所示的实施例中所描述的处理后(例如转换格式、结果分组)的计算结果,则所述协调节点需要采用与上相同的规则,获知该计算结果中的非连接运算列数据的位置信息,根据该位置信息从第一存储节点和第二存储节点中获取所述第一表格数据中运算列数据和所述第二表格数据中运算列数据进行表连接操作的非连接运算列数据。503、协调节点将获取的非连接运算列数据发送给客户端设备。本申请实施例中,由于协调节点接收的计算结果是第一存储节点中第一表格中运算列数据与获取的所有的第二表格的运算列数据它们对应的中间数据进行的表连接操作,协调节点是在获取计算结果后再去获取的计算结果对应非连接运算列对应的实际数据,避免了现有计算过程中边计算边传递计算数据,以防万一出现故障而导致数据传输中断,需要重新发起请求的问题,降低了表连接操作时节点间数据的传输,极大节省了网络带宽,减少了表连接操作的总执行时间。可选的,在所述第一中间数据、第二中间数据、第三中间数据均为混合数据格式时,所述方法还可以包括:所述协调节点根据所述计算结果,生成所述混合数据格式的所述计算结果对应的物化视图并保存。此时,生成物化视图进行保存,以便后续相同的请求,直接根据物化视图去获取相应的数据,而不用重新利用存储节点进行计算,提高了效率,同时由于本地保存的物化视图也是以所述混合数据格式保存的,因此可以大大减少本地保存的数据量,节约了存储空间占用。可选的,所述方法还可以包括:协调节点接收所述客户端设备发送的第二请求,所述第二请求与所述第一请求相同;协调节点根据所述计算结果对应的物化视图,从第一存储节点、第二存 储节点中获取第一表格数据和第二表格数据进行表连接操作的非连接运算列数据;协调节点将获取的非连接运算列数据发送给客户端设备。此时,协调节点在本地保存物化视图,在之后客户端设备发起同样的表连接操作请求,协调节点可以直接获取计算结果,根据计算结果获取实际数据,而不用各存储节点重新计算,提高了数据处理效率。可选的,协调节点还可以将保存的物化视图发送到所述mppdb外的第三存储节点保存,此时,该方法还可以包括:协调节点将所述计算结果对应的物化视图发送给所述mppdb外的第三存储节点保存,所述第三存储节点中保存的物化视图可供包括所述mppdb的至少两个mppdb访问。此时,一方面,由于上述物化视图是以所述混合数据格式保存的,其数据量相对于实际数据大大减少,为物化视图数据发送到其他节点存储提供了可能,另一方面,协调节点将生成的物化视图保存所述mppdb外的一个可供多个集群访问的目标集群节点,使得已进行的表连接操作结果可以供多个集群访问,获取已进行的表连接操作结果的实际数据,扩大了物化视图的应用场景和范围。下面在介绍本申请实施例中存储节点的实施例。请参阅图6,为本申请实施例中存储节点的一个实施例,该存储节点600应用于mppdb,该存储节点包括接收器601、发送器602、处理器603(可以为一个或多个)和存储器604,所述存储器604保存了第一表格数据的一部分和第二表格数据的一部分;在本申请的一些实施例中,接收器601、发送器602、处理器603和存储器604可通过总线或其它方式连接,其中,图6中以通过总线连接为例。所述接收器601用于获取客户端设备发起的表连接操作的请求,所述请求为将所述第一表格数据中运算列数据和所述第二表格数据中运算列数据进行表连接操作的请求;所述处理器603用于根据本地保存的所述第一表格数据中运算列数据生成第一中间数据,根据本地保存的所述第二表格数据中运算列数据生成第二 中间数据,其中,所述第一中间数据包括所述第一表格数据中连接运算列数据和存储所述第一表格数据中非连接运算列数据的位置信息,第二中间数据包括所述第二表格数据中连接运算列数据和存储所述第二表格数据中非连接运算列数据的位置信息;所述接收器601还用于获取目标存储节点的第三中间数据的集合,所述目标存储节点包括所述mppdb中除所述存储节点外存储了所述第二表格数据的所有存储节点,所述第三中间数据包括所述目标存储节点中第二表格数据中连接运算列数据和存储所述目标存储节点中第二表格数据中非连接运算列数据的位置信息;所述处理器603还用于将所述第一中间数据与所述第二中间数据、所述第三中间数据进行表连接操作,得到计算结果;所述发送器602用于将所述计算结果发送给目标接收节点。可选的,所述第一中间数据、第二中间数据、第三中间数据均为混合数据格式,所述混合数据格式中存储所述非连接运算列数据的位置信息包括:节点标识id和表id和表中的行id。可选的,所述处理器还用于将所述计算结果进行格式转化,将位置信息是相同节点id且相同表id的数据合并到一起表示,所述发送器具体用于将格式转化后的计算结果发送给所述目标接收节点。可选的,所述处理器还用于将所述计算结果进行分组整理,同一个分组的数据只使用一个分组标识,所述发送器具体用于将整理后的计算结果发送给所述目标接收节点。可选的,所述目标接收节点为协调节点或者所述客户端设备。下面介绍本申请实施例中协调节点的实施例。请参阅图7,为本申请实施例中协调节点的一个实施例,该协调节点700应用于mppdb,所述mppdb中还包括第一存储节点,所述第一存储节点中保存了第一表格数据的一部分和第二表格数据的一部分,所述协调节点包括:接收器601,用于接收所述第一存储节点中发送第一请求的计算结果,所述第一请求为客户端设备发起的将所述第一表格数据中第一运算列数据和所述第二表格数据中第二运算列数据进行表连接操作的请求,所述计算结果为 所述第一存储节点将所述第一中间数据与所述第二中间数据、所述第三中间数据进行表连接操作后得到的,所述第一中间数据包括所述第一表格数据中连接运算列数据和存储所述第一表格数据中非连接运算列数据的位置信息,第二中间数据包括所述第二表格数据中连接运算列数据和存储所述第二表格数据中非连接运算列数据的位置信息,所述第三中间数据包括第二存储节点中第二表格数据中连接运算列数据和存储所述第二存储节点中第二表格数据中非连接运算列数据的位置信息,所述第二存储节点包括所述mppdb中除所述第一存储节点外存储了所述第二表格数据的所有存储节点;处理器602,用于根据所述计算结果,从所述第一存储节点、所述第二存储节点中获取所述第一表格数据和所述第二表格数据进行表连接操作的非连接运算列数据;发送器603,用于将获取的非连接运算列数据发送给客户端设备。可选的,所述第一中间数据、第二中间数据、第三中间数据均为混合数据格式,所述混合数据格式中存储非连接运算列数据的位置信息包括:节点标识id和表id和表中的行id。可选的,所述处理器602还用于根据所述计算结果,生成所述混合数据格式的所述计算结果对应的物化视图并保存。可选的,所述接收器601还用于接收所述客户端设备发送的第二请求,所述第二请求与所述第一请求相同;所述处理器602还用于根据所述计算结果对应的物化视图,从所述第一存储节点、所述第二存储节点中获取所述第一表格数据和所述第二表格数据进行表连接操作的非连接运算列数据;所述发送器603还用于将获取的非连接运算列数据发送给客户端设备。可选的,所述发送器603还用于将所述计算结果对应的物化视图发送给所述mppdb外的第三存储节点保存,所述第三存储节点中保存的物化视图可供包括所述mppdb的至少两个mppdb访问。本申请实施例涉及的存储节点和协调节点可以具有比图6、图7所示出的更多或更少的部件,可以组合两个或更多个部件,或者可以具有不同的部件配置或设置,各个部件可以在包括一个或多个信号处理和/或专用集成电路在 内的硬件、软件或硬件和软件的组合实现,例如图6中处理器可以是一个或多个处理器的集合,图7中也可以包括单独的存储器,此处不作限定。本申请实施例还提供一种计算机存储介质,其中,该计算机存储介质可存储有程序,该程序执行时包括上述方法实施例中记载的至少数据处理的方法的部分或全部步骤。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。另外,在本申请各个实施例中的各功能单元可以集成在一个处理器中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售 或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1