CN103577424B - 分布式数据库视图的实现方法及系统 - Google Patents
分布式数据库视图的实现方法及系统 Download PDFInfo
- Publication number
- CN103577424B CN103577424B CN201210257704.8A CN201210257704A CN103577424B CN 103577424 B CN103577424 B CN 103577424B CN 201210257704 A CN201210257704 A CN 201210257704A CN 103577424 B CN103577424 B CN 103577424B
- Authority
- CN
- China
- Prior art keywords
- server node
- view
- control server
- main control
- node
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/248—Presentation of query results
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Fuzzy Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明涉及一种分布式数据库视图的实现方法及系统,其方法包括:主控服务器节点接收客户端发送的视图执行命令,根据从本地获取的视图的基表中数据分布的服务器节点信息,向至少一个非主控服务器节点发送视图执行命令;至少一个非主控服务器节点根据所述视图执行命令与主控服务器节点并发执行视图计算,并将视图计算的处理结果返回至主控服务器节点;主控服务器节点将处理结果返回至客户端。本发明解决了视图无法在分布式数据库系统多服务器节点上执行的问题,同时视图计算可以在多服务器节点上并发进行,充分利用所有的服务器节点的CPU、物理内存、硬盘等资源,大大提高了服务器资源的利用率以及系统的执行效率。
Description
技术领域
本发明涉及通信技术领域,尤其涉及一种分布式数据库视图的实现方法及系统。
背景技术
随着传统的数据库技术日趋成熟,以及互联网应用的高速发展,数据库应用已普遍出现在互联网之上。而传统的集中式数据库系统同时也表现出其不足之处:采用集中式管理,势必造成性能瓶颈,单一的提高硬件性能已不能满足目前互联网的大数据量高并发查询写入的需求,同时会产生大量的硬件维护和升级费用。此外,数据库的集中管理往往造成多数据库关联,一旦某一台数据库崩溃,将造成整个系统崩溃。所以分布式数据库系统将逐步取代传统集中式数据库系统。
在分布式数据库系统中,多台服务器节点组成服务器集群,数据被分布在多台服务器节点上,利用各个节点下的本机专属中央处理器(CPU)和硬盘同步处理数据。每个服务器节点地位平等,包括:对结构化查询语言(SQL, STRUCTURED QUERY LANGUAGE)解析模块、执行模块、节点间通信模块、数据存储模块等。客户端通过某种一致性算法(比如:HASH算法)选择一台服务器节点接入分布式数据库系统。
在数据库系统中,视图是虚表,是原始数据库数据的一种变换,是查看数据库表中数据的另外一种方式。可以将视图看成是一个移动的窗口,通过它用户可以看到感兴趣的数据。视图是从一个或几个基本表(或视图)中导出的表,这些表的数据存放在数据库中。那些用于产生视图的表叫做该视图的基表。一个视图也可以从另一个视图中产生。视图的定义存在数据库中,与此定义相关的数据没有再存一份于数据库中。通过视图看到的数据存放在基表中。视图看上去非常象数据库的物理表,对它的操作同任何其它的表一样。当通过视图修改数据时,实际上是在改变基表中的数据;相反地,基表数据的改变也会自动反映在由基表产生的视图中。由于逻辑上的原因,有些视图可以修改对应的基表,而有些则不能(仅仅能查询)。
对于传统的集中式数据库系统,因为其集中式管理的特点,数据库中的表及其数据只能使用一台服务器节点的CPU、物理内存、磁盘介质等。在分布式数据库系统中,由于多服务器集群环境下,数据表被分布在多台服务器节点上,因此,基于传统的集中式数据库系统中视图的执行模式无法满足分布式数据系统的要求,即视图无法在分布式数据库系统的多服务器节点上执行,导致无法充分利用所有的服务器节点的CPU、物理内存、硬盘等资源,降低了服务器执行效率。
发明内容
本发明的主要目的在于提供一种分布式数据库视图的实现方法及系统,旨在节省服务器资源,提高系统执行效率。
为了达到上述目的,本发明提出一种分布式数据库视图的实现方法,包括:
主控服务器节点接收客户端发送的视图执行命令;
所述主控服务器节点根据从本地获取的视图的基表中数据分布的服务器节点信息,向至少一个非主控服务器节点发送所述视图执行命令;
所述至少一个非主控服务器节点根据所述视图执行命令与所述主控服务器节点并发执行视图计算,并将视图计算的处理结果返回至所述主控服务器节点;
所述主控服务器节点将所述处理结果返回至所述客户端。
优选地,所述主控服务器节点接收客户端发送的视图执行命令的步骤之前还包括:
所述主控服务器节点接收客户端发送的创建视图的创建命令;
根据所述创建命令解析视图的作词法和语法,并记录保存视图中的每一SELECT查询语句的内容。
优选地,所述主控服务器节点根据从本地获取的视图的基表中数据分布的服务器节点信息,向至少一个非主控服务器节点发送所述视图执行命令的步骤包括:
若视图语法只包含有一个SELECT查询语句,所述主控服务器节点则根据视图的基表中数据分布的服务器节点信息,将视图执行命令发送到对应的非主控服务器节点;
若视图语法包含多个SELECT查询语句,且各SELECT查询语句间的关系为UNION,所述主控服务器节点则根据全部的基表的数据分布的服务器节点信息,将视图执行命令发送到对应的非主控服务器节点;
若视图语法包含多个SELECT查询语句,且各SELECT查询语句间的关系为JOIN,选择其中一基表作为主表,剩余的基表作为从表,主控服务器节点则根据主表的数据分布的服务器节点信息,将视图执行命令发送到对应的非主控服务器节点。
优选地,所述至少一个非主控服务器节点与所述主控服务器节点并发执行视图计算,并将视图计算的处理结果返回至所述主控服务器节点的步骤包括:
若视图语法只包含有一个SELECT查询语句,或者,视图语法包含多个SELECT查询语句,且各SELECT查询语句间的关系为UNION,则仅对本服务器节点上的数据进行计算,并将得到的处理结果发送给主控服务器节点;
若视图语法包含多个SELECT查询语句,且各SELECT查询语句间的关系为JOIN,以非主表为目标,根据非主表的数据分布的服务器节点信息,所述至少一个非主控服务器节点与所述主控服务器节点中,主表服务器节点发送生成临时数据文件命令给从表服务器节点;
从表服务器节点生成临时数据文件,并发送处理结果给主表服务器节点;
主表服务器节点接收从表服务器节点生成临时数据文件的处理结果,并从从表服务器节点上获取临时数据文件;
主表服务器节点作视图计算,并把处理结果发送给所述主控服务器节点。
优选地,所述将视图计算的处理结果返回至所述主控服务器节点的步骤包括:
判断主控服务器节点接收处理结果的时间是否超过预定时间;若是,则该执行视图命令失败;若否
若主控服务器节点接收的所有非主控服务器节点处理结果中,有任一节点的执行视图计算发生失败,则执行视图命令失败。
优选地,所述主表服务器节点发送生成临时数据文件命令给从表服务器节点的步骤包括:
判断主表服务器节点接收处理结果的时间是否超过预定时间,若是,则该执行视图命令失败;若否
若主表服务器节点接收的所有从表服务器节点处理结果中,有任一节点的生成临时数据文件发生失败,则执行视图命令失败。
本发明还提出一种分布式数据库视图的实现系统,包括:主控服务器节点和至少一个非主控服务器节点,其中:
所述主控服务器节点,与客户端连接,用于接收客户端发送的视图执行命令;根据从本地获取的视图的基表中数据分布的服务器节点信息,向至少一个非主控服务器节点发送所述视图执行命令;执行视图计算,并接收所述非主控服务器节点返回的处理结果,并将所述处理结果返回至所述客户端;
所述非主控服务器节点,用于根据所述视图执行命令与所述主控服务器节点并发执行视图计算,并将视图计算的处理结果返回至所述主控服务器节点。
优选地,所述主控服务器节点还用于接收客户端发送的创建视图的创建命令;根据所述创建命令解析视图的作词法和语法,并记录保存视图中的每一SELECT查询语句的内容。
优选地,所述主控服务器节点还用于:
当视图语法只包含有一个SELECT查询语句时,根据视图的基表中数据分布的服务器节点信息,将视图执行命令发送到对应的非主控服务器节点;
当视图语法包含多个SELECT查询语句,且各SELECT查询语句间的关系为UNION,根据全部的基表的数据分布的服务器节点信息,将视图执行命令发送到对应的非主控服务器节点;
当视图语法包含多个SELECT查询语句,且各SELECT查询语句间的关系为JOIN,选择其中一基表作为主表,剩余的基表作为从表,根据主表的数据分布的服务器节点信息,将视图执行命令发送到对应的非主控服务器节点。
优选地,所述非主控服务器节点及主控服务器节点还用于:
当视图语法只包含有一个SELECT查询语句,或者,视图语法包含多个SELECT查询语句,且各SELECT查询语句间的关系为UNION,仅对本服务器节点上的数据进行计算,并将得到的处理结果发送给主控服务器节点;
当视图语法包含多个SELECT查询语句,且各SELECT查询语句间的关系为JOIN,以非主表为目标,根据非主表的数据分布的服务器节点信息,所述非主控服务器节点与所述主控服务器节点中,主表服务器节点发送生成临时数据文件命令给从表服务器节点;
从表服务器节点生成临时数据文件,并发送处理结果给主表服务器节点;
主表服务器节点接收从表服务器节点生成临时数据文件的处理结果,并从从表服务器节点上获取临时数据文件;
主表服务器节点作视图计算,并把处理结果发送给所述主控服务器节点。
优选地,所述主控服务器节点还用于判断主控服务器节点接收处理结果的时间是否超过预定时间;若是,则该判定执行视图命令失败;若主控服务器节点接收处理结果的时间未超过预定时间,且主控服务器节点接收的所有非主控服务器节点处理结果中,有任一节点的执行视图计算发生失败,则判定执行视图命令失败。
优选地,所述主控服务器节点及非主控服务器节点还用于:判断主表服务器节点接收处理结果的时间是否超过预定时间,若是,则该判定执行视图命令失败;若主表服务器节点接收处理结果的时间未超过预定时间,且主表服务器节点接收的所有从表服务器节点处理结果中,有任一节点的生成临时数据文件发生失败,则执行视图命令失败。
本发明提出的一种分布式数据库视图的实现方法及系统,通过主控服务器节点接收客户端发送的视图执行命令,并根据基表中数据分布的服务器节点信息,将此视图执行命令发送给任意一个或多个非主控服务器,由非主控服务器节点与主控服务器节点并发执行视图计算,主控服务器将处理结果汇总后返回至客户端,由此解决了现有技术的由于视图无法在分布式数据库系统多服务器节点上执行问题,同时视图计算可以在多服务器节点上并发进行,充分利用所有的服务器节点的CPU、物理内存、硬盘等资源,大大提高了服务器资源的利用率以及系统的执行效率。
附图说明
图1是本发明分布式数据库视图的实现方法一实施例的流程示意图;
图2是本发明分布式数据库视图的实现方法另一实施例的流程示意图;
图3是本发明分布式数据库视图的实现系统一实施例的结构示意图。
为了使发明的技术方案更加清楚、明了,下面将结合附图作进一步详述。
具体实施方式
本发明实施例的解决方案主要是:主控服务器节点接收客户端发送的视图执行命令,并根据基表中数据分布的服务器节点信息,将此视图执行命令发送给任意一个或多个非主控服务器,由非主控服务器节点与主控服务器节点并发执行视图计算,主控服务器将处理结果汇总后返回至客户端,以实现在分布式数据库系统的多服务器节点并发执行视图计算,节省服务器资源,提高系统的执行效率。
如图1所示,本发明一实施例提出一种分布式数据库视图的实现方法,包括:
步骤S101,主控服务器节点接收客户端发送的视图执行命令;
本实施例方法可以实现分布式数据库系统多服务器集群下的视图执行计算,该分布式数据库系统由多个服务器节点组成,客户端通过某种一致性算法(比如:HASH算法)选择一台服务器节点接入分布式数据库系统,该服务器节点称为主控服务器节点,也就是说,与客户端存在TCP(Transmission Control Protocol,传输控制协议)链路链接的服务器节点称为主控服务器节点,不存在链路链接的服务器节点称为非主控服务器节点。
当客户端需要在多个服务器节点上进行视图计算时,客户端向其中的主控服务器节点发送视图执行命令。
步骤S102,所述主控服务器节点根据从本地获取的视图的基表中数据分布的服务器节点信息,向至少一个非主控服务器节点发送所述视图执行命令;
主控服务器节点接收到客户端发送的视图执行命令后,将视图的执行计算分布到其他非主控服务器节点,从本地获取视图的基表中数据分布的服务器节点信息,根据该数据分布的服务器节点信息,主控服务器节点将视图执行命令发送至任意一个或多个非主控服务器节点。
优选地,在该步骤执行过程中,如果主控服务器节点给任一非主控服务器节点发送执行视图命令发生失败,则认为该视图此次执行时发生错误,并结束视图执行操作。
步骤S103,所述至少一个非主控服务器节点根据所述视图执行命令与所述主控服务器节点并发执行视图计算,并将视图计算的处理结果返回至所述主控服务器节点;
主控服务器节点和非主控服务器节点同时执行计算视图语句,非主控服务器节点执行视图计算后将获取到的处理结果返回至主控服务器节点。
优选地,在该步骤执行过程中,如果主控服务器节点和非主控服务器节点执行视图计算发生失败,则认为该视图此次执行时发生错误,并结束视图执行操作。优选地,在该步骤执行过程中,如果非主控服务器节点发送视图计算的处理结果给主控服务器节点发生失败,则认为该视图此次执行时发生错误,并结束视图执行操作。
步骤S104,所述主控服务器节点将所述处理结果返回至所述客户端。
主控服务器节点对各个节点的处理结果数据汇总并发送给客户端。
优选地,在该步骤执行过程中,还可以判断主控服务器节点接收视图计算的处理结果的时间是否超过预定时间,其中,在超过预定时间的情况下,该执行视图命令失败;在未超过预定时间的情况下,如果主控服务器节点接收的所有视图计算的处理结果中,有任一节点的视图计算发生失败,则执行视图命令失败。
此外,在该步骤执行过程中,如果主控服务器节点汇总视图计算的处理结果发生失败,则认为该视图此次执行时发生错误,并结束视图执行操作。
上述实施例实现了在多台服务器节点组成服务器集群环境下的一种视图执行实现方法,解决了视图无法在分布式数据库系统多服务器节点上执行的问题,使视图可以对多服务器节点硬盘存储数据进行访问和操作,可以使视图在分布式数据库的多个服务器节点上并发执行,实现了充分利用每个服务器节点的CPU、硬盘等资源,大大提高了执行效率的效果。
进一步地,在上述实施例中,主控服务器节点将视图执行命令发送至任意一个或多个非主控服务器节点的实现步骤中,如果视图语法只包含有一个SELECT查询语句,主控服务器节点根据视图的基表中数据分布的服务器节点信息把视图执行命令发送到对应的服务器节点;如果视图语法包含多个SELECT查询语句,并且各SELECT查询语句间的关系为UNION,主控服务器节点则根据全部的基表的数据分布的服务器节点信息把视图执行命令发送到对应的服务器节点;如果视图语法包含多个SELECT查询语句,并且各SELECT查询语句间的关系为JOIN,选择其中某一个基表作为主表,剩余的基表作为从表,主控服务器节点根据主表的数据分布的服务器节点信息把视图执行命令发送到对应的非主控服务器节点。
上述从某一个基表中选择主表时,其选取的原则是以记录多的基表作为主表,此选取原则可以降低网络通信的开销,节省硬盘空间,提升系统整体查询性能。
进一步地,在主控服务器节点和非主控服务器节点执行视图计算时,如果视图语法只包含有一个SELECT查询语句,则在执行视图计算时,只需要对本服务器节点上的数据进行计算,并将得到的处理结果发送给主控服务器节点。
如果视图语法包含多个SELECT查询语句,并且各SELECT查询语句之间的关系为UNION,则在执行视图计算时,只需要对当前服务器节点上的数据进行计算,并得到的处理结果发送给主控服务器节点。
此外,如果视图语法包含多个SELECT查询语句,并且各SELECT查询语句之间的关系为JOIN,则以非主表为目标,根据非主表的数据分布的服务器节点信息,主控服务器节点和非主控服务器节点中,主表服务器节点向相应的从表服务器节点发送生成临时数据文件的命令或请求;从表服务器节点生成临时数据文件,并发送完成通知给主表服务器节点;主表服务器节点通过FTP、HTTP等网络协议从从表服务器节点上获取临时数据文件;主表服务器节点对主表数据、从表数据作JOIN计算,并得到处理结果发送给主控服务器节点。
进一步地,上述主表服务器节点向相应的从表服务器节点发送生成临时数据文件的请求或命令中,还包括:判断主表服务器节点接收处理结果的时间是否超过预定时间,其中,在超过预定时间的情况下,该执行视图命令失败;在未超过预定时间的情况下,如果主表服务器节点接收的所有从表服务器节点处理结果中,有任一节点的生成临时数据文件发生失败,则执行视图命令失败。
进一步地,上述主表服务器节点通过FTP、HTTP等网络协议从从表服务器节点上获取临时数据文件的过程还包括:如果主表服务器节点从从表服务器节点获取临时数据文件失败,则执行视图命令失败。
进一步地,非主控服务器节点执行视图计算后将获取到的处理结果返回至主控服务器节点时,主控服务器节点还可以判断主控服务器节点接收处理结果的时间是否超过预定时间,其中,在超过预定时间的情况下,该执行视图命令失败;在未超过预定时间的情况下,如果主控服务器节点接收的所有非主控服务器节点的处理结果中,有任一节点的执行视图计算发生失败,则执行视图失败。
上述实施例通过建立通信数据反馈机制解决了视图无法在分布式数据库系统多服务器节点上执行的问题,同时使视图可以对多服务器节点硬盘存储数据进行访问和操作,即可以使视图在分布式数据库的多个服务器节点上并发执行,从而可以充分利用每个服务器节点的CPU、硬盘等资源,大大提高了执行效率。
如图2所示,本发明另一实施例提出一种分布式数据库视图的实现方法,在上述步骤S101之前还包括:
步骤S90,所述主控服务器节点接收客户端发送的创建视图的创建命令;
步骤S100,根据所述创建命令解析视图的作词法和语法,并记录保存视图中的每一SELECT查询语句的内容。
本实施例与上述实施例的区别在于:本实施例主控服务器节点在接收客户端发送的视图执行命令之前,还接收客户端发送的创建视图的创建命令,根据此创建命令创建视图,实现在分布式数据库系统中创建视图。
具体地,首先主控服务器节点根据客户端发送的创建视图的创建命令,创建视图的基表,然后从基表中导出视图,具体在结构化查询语言解析层中对视图作词法和语法解析时,记录保存视图中的每一个SELECT语句内容,最终完成视图的创建。
如图3所示,本发明一实施例提出一种分布式数据库视图的实现系统,包括:主控服务器节点301和至少一个非主控服务器节点302,其中:
主控服务器节点301通过TCP链路链接客户端303。
具体地,本实施例分布式数据库视图的实现系统中,客户端303通过某种一致性算法(比如:HASH算法)选择一台服务器节点接入分布式数据库系统,该服务器节点称为主控服务器节点301,也就是说,与客户端303存在TCP链路链接的服务器节点称为主控服务器节点301,不存在链路链接的服务器节点称为非主控服务器节点302。
所述主控服务器节点301用于接收客户端303发送的视图执行命令;根据从本地获取的视图的基表中数据分布的服务器节点信息,向至少一个非主控服务器节点302发送所述视图执行命令;进行视图计算,并接收所述非主控服务器节点302返回的处理结果,并将所述处理结果返回至所述客户端303;
所述非主控服务器节点302用于根据所述视图执行命令与所述主控服务器节点301并发执行视图计算,并将视图计算的处理结果返回至所述主控服务器节点301。
更为具体地,当客户端303需要在多个服务器节点上进行视图计算时,客户端303向其中的主控服务器节点301发送视图执行命令。
主控服务器节点301接收到客户端303发送的视图执行命令后,将视图的执行计算分布到其他非主控服务器节点302,从本地获取视图的基表中数据分布的服务器节点信息,根据该数据分布的服务器节点信息,主控服务器节点301将视图执行命令发送至任意一个或多个非主控服务器节点302。
优选地,在该执行过程中,如果主控服务器节点301给任一非主控服务器节点302发送执行视图命令发生失败,则认为该视图此次执行时发生错误,并结束视图执行操作。
主控服务器节点301将视图执行命令发送至任意一个或多个非主控服务器节点302之后,主控服务器节点301和非主控服务器节点302同时执行计算视图语句,非主控服务器节点302执行视图计算后将获取到的处理结果返回至主控服务器节点301。然后,由主控服务器节点301对各个节点的处理结果数据汇总并发送给客户端303。
优选地,在该执行过程中,如果主控服务器节点301和非主控服务器节点302执行视图计算发生失败,则认为该视图此次执行时发生错误,并结束视图执行操作。优选地,在该执行过程中,如果非主控服务器节点302发送视图计算的处理结果给主控服务器节点301发生失败,则认为该视图此次执行时发生错误,并结束视图执行操作。
优选地,在该执行过程中,还可以判断主控服务器节点301接收视图计算的处理结果的时间是否超过预定时间,其中,在超过预定时间的情况下,该执行视图命令失败;在未超过预定时间的情况下,如果主控服务器节点301接收的所有视图计算的处理结果中,有任一节点的视图计算发生失败,则执行视图命令失败。
此外,在该执行过程中,如果主控服务器节点301汇总视图计算的处理结果发生失败,则认为该视图此次执行时发生错误,并结束视图执行操作。
上述实施例实现了在多台服务器节点组成服务器集群环境下的一种视图执行实现方法,解决了视图无法在分布式数据库系统多服务器节点上执行的问题,使视图可以对多服务器节点硬盘存储数据进行访问和操作,可以使视图在分布式数据库的多个服务器节点上并发执行,实现了充分利用每个服务器节点的CPU、硬盘等资源,大大提高了执行效率的效果。
进一步地,在上述实施例中,主控服务器节点301将视图执行命令发送至任意一个或多个非主控服务器节点302的实现过程中,如果视图语法只包含有一个SELECT查询语句,主控服务器节点301根据视图的基表中数据分布的服务器节点信息把视图执行命令发送到对应的服务器节点;如果视图语法包含多个SELECT查询语句,并且各SELECT查询语句间的关系为UNION,主控服务器节点301则根据全部的基表的数据分布的服务器节点信息把视图执行命令发送到对应的服务器节点;如果视图语法包含多个SELECT查询语句,并且各SELECT查询语句间的关系为JOIN,选择其中某一个基表作为主表,剩余的基表作为从表,主控服务器节点301根据主表的数据分布的服务器节点信息把视图执行命令发送到对应的非主控服务器节点302。
上述从某一个基表中选择主表时,其选取的原则是以记录多的基表作为主表,此选取原则可以降低网络通信的开销,节省硬盘空间,提升系统整体查询性能。
进一步地,在主控服务器节点301和非主控服务器节点302执行视图计算时,如果视图语法只包含有一个SELECT查询语句,则在执行视图计算时,只需要对本服务器节点上的数据进行计算,并将得到的处理结果发送给主控服务器节点301。
如果视图语法包含多个SELECT查询语句,并且各SELECT查询语句之间的关系为UNION,则在执行视图计算时,只需要对当前服务器节点上的数据进行计算,并得到的处理结果发送给主控服务器节点301。
此外,如果视图语法包含多个SELECT查询语句,并且各SELECT查询语句之间的关系为JOIN,则以非主表为目标,根据非主表的数据分布的服务器节点信息,主控服务器节点301和非主控服务器节点302中,主表服务器节点向相应的从表服务器节点发送生成临时数据文件的命令或请求;从表服务器节点生成临时数据文件,并发送完成通知给主表服务器节点;主表服务器节点通过FTP、HTTP等网络协议从从表服务器节点上获取临时数据文件;主表服务器节点对主表数据、从表数据作JOIN计算,并得到处理结果发送给主控服务器节点301。
进一步地,上述主表服务器节点向相应的从表服务器节点发送生成临时数据文件的请求或命令中,还包括如下过程:判断主表服务器节点接收处理结果的时间是否超过预定时间,其中,在超过预定时间的情况下,该执行视图命令失败;在未超过预定时间的情况下,如果主表服务器节点接收的所有从表服务器节点处理结果中,有任一节点的生成临时数据文件发生失败,则执行视图命令失败。
进一步地,上述主表服务器节点通过FTP、HTTP等网络协议从从表服务器节点上获取临时数据文件的过程还包括:如果主表服务器节点从从表服务器节点获取临时数据文件失败,则执行视图命令失败。
进一步地,非主控服务器节点302执行视图计算后将获取到的处理结果返回至主控服务器节点301时,主控服务器节点301还用于判断主控服务器节点301接收处理结果的时间是否超过预定时间,其中,在超过预定时间的情况下,该执行视图命令失败;在未超过预定时间的情况下,如果主控服务器节点301接收的所有非主控服务器节点302的处理结果中,有任一节点的执行视图计算发生失败,则执行视图失败。
上述实施例通过建立通信数据反馈机制解决了视图无法在分布式数据库系统多服务器节点上执行的问题,同时使视图可以对多服务器节点硬盘存储数据进行访问和操作,即可以使视图在分布式数据库的多个服务器节点上并发执行,从而可以充分利用每个服务器节点的CPU、硬盘等资源,大大提高了执行效率。
进一步的,所述主控服务器节点301还用于接收客户端303发送的创建视图的创建命令;根据所述创建命令解析视图的作词法和语法,并记录保存视图中的每一SELECT查询语句的内容。
具体地,主控服务器节点301首先根据客户端303发送的创建视图的创建命令,创建视图的基表,然后从基表中导出视图,具体在结构化查询语言解析层中对视图作词法和语法解析时,记录保存视图中的每一个SELECT语句内容,最终完成视图的创建。
本实施例解决了视图在分布式数据库系统多服务器节点上执行问题,可以对多服务器节点硬盘存储数据进行操作,同时可以使视图在分布式数据库的多个服务器节点上并发执行,大大提高了执行效率,并且节省了服务器资源。
以上所述仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或流程变换,或直接或间接运用在其它相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (12)
1.一种分布式数据库视图的实现方法,其特征在于,包括:
主控服务器节点接收客户端发送的视图执行命令;
所述主控服务器节点根据从本地获取的视图的基表中数据分布的服务器节点信息,向至少一个非主控服务器节点发送所述视图执行命令;
所述至少一个非主控服务器节点根据所述视图执行命令与所述主控服务器节点并发执行视图计算,并将视图计算的处理结果返回至所述主控服务器节点,包括:若视图语法包含多个SELECT查询语句,且各SELECT查询语句间的关系为JOIN,以非主表为目标,根据非主表的数据分布的服务器节点信息,所述至少一个非主控服务器节点与所述主控服务器节点中,主表服务器节点发送生成临时数据文件命令给从表服务器节点;
从表服务器节点生成临时数据文件,并发送处理结果给主表服务器节点;
主表服务器节点接收从表服务器节点生成临时数据文件的处理结果,并从从表服务器节点上获取临时数据文件;
主表服务器节点作视图计算,并把处理结果发送给所述主控服务器节点;
所述主控服务器节点将所述处理结果返回至所述客户端。
2.根据权利要求1所述的方法,其特征在于,所述主控服务器节点接收客户端发送的视图执行命令的步骤之前还包括:
所述主控服务器节点接收客户端发送的创建视图的创建命令;
根据所述创建命令解析视图的作词法和语法,并记录保存视图中的每一SELECT查询语句的内容。
3.根据权利要求2所述的方法,其特征在于,所述主控服务器节点根据从本地获取的视图的基表中数据分布的服务器节点信息,向至少一个非主控服务器节点发送所述视图执行命令的步骤包括:
若视图语法只包含有一个SELECT查询语句,所述主控服务器节点则根据视图的基表中数据分布的服务器节点信息,将视图执行命令发送到对应的非主控服务器节点;
若视图语法包含多个SELECT查询语句,且各SELECT查询语句间的关系为UNION,所述主控服务器节点则根据全部的基表的数据分布的服务器节点信息,将视图执行命令发送到对应的非主控服务器节点;
若视图语法包含多个SELECT查询语句,且各SELECT查询语句间的关系为JOIN,选择其中一基表作为主表,剩余的基表作为从表,主控服务器节点则根据主表的数据分布的服务器节点信息,将视图执行命令发送到对应的非主控服务器节点。
4.根据权利要求3所述的方法,其特征在于,所述至少一个非主控服务器节点与所述主控服务器节点并发执行视图计算,并将视图计算的处理结果返回至所述主控服务器节点的步骤还包括:
若视图语法只包含有一个SELECT查询语句,或者,视图语法包含多个SELECT查询语句,且各SELECT查询语句间的关系为UNION,则仅对本服务器节点上的数据进行计算,并将得到的处理结果发送给主控服务器节点。
5.根据权利要求1-4中任一项所述的方法,其特征在于,所述将视图计算的处理结果返回至所述主控服务器节点的步骤包括:
判断主控服务器节点接收处理结果的时间是否超过预定时间;若是,则该执行视图命令失败;若否
若主控服务器节点接收的所有非主控服务器节点处理结果中,有任一节点的执行视图计算发生失败,则执行视图命令失败。
6.根据权利要求4所述的方法,其特征在于,所述主表服务器节点发送生成临时数据文件命令给从表服务器节点的步骤包括:
判断主表服务器节点接收处理结果的时间是否超过预定时间,若是,则该执行视图命令失败;若否
若主表服务器节点接收的所有从表服务器节点处理结果中,有任一节点的生成临时数据文件发生失败,则执行视图命令失败。
7.一种分布式数据库视图的实现系统,其特征在于,包括:主控服务器节点和至少一个非主控服务器节点,其中:
所述主控服务器节点,与客户端连接,用于接收客户端发送的视图执行命令;根据从本地获取的视图的基表中数据分布的服务器节点信息,向至少一个非主控服务器节点发送所述视图执行命令;执行视图计算,并接收所述非主控服务器节点返回的处理结果,并将所述处理结果返回至所述客户端;
所述主控服务器节点,用于根据所述视图执行命令与所述主控服务器节点并发执行视图计算,并将视图计算的处理结果返回至所述主控服务器节点;其中,当视图语法包含多个SELECT查询语句,且各SELECT查询语句间的关系为JOIN,以非主表为目标,根据非主表的数据分布的服务器节点信息,所述非主控服务器节点与所述主控服务器节点中,主表服务器节点发送生成临时数据文件命令给从表服务器节点;从表服务器节点生成临时数据文件,并发送处理结果给主表服务器节点;主表服务器节点接收从表服务器节点生成临时数据文件的处理结果,并从从表服务器节点上获取临时数据文件;主表服务器节点作视图计算,并把处理结果发送给所述主控服务器节点。
8.根据权利要求7所述的系统,其特征在于,所述主控服务器节点还用于接收客户端发送的创建视图的创建命令;根据所述创建命令解析视图的作词法和语法,并记录保存视图中的每一SELECT查询语句的内容。
9.根据权利要求8所述的系统,其特征在于,所述主控服务器节点还用于:
当视图语法只包含有一个SELECT查询语句时,根据视图的基表中数据分布的服务器节点信息,将视图执行命令发送到对应的非主控服务器节点;
当视图语法包含多个SELECT查询语句,且各SELECT查询语句间的关系为UNION,根据全部的基表的数据分布的服务器节点信息,将视图执行命令发送到对应的非主控服务器节点;
当视图语法包含多个SELECT查询语句,且各SELECT查询语句间的关系为JOIN,选择其中一基表作为主表,剩余的基表作为从表,根据主表的数据分布的服务器节点信息,将视图执行命令发送到对应的非主控服务器节点。
10.根据权利要求8所述的系统,其特征在于,所述非主控服务器节点还用于:
当视图语法只包含有一个SELECT查询语句,或者,视图语法包含多个SELECT查询语句,且各SELECT查询语句间的关系为UNION,仅对本服务器节点上的数据进行计算,并将得到的处理结果发送给主控服务器节点。
11.根据权利要求7、8或9所述的系统,其特征在于,所述主控服务器节点还用于判断主控服务器节点接收处理结果的时间是否超过预定时间;若是,则该判定执行视图命令失败;若主控服务器节点接收处理结果的时间未超过预定时间,且主控服务器节点接收的所有非主控服务器节点处理结果中,有任一节点的执行视图计算发生失败,则判定执行视图命令失败。
12.根据权利要求10所述的系统,其特征在于,所述主控服务器节点及非主控服务器节点还用于:判断主表服务器节点接收处理结果的时间是否超过预定时间,若是,则该判定执行视图命令失败;若主表服务器节点接收处理结果的时间未超过预定时间,且主表服务器节点接收的所有从表服务器节点处理结果中,有任一节点的生成临时数据文件发生失败,则执行视图命令失败。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210257704.8A CN103577424B (zh) | 2012-07-24 | 2012-07-24 | 分布式数据库视图的实现方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210257704.8A CN103577424B (zh) | 2012-07-24 | 2012-07-24 | 分布式数据库视图的实现方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103577424A CN103577424A (zh) | 2014-02-12 |
CN103577424B true CN103577424B (zh) | 2017-11-07 |
Family
ID=50049229
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210257704.8A Active CN103577424B (zh) | 2012-07-24 | 2012-07-24 | 分布式数据库视图的实现方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103577424B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108255883B (zh) * | 2016-12-29 | 2021-12-24 | 北京国双科技有限公司 | 数据获取方法及装置 |
JP6939665B2 (ja) | 2018-03-15 | 2021-09-22 | オムロン株式会社 | ネットワークシステム |
CN110807058B (zh) * | 2018-08-01 | 2024-04-12 | 北京京东尚科信息技术有限公司 | 一种导出数据的方法和系统 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102163195A (zh) * | 2010-02-22 | 2011-08-24 | 北京东方通科技股份有限公司 | 一种基于分布式、异构数据库统一视图的查询优化方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100049715A1 (en) * | 2008-08-20 | 2010-02-25 | Yahoo! Inc. | Controlled parallel propagation of view table updates in distributed database systems |
-
2012
- 2012-07-24 CN CN201210257704.8A patent/CN103577424B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102163195A (zh) * | 2010-02-22 | 2011-08-24 | 北京东方通科技股份有限公司 | 一种基于分布式、异构数据库统一视图的查询优化方法 |
Non-Patent Citations (2)
Title |
---|
分布式实时数据库系统事务管理的研究;熊燕群;《中国硕士学位论文全文数据库信息科技辑》;20071215;第9-10页 * |
基于SQL SERVER的分布式数据库设计与实现;刘竞等;《中国科技论文在线》;20071018;第1-4页 * |
Also Published As
Publication number | Publication date |
---|---|
CN103577424A (zh) | 2014-02-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9727590B2 (en) | Data management and indexing across a distributed database | |
US8943103B2 (en) | Improvements to query execution in a parallel elastic database management system | |
US7710884B2 (en) | Methods and system for dynamic reallocation of data processing resources for efficient processing of sensor data in a distributed network | |
EP2710470B1 (en) | Extensible centralized dynamic resource distribution in a clustered data grid | |
CN103516807A (zh) | 一种云计算平台服务器负载均衡系统及方法 | |
CN109933631A (zh) | 基于Infiniband网络的分布式并行数据库系统及数据处理方法 | |
CN102201010A (zh) | 无共享架构的分布式数据库系统及其实现方法 | |
CN103345502B (zh) | 分布式数据库的事务处理方法和系统 | |
US20120203912A1 (en) | Autonomic computing system with model transfer | |
CN106790563B (zh) | 分布式存储系统和方法 | |
CN106980678A (zh) | 基于zookeeper技术的数据分析方法及系统 | |
CN105516284B (zh) | 一种集群数据库分布式存储的方法和装置 | |
US9092497B2 (en) | System and method to join and cut two-way rest overlay trees for distributed knowledge bases | |
CN106713391A (zh) | 一种session信息的共享方法和共享系统 | |
CN113590576A (zh) | 数据库参数调整方法、装置、存储介质以及电子设备 | |
CN103617276A (zh) | 一种分布式层次化的rdf数据的存储方法 | |
CN105608228B (zh) | 一种高效的分布式的rdf数据存储方法 | |
CN106101213A (zh) | 信息分布式存储方法 | |
CN103581332A (zh) | HDFS架构及HDFS架构中NameNode节点的压力分解方法 | |
CN107807983A (zh) | 一种支持大规模动态图数据查询的并行处理框架及设计方法 | |
CN103577424B (zh) | 分布式数据库视图的实现方法及系统 | |
CN101551781B (zh) | 一种p2p视频点播系统中的硬盘缓存替换方法 | |
CN102955801B (zh) | 基于分布式数据库系统的数据控制方法及系统 | |
CN108875035A (zh) | 分布式文件系统的数据存储方法及相关设备 | |
CN102624932A (zh) | 基于索引的异地云数据同步方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |