分布式数据库视图的实现方法及系统的制作方法

文档序号:6487187阅读:226来源:国知局
分布式数据库视图的实现方法及系统的制作方法
【专利摘要】本发明涉及一种分布式数据库视图的实现方法及系统,其方法包括:主控服务器节点接收客户端发送的视图执行命令,根据从本地获取的视图的基表中数据分布的服务器节点信息,向至少一个非主控服务器节点发送视图执行命令;至少一个非主控服务器节点根据所述视图执行命令与主控服务器节点并发执行视图计算,并将视图计算的处理结果返回至主控服务器节点;主控服务器节点将处理结果返回至客户端。本发明解决了视图无法在分布式数据库系统多服务器节点上执行的问题,同时视图计算可以在多服务器节点上并发进行,充分利用所有的服务器节点的CPU、物理内存、硬盘等资源,大大提高了服务器资源的利用率以及系统的执行效率。
【专利说明】分布式数据库视图的实现方法及系统
【技术领域】
[0001]本发明涉及通信【技术领域】,尤其涉及一种分布式数据库视图的实现方法及系统。【背景技术】
[0002]随着传统的数据库技术日趋成熟,以及互联网应用的高速发展,数据库应用已普遍出现在互联网之上。而传统的集中式数据库系统同时也表现出其不足之处:采用集中式管理,势必造成性能瓶颈,单一的提高硬件性能已不能满足目前互联网的大数据量高并发查询写入的需求,同时会产生大量的硬件维护和升级费用。此外,数据库的集中管理往往造成多数据库关联,一旦某一台数据库崩溃,将造成整个系统崩溃。所以分布式数据库系统将逐步取代传统集中式数据库系统。
[0003]在分布式数据库系统中,多台服务器节点组成服务器集群,数据被分布在多台服务器节点上,利用各个节点下的本机专属中央处理器(CPU)和硬盘同步处理数据。每个服务器节点地位平等,包括:对结构化查询语言(SQL,STRUCTURED QUERY LANGUAGE)解析模块、执行模块、节点间通信模块、数据存储模块等。客户端通过某种一致性算法(比如=HASH算法)选择一台服务器节点接入分布式数据库系统。
[0004]在数据库系统中,视图是虚表,是原始数据库数据的一种变换,是查看数据库表中数据的另外一种方式。可以将视图看成是一个移动的窗口,通过它用户可以看到感兴趣的数据。视图是从一个或几个基本表(或视图)中导出的表,这些表的数据存放在数据库中。那些用于产生视图的表叫做该视图的基表。一个视图也可以从另一个视图中产生。视图的定义存在数据库中,与此定义相关的数据没有再存一份于数据库中。通过视图看到的数据存放在基表中。视图看上去非常象数据库的物理表,对它的操作同任何其它的表一样。当通过视图修改数据时,实际上是在改变基表中的数据;相反地,基表数据的改变也会自动反映在由基表产生的视图中。由于逻辑上的原因,有些视图可以修改对应的基表,而有些则不能(仅仅能查询)。
[0005]对于传统的集中式数据库系统,因为其集中式管理的特点,数据库中的表及其数据只能使用一台服务器节点的CPU、物理内存、磁盘介质等。在分布式数据库系统中,由于多服务器集群环境下,数据表被分布在多台服务器节点上,因此,基于传统的集中式数据库系统中视图的执行模式无法满足分布式数据系统的要求,即视图无法在分布式数据库系统的多服务器节点上执行,导致无法充分利用所有的服务器节点的CPU、物理内存、硬盘等资源,降低了服务器执行效率。

【发明内容】

[0006]本发明的主要目的在于提供一种分布式数据库视图的实现方法及系统,旨在节省服务器资源,提高系统执行效率。
[0007]为了达到上述目的,本发明提出一种分布式数据库视图的实现方法,包括:
[0008]主控服务器节点接收客户端发送的视图执行命令;[0009]所述主控服务器节点根据从本地获取的视图的基表中数据分布的服务器节点信息,向至少一个非主控服务器节点发送所述视图执行命令;
[0010]所述至少一个非主控服务器节点根据所述视图执行命令与所述主控服务器节点并发执行视图计算,并将视图计算的处理结果返回至所述主控服务器节点;
[0011]所述主控服务器节点将所述处理结果返回至所述客户端。
[0012]优选地,所述主控服务器节点接收客户端发送的视图执行命令的步骤之前还包括:
[0013]所述主控服务器节点接收客户端发送的创建视图的创建命令;
[0014]根据所述创建命令解析视图的作词法和语法,并记录保存视图中的每一 SELECT查询语句的内容。
[0015]优选地,所述主控服务器节点根据从本地获取的视图的基表中数据分布的服务器节点信息,向至少一个非主控服务器节点发送所述视图执行命令的步骤包括:
[0016]若视图语法只包含有一个SELECT查询语句,所述主控服务器节点则根据视图的基表中数据分布的服务器节点信息,将视图执行命令发送到对应的非主控服务器节点;
[0017]若视图语法包含多个SELECT查询语句,且各SELECT查询语句间的关系为UNION,所述主控服务器节点则根据全部的基表的数据分布的服务器节点信息,将视图执行命令发送到对应的非主控服务器节点;
[0018]若视图语法包含多个SELECT查询语句,且各SELECT查询语句间的关系为JOIN,选择其中一基表作为主表,剩余的基表作为从表,主控服务器节点则根据主表的数据分布的服务器节点信息,将视图执行命令发送到对应的非主控服务器节点。
[0019]优选地,所述至少一个非主控服务器节点与所述主控服务器节点并发执行视图计算,并将视图计算的处理结果返回至所述主控服务器节点的步骤包括:
[0020]若视图语法只包含有一个SELECT查询语句,或者,视图语法包含多个SELECT查询语句,且各SELECT查询语句间的关系为UNION,则仅对本服务器节点上的数据进行计算,并将得到的处理结果发送给主控服务器节点;
[0021]若视图语法包含多个SELECT查询语句,且各SELECT查询语句间的关系为JOIN,以非主表为目标,根据非主表的数据分布的服务器节点信息,所述至少一个非主控服务器节点与所述主控服务器节点中,主表服务器节点发送生成临时数据文件命令给从表服务器节
占.[0022]从表服务器节点生成临时数据文件,并发送处理结果给主表服务器节点;
[0023]主表服务器节点接收从表服务器节点生成临时数据文件的处理结果,并从从表服务器节点上获取临时数据文件;
[0024]主表服务器节点作视图计算,并把处理结果发送给所述主控服务器节点。
[0025]优选地,所述将视图计算的处理结果返回至所述主控服务器节点的步骤包括:
[0026]判断主控服务器节点接收处理结果的时间是否超过预定时间;若是,则该执行视图命令失败;若否
[0027]若主控服务器节点接收的所有非主控服务器节点处理结果中,有任一节点的执行视图计算发生失败,则执行视图命令失败。
[0028]优选地,所述主表服务器节点发送生成临时数据文件命令给从表服务器节点的步骤包括:
[0029]判断主表服务器节点接收处理结果的时间是否超过预定时间,若是,则该执行视图命令失败;若否
[0030]若主表服务器节点接收的所有从表服务器节点处理结果中,有任一节点的生成临时数据文件发生失败,则执行视图命令失败。
[0031]本发明还提出一种分布式数据库视图的实现系统,包括:主控服务器节点和至少一个非主控服务器节点,其中:
[0032]所述主控服务器节点,与客户端连接,用于接收客户端发送的视图执行命令;根据从本地获取的视图的基表中数据分布的服务器节点信息,向至少一个非主控服务器节点发送所述视图执行命令;执行视图计算,并接收所述非主控服务器节点返回的处理结果,并将所述处理结果返回至所述客户端;
[0033]所述非主控服务器节点,用于根据所述视图执行命令与所述主控服务器节点并发执行视图计算,并将视图计算的处理结果返回至所述主控服务器节点。
[0034]优选地,所述主控服务器节点还用于接收客户端发送的创建视图的创建命令;根据所述创建命令解析视图的作词法和语法,并记录保存视图中的每一 SELECT查询语句的内容。
[0035]优选地,所述主控服务器节点还用于:
[0036]当视图语法只包含有一个SELECT查询语句时,根据视图的基表中数据分布的服务器节点信息,将视图执行命令发送到对应的非主控服务器节点;
[0037]当视图语法包含多个SELECT查询语句,且各SELECT查询语句间的关系为UNION,根据全部的基表的数据分布的服务器节点信息,将视图执行命令发送到对应的非主控服务器节点;
[0038]当视图语法包含多个SELECT查询语句,且各SELECT查询语句间的关系为JOIN,选择其中一基表作为主表,剩余的基表作为从表,根据主表的数据分布的服务器节点信息,将视图执行命令发送到对应的非主控服务器节点。
[0039]优选地,所述非主控服务器节点及主控服务器节点还用于:
[0040]当视图语法只包含有一个SELECT查询语句,或者,视图语法包含多个SELECT查询语句,且各SELECT查询语句间的关系为UNION,仅对本服务器节点上的数据进行计算,并将得到的处理结果发送给主控服务器节点;
[0041]当视图语法包含多个SELECT查询语句,且各SELECT查询语句间的关系为JOIN,以非主表为目标,根据非主表的数据分布的服务器节点信息,所述非主控服务器节点与所述主控服务器节点中,主表服务器节点发送生成临时数据文件命令给从表服务器节点;
[0042]从表服务器节点生成临时数据文件,并发送处理结果给主表服务器节点;
[0043]主表服务器节点接收从表服务器节点生成临时数据文件的处理结果,并从从表服务器节点上获取临时数据文件;
[0044]主表服务器节点作视图计算,并把处理结果发送给所述主控服务器节点。
[0045]优选地,所述主控服务器节点还用于判断主控服务器节点接收处理结果的时间是否超过预定时间;若是,则该判定执行视图命令失败;若主控服务器节点接收处理结果的时间未超过预定时间,且主控服务器节点接收的所有非主控服务器节点处理结果中,有任一节点的执行视图计算发生失败,则判定执行视图命令失败。
[0046]优选地,所述主控服务器节点及非主控服务器节点还用于:判断主表服务器节点接收处理结果的时间是否超过预定时间,若是,则该判定执行视图命令失败;若主表服务器节点接收处理结果的时间未超过预定时间,且主表服务器节点接收的所有从表服务器节点处理结果中,有任一节点的生成临时数据文件发生失败,则执行视图命令失败。
[0047]本发明提出的一种分布式数据库视图的实现方法及系统,通过主控服务器节点接收客户端发送的视图执行命令,并根据基表中数据分布的服务器节点信息,将此视图执行命令发送给任意一个或多个非主控服务器,由非主控服务器节点与主控服务器节点并发执行视图计算,主控服务器将处理结果汇总后返回至客户端,由此解决了现有技术的由于视图无法在分布式数据库系统多服务器节点上执行问题,同时视图计算可以在多服务器节点上并发进行,充分利用所有的服务器节点的CPU、物理内存、硬盘等资源,大大提高了服务器资源的利用率以及系统的执行效率。
【专利附图】

【附图说明】
[0048]图1是本发明分布式数据库视图的实现方法一实施例的流程示意图;
[0049]图2是本发明分布式数据库视图的实现方法另一实施例的流程示意图;
[0050]图3是本发明分布式数据库视图的实现系统一实施例的结构示意图。
[0051]为了使发明的技术方案更加清楚、明了,下面将结合附图作进一步详述。
【具体实施方式】
[0052]本发明实施例的解决方案主要是:主控服务器节点接收客户端发送的视图执行命令,并根据基表中数据分布的服务器节点信息,将此视图执行命令发送给任意一个或多个非主控服务器,由非主控服务器节点与主控服务器节点并发执行视图计算,主控服务器将处理结果汇总后返回至客户端,以实现在分布式数据库系统的多服务器节点并发执行视图计算,节省服务器资源,提高系统的执行效率。
[0053]如图1所示,本发明一实施例提出一种分布式数据库视图的实现方法,包括:
[0054]步骤S101,主控服务器节点接收客户端发送的视图执行命令;
[0055]本实施例方法可以实现分布式数据库系统多服务器集群下的视图执行计算,该分布式数据库系统由多个服务器节点组成,客户端通过某种一致性算法(比如=HASH算法)选择一台服务器节点接入分布式数据库系统,该服务器节点称为主控服务器节点,也就是说,与客户端存在TCP (Transmission Control Protocol,传输控制协议)链路链接的服务器节点称为主控服务器节点,不存在链路链接的服务器节点称为非主控服务器节点。
[0056]当客户端需要在多个服务器节点上进行视图计算时,客户端向其中的主控服务器节点发送视图执行命令。
[0057]步骤S102,所述主控服务器节点根据从本地获取的视图的基表中数据分布的服务器节点信息,向至少一个非主控服务器节点发送所述视图执行命令;
[0058]主控服务器节点接收到客户端发送的视图执行命令后,将视图的执行计算分布到其他非主控服务器节点,从本地获取视图的基表中数据分布的服务器节点信息,根据该数据分布的服务器节点信息,主控服务器节点将视图执行命令发送至任意一个或多个非主控服务器节点。
[0059]优选地,在该步骤执行过程中,如果主控服务器节点给任一非主控服务器节点发送执行视图命令发生失败,则认为该视图此次执行时发生错误,并结束视图执行操作。
[0060]步骤S103,所述至少一个非主控服务器节点根据所述视图执行命令与所述主控服务器节点并发执行视图计算,并将视图计算的处理结果返回至所述主控服务器节点;
[0061]主控服务器节点和非主控服务器节点同时执行计算视图语句,非主控服务器节点执行视图计算后将获取到的处理结果返回至主控服务器节点。
[0062]优选地,在该步骤执行过程中,如果主控服务器节点和非主控服务器节点执行视图计算发生失败,则认为该视图此次执行时发生错误,并结束视图执行操作。优选地,在该步骤执行过程中,如果非主控服务器节点发送视图计算的处理结果给主控服务器节点发生失败,则认为该视图此次执行时发生错误,并结束视图执行操作。
[0063]步骤S104,所述主控服务器节点将所述处理结果返回至所述客户端。
[0064]主控服务器节点对各个节点的处理结果数据汇总并发送给客户端。
[0065]优选地,在该步骤执行过程中,还可以判断主控服务器节点接收视图计算的处理结果的时间是否超过预定时间,其中,在超过预定时间的情况下,该执行视图命令失败;在未超过预定时间的情况下,如果主控服务器节点接收的所有视图计算的处理结果中,有任一节点的视图计算发生失败,则执行视图命令失败。
[0066]此外,在该步骤执行过程中,如果主控服务器节点汇总视图计算的处理结果发生失败,则认为该视图此次执行时发生错误,并结束视图执行操作。
[0067]上述实施例实现了在多台服务器节点组成服务器集群环境下的一种视图执行实现方法,解决了视图无法在分布式数据库系统多服务器节点上执行的问题,使视图可以对多服务器节点硬盘存储数据进行访问和操作,可以使视图在分布式数据库的多个服务器节点上并发执行,实现了充分利用每个服务器节点的CPU、硬盘等资源,大大提高了执行效率的效果。
[0068]进一步地,在上述实施例中,主控服务器节点将视图执行命令发送至任意一个或多个非主控服务器节点的实现步骤中,如果视图语法只包含有一个SELECT查询语句,主控服务器节点根据视图的基表中数据分布的服务器节点信息把视图执行命令发送到对应的服务器节点;如果视图语法包含多个SELECT查询语句,并且各SELECT查询语句间的关系为UNION,主控服务器节点则根据全部的基表的数据分布的服务器节点信息把视图执行命令发送到对应的服务器节点;如果视图语法包含多个SELECT查询语句,并且各SELECT查询语句间的关系为JOIN,选择其中某一个基表作为主表,剩余的基表作为从表,主控服务器节点根据主表的数据分布的服务器节点信息把视图执行命令发送到对应的非主控服务器节点。
[0069]上述从某一个基表中选择主表时,其选取的原则是以记录多的基表作为主表,此选取原则可以降低网络通信的开销,节省硬盘空间,提升系统整体查询性能。
[0070]进一步地,在主控服务器节点和非主控服务器节点执行视图计算时,如果视图语法只包含有一个SELECT查询语句,则在执行视图计算时,只需要对本服务器节点上的数据进行计算,并将得到的处理结果发送给主控服务器节点。
[0071]如果视图语法包含多个SELECT查询语句,并且各SELECT查询语句之间的关系为UNION,则在执行视图计算时,只需要对当前服务器节点上的数据进行计算,并得到的处理结果发送给主控服务器节点。
[0072]此外,如果视图语法包含多个SELECT查询语句,并且各SELECT查询语句之间的关系为JOIN,则以非主表为目标,根据非主表的数据分布的服务器节点信息,主控服务器节点和非主控服务器节点中,主表服务器节点向相应的从表服务器节点发送生成临时数据文件的命令或请求;从表服务器节点生成临时数据文件,并发送完成通知给主表服务器节点;主表服务器节点通过FTP、HTTP等网络协议从从表服务器节点上获取临时数据文件;主表服务器节点对主表数据、从表数据作JOIN计算,并得到处理结果发送给主控服务器节点。
[0073]进一步地,上述主表服务器节点向相应的从表服务器节点发送生成临时数据文件的请求或命令中,还包括:判断主表服务器节点接收处理结果的时间是否超过预定时间,其中,在超过预定时间的情况下,该执行视图命令失败;在未超过预定时间的情况下,如果主表服务器节点接收的所有从表服务器节点处理结果中,有任一节点的生成临时数据文件发生失败,则执行视图命令失败。
[0074]进一步地,上述主表服务器节点通过FTP、HTTP等网络协议从从表服务器节点上获取临时数据文件的过程还包括:如果主表服务器节点从从表服务器节点获取临时数据文件失败,则执行视图命令失败。
[0075]进一步地,非主控服务器节点执行视图计算后将获取到的处理结果返回至主控服务器节点时,主控服务器节点还可以判断主控服务器节点接收处理结果的时间是否超过预定时间,其中,在超过预定时间的情况下,该执行视图命令失败;在未超过预定时间的情况下,如果主控服务器节点接收的所有非主控服务器节点的处理结果中,有任一节点的执行视图计算发生失败,则执行视图失败。
[0076]上述实施例通过建立通信数据反馈机制解决了视图无法在分布式数据库系统多服务器节点上执行的问题,同时使视图可以对多服务器节点硬盘存储数据进行访问和操作,即可以使视图在分布式数据库的多个服务器节点上并发执行,从而可以充分利用每个服务器节点的CPU、硬盘等资源,大大提高了执行效率。
[0077]如图2所示,本发明另一实施例提出一种分布式数据库视图的实现方法,在上述步骤SlOl之前还包括:
[0078]步骤S90,所述主控服务器节点接收客户端发送的创建视图的创建命令;
[0079]步骤S100,根据所述创建命令解析视图的作词法和语法,并记录保存视图中的每一 SELECT查询语句的内容。
[0080]本实施例与上述实施例的区别在于:本实施例主控服务器节点在接收客户端发送的视图执行命令之前,还接收客户端发送的创建视图的创建命令,根据此创建命令创建视图,实现在分布式数据库系统中创建视图。
[0081]具体地,首先主控服务器节点根据客户端发送的创建视图的创建命令,创建视图的基表,然后从基表中导出视图,具体在结构化查询语言解析层中对视图作词法和语法解析时,记录保存视图中的每一个SELECT语句内容,最终完成视图的创建。
[0082]如图3所示,本发明一实施例提出一种分布式数据库视图的实现系统,包括:主控服务器节点301和至少一个非主控服务器节点302,其中:
[0083]主控服务器节点301通过TCP链路链接客户端303。
[0084]具体地,本实施例分布式数据库视图的实现系统中,客户端303通过某种一致性算法(比如:HASH算法)选择一台服务器节点接入分布式数据库系统,该服务器节点称为主控服务器节点301,也就是说,与客户端303存在TCP链路链接的服务器节点称为主控服务器节点301,不存在链路链接的服务器节点称为非主控服务器节点302。
[0085]所述主控服务器节点301用于接收客户端303发送的视图执行命令;根据从本地获取的视图的基表中数据分布的服务器节点信息,向至少一个非主控服务器节点302发送所述视图执行命令;进行视图计算,并接收所述非主控服务器节点302返回的处理结果,并将所述处理结果返回至所述客户端303 ;
[0086]所述非主控服务器节点302用于根据所述视图执行命令与所述主控服务器节点301并发执行视图计算,并将视图计算的处理结果返回至所述主控服务器节点301。
[0087]更为具体地,当客户端303需要在多个服务器节点上进行视图计算时,客户端303向其中的主控服务器节点301发送视图执行命令。
[0088]主控服务器节点301接收到客户端303发送的视图执行命令后,将视图的执行计算分布到其他非主控服务器节点302,从本地获取视图的基表中数据分布的服务器节点信息,根据该数据分布的服务器节点信息,主控服务器节点301将视图执行命令发送至任意一个或多个非主控服务器节点302。
[0089]优选地,在该执行过程中,如果主控服务器节点301给任一非主控服务器节点302发送执行视图命令发生失败,则认为该视图此次执行时发生错误,并结束视图执行操作。
[0090]主控服务器节点301将视图执行命令发送至任意一个或多个非主控服务器节点302之后,主控服务器节点301和非主控服务器节点302同时执行计算视图语句,非主控服务器节点302执行视图计算后将获取到的处理结果返回至主控服务器节点301。然后,由主控服务器节点301对各个节点的处理结果数据汇总并发送给客户端303。
[0091]优选地,在该执行过程中,如果主控服务器节点301和非主控服务器节点302执行视图计算发生失败,则认为该视图此次执行时发生错误,并结束视图执行操作。优选地,在该执行过程中,如果非主控服务器节点302发送视图计算的处理结果给主控服务器节点301发生失败,则认为该视图此次执行时发生错误,并结束视图执行操作。
[0092]优选地,在该执行过程中,还可以判断主控服务器节点301接收视图计算的处理结果的时间是否超过预定时间,其中,在超过预定时间的情况下,该执行视图命令失败;在未超过预定时间的情况下,如果主控服务器节点301接收的所有视图计算的处理结果中,有任一节点的视图计算发生失败,则执行视图命令失败。
[0093]此外,在该执行过程中,如果主控服务器节点301汇总视图计算的处理结果发生失败,则认为该视图此次执行时发生错误,并结束视图执行操作。
[0094]上述实施例实现了在多台服务器节点组成服务器集群环境下的一种视图执行实现方法,解决了视图无法在分布式数据库系统多服务器节点上执行的问题,使视图可以对多服务器节点硬盘存储数据进行访问和操作,可以使视图在分布式数据库的多个服务器节点上并发执行,实现了充分利用每个服务器节点的CPU、硬盘等资源,大大提高了执行效率的效果。
[0095]进一步地,在上述实施例中,主控服务器节点301将视图执行命令发送至任意一个或多个非主控服务器节点302的实现过程中,如果视图语法只包含有一个SELECT查询语句,主控服务器节点301根据视图的基表中数据分布的服务器节点信息把视图执行命令发送到对应的服务器节点;如果视图语法包含多个SELECT查询语句,并且各SELECT查询语句间的关系为UNION,主控服务器节点301则根据全部的基表的数据分布的服务器节点信息把视图执行命令发送到对应的服务器节点;如果视图语法包含多个SELECT查询语句,并且各SELECT查询语句间的关系为JOIN,选择其中某一个基表作为主表,剩余的基表作为从表,主控服务器节点301根据主表的数据分布的服务器节点信息把视图执行命令发送到对应的非主控服务器节点302。
[0096]上述从某一个基表中选择主表时,其选取的原则是以记录多的基表作为主表,此选取原则可以降低网络通信的开销,节省硬盘空间,提升系统整体查询性能。
[0097]进一步地,在主控服务器节点301和非主控服务器节点302执行视图计算时,如果视图语法只包含有一个SELECT查询语句,则在执行视图计算时,只需要对本服务器节点上的数据进行计算,并将得到的处理结果发送给主控服务器节点301。
[0098]如果视图语法包含多个SELECT查询语句,并且各SELECT查询语句之间的关系为UNION,则在执行视图计算时,只需要对当前服务器节点上的数据进行计算,并得到的处理结果发送给主控服务器节点301。
[0099]此外,如果视图语法包含多个SELECT查询语句,并且各SELECT查询语句之间的关系为JOIN,则以非主表为目标,根据非主表的数据分布的服务器节点信息,主控服务器节点301和非主控服务器节点302中,主表服务器节点向相应的从表服务器节点发送生成临时数据文件的命令或请求;从表服务器节点生成临时数据文件,并发送完成通知给主表服务器节点;主表服务器节点通过FTP、HTTP等网络协议从从表服务器节点上获取临时数据文件;主表服务器节点对主表数据、从表数据作JOIN计算,并得到处理结果发送给主控服务器节点301。
[0100]进一步地,上述主表服务器节点向相应的从表服务器节点发送生成临时数据文件的请求或命令中,还包括如下过程:判断主表服务器节点接收处理结果的时间是否超过预定时间,其中,在超过预定时间的情况下,该执行视图命令失败;在未超过预定时间的情况下,如果主表服务器节点接收的所有从表服务器节点处理结果中,有任一节点的生成临时数据文件发生失败,则执行视图命令失败。
[0101]进一步地,上述主表服务器节点通过FTP、HTTP等网络协议从从表服务器节点上获取临时数据文件的过程还包括:如果主表服务器节点从从表服务器节点获取临时数据文件失败,则执行视图命令失败。
[0102]进一步地,非主控服务器节点302执行视图计算后将获取到的处理结果返回至主控服务器节点301时,主控服务器节点301还用于判断主控服务器节点301接收处理结果的时间是否超过预定时间,其中,在超过预定时间的情况下,该执行视图命令失败;在未超过预定时间的情况下,如果主控服务器节点301接收的所有非主控服务器节点302的处理结果中,有任一节点的执行视图计算发生失败,则执行视图失败。
[0103]上述实施例通过建立通信数据反馈机制解决了视图无法在分布式数据库系统多服务器节点上执行的问题,同时使视图可以对多服务器节点硬盘存储数据进行访问和操作,即可以使视图在分布式数据库的多个服务器节点上并发执行,从而可以充分利用每个服务器节点的CPU、硬盘等资源,大大提高了执行效率。
[0104]进一步的,所述主控服务器节点301还用于接收客户端303发送的创建视图的创建命令;根据所述创建命令解析视图的作词法和语法,并记录保存视图中的每一 SELECT查询语句的内容。
[0105]具体地,主控服务器节点301首先根据客户端303发送的创建视图的创建命令,创建视图的基表,然后从基表中导出视图,具体在结构化查询语言解析层中对视图作词法和语法解析时,记录保存视图中的每一个SELECT语句内容,最终完成视图的创建。
[0106]本实施例解决了视图在分布式数据库系统多服务器节点上执行问题,可以对多服务器节点硬盘存储数据进行操作,同时可以使视图在分布式数据库的多个服务器节点上并发执行,大大提高了执行效率,并且节省了服务器资源。
[0107]以上所述仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或流程变换,或直接或间接运用在其它相关的【技术领域】,均同理包括在本发明的专利保护范围内。
【权利要求】
1.一种分布式数据库视图的实现方法,其特征在于,包括: 主控服务器节点接收客户端发送的视图执行命令; 所述主控服务器节点根据从本地获取的视图的基表中数据分布的服务器节点信息,向至少一个非主控服务器节点发送所述视图执行命令; 所述至少一个非主控服务器节点根据所述视图执行命令与所述主控服务器节点并发执行视图计算,并将视图计算的处理结果返回至所述主控服务器节点; 所述主控服务器节点将所述处理结果返回至所述客户端。
2.根据权利要求1所述的方法,其特征在于,所述主控服务器节点接收客户端发送的视图执行命令的步骤之前还包括: 所述主控服务器节点接收客户端发送的创建视图的创建命令; 根据所述创建命令解析视图的作词法和语法,并记录保存视图中的每一 SELECT查询语句的内容。
3.根据权利要求2所述的方法,其特征在于,所述主控服务器节点根据从本地获取的视图的基表中数据分布的服务器节点信息,向至少一个非主控服务器节点发送所述视图执行命令的步骤包括: 若视图语法只包含有一个SELECT查询语句,所述主控服务器节点则根据视图的基表中数据分布的服务器节点信息,将视图执行命令发送到对应的非主控服务器节点; 若视图语法包含多个SELECT查询语句,且各SELECT查询语句间的关系为UNION,所述主控服务器节点则根据全部的基表的数据分布的服务器节点信息,将视图执行命令发送到对应的非主控服务器节点; 若视图语法包含多个SELECT查询语句,且各SELECT查询语句间的关系为JOIN,选择其中一基表作为主表,剩余的基表作为从表,主控服务器节点则根据主表的数据分布的服务器节点信息,将视图执行命令发送到对应的非主控服务器节点。
4.根据权利要求3所述的方法,其特征在于,所述至少一个非主控服务器节点与所述主控服务器节点并发执行视图计算,并将视图计算的处理结果返回至所述主控服务器节点的步骤包括: 若视图语法只包含有一个SELECT查询语句,或者,视图语法包含多个SELECT查询语句,且各SELECT查询语句间的关系为UNION,则仅对本服务器节点上的数据进行计算,并将得到的处理结果发送给主控服务器节点; 若视图语法包含多个SELECT查询语句,且各SELECT查询语句间的关系为JOIN,以非主表为目标,根据非主表的数据分布的服务器节点信息,所述至少一个非主控服务器节点与所述主控服务器节点中,主表服务器节点发送生成临时数据文件命令给从表服务器节点;从表服务器节点生成临时数据文件,并发送处理结果给主表服务器节点; 主表服务器节点接收从表服务器节点生成临时数据文件的处理结果,并从从表服务器节点上获取临时数据文件; 主表服务器节点作视图计算,并把处理结果发送给所述主控服务器节点。
5.根据权利要求1-4中任一项所述的方法,其特征在于,所述将视图计算的处理结果返回至所述主控服务器节点的步骤包括: 判断主控服务器节点接收处理结果的时间是否超过预定时间;若是,则该执行视图命令失败;若否 若主控服务器节点接收的所有非主控服务器节点处理结果中,有任一节点的执行视图计算发生失败,则执行视图命令失败。
6.根据权利要求4所述的方法,其特征在于,所述主表服务器节点发送生成临时数据文件命令给从表服务器节点的步骤包括: 判断主表服务器节点接收处理结果的时间是否超过预定时间,若是,则该执行视图命令失败;右否 若主表服务器节点接收的所有从表服务器节点处理结果中,有任一节点的生成临时数据文件发生失败,则执行视图命令失败。
7.一种分布式数据库视图的实现系统,其特征在于,包括:主控服务器节点和至少一个非主控服务器节点,其中: 所述主控服务器节点,与客户端连接,用于接收客户端发送的视图执行命令;根据从本地获取的视图的基表中数据分布的服务器节点信息,向至少一个非主控服务器节点发送所述视图执行命令;执行视图计算,并接收所述非主控服务器节点返回的处理结果,并将所述处理结果返回至所述客户端; 所述非主控服务器节点,用于根据所述视图执行命令与所述主控服务器节点并发执行视图计算,并将视图计算的处理结果返回至所述主控服务器节点。
8.根据权利要求7所述的系统,其特征在于,所述主控服务器节点还用于接收客户端发送的创建视图的创建命令;·根据所述创建命令解析视图的作词法和语法,并记录保存视图中的每一 SELECT查询语句的内容。
9.根据权利要求8所述的系统,其特征在于,所述主控服务器节点还用于: 当视图语法只包含有一个SELECT查询语句时,根据视图的基表中数据分布的服务器节点信息,将视图执行命令发送到对应的非主控服务器节点; 当视图语法包含多个SELECT查询语句,且各SELECT查询语句间的关系为UNION,根据全部的基表的数据分布的服务器节点信息,将视图执行命令发送到对应的非主控服务器节占.当视图语法包含多个SELECT查询语句,且各SELECT查询语句间的关系为JOIN,选择其中一基表作为主表,剩余的基表作为从表,根据主表的数据分布的服务器节点信息,将视图执行命令发送到对应的非主控服务器节点。
10.根据权利要求8所述的系统,其特征在于,所述非主控服务器节点及主控服务器节点还用于: 当视图语法只包含有一个SELECT查询语句,或者,视图语法包含多个SELECT查询语句,且各SELECT查询语句间的关系为UNION,仅对本服务器节点上的数据进行计算,并将得到的处理结果发送给主控服务器节点; 当视图语法包含多个SELECT查询语句,且各SELECT查询语句间的关系为JOIN,以非主表为目标,根据非主表的数据分布的服务器节点信息,所述非主控服务器节点与所述主控服务器节点中,主表服务器节点发送生成临时数据文件命令给从表服务器节点; 从表服务器节点生成临时数据文件,并发送处理结果给主表服务器节点; 主表服务器节点接收从表服务器节点生成临时数据文件的处理结果,并从从表服务器节点上获取临时数据文件; 主表服务器节点作视图计算,并把处理结果发送给所述主控服务器节点。
11.根据权利要求7、8或9所述的系统,其特征在于,所述主控服务器节点还用于判断主控服务器节点接收处理结果的时间是否超过预定时间;若是,则该判定执行视图命令失败;若主控服务器节点接收处理结果的时间未超过预定时间,且主控服务器节点接收的所有非主控服务器节点处理结果中,有任一节点的执行视图计算发生失败,则判定执行视图命令失败。
12.根据权利要求10所述的系统,其特征在于,所述主控服务器节点及非主控服务器节点还用于:判断主表服务器节点接收处理结果的时间是否超过预定时间,若是,则该判定执行视图命令失败;若主表服务器节点接收处理结果的时间未超过预定时间,且主表服务器节点接收的所有从表服务器节点处理结果中,有任一节点的生成临时数据文件发生失败,则执行视图命令失败。
【文档编号】G06F17/30GK103577424SQ201210257704
【公开日】2014年2月12日 申请日期:2012年7月24日 优先权日:2012年7月24日
【发明者】徐宜良, 叶成旭 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1