一种分布式数据库的数据传输方法、中间层服务器及系统与流程

文档序号:14677085发布日期:2018-06-12 21:38阅读:298来源:国知局
一种分布式数据库的数据传输方法、中间层服务器及系统与流程

本发明涉及数据库技术领域,具体涉及一种分布式数据库的数据传输方法、中间层服务器及系统。



背景技术:

数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,一个技术框架固定、数据库架构稳定的业务系统,其运行性能的好坏绝大部分取决于数据库的性能变化。

Oracle的真正应用集群(Oracle Real Application Cluster,RAC)是典型的shared disk结构,如图1所示,基于shared disk结构的RAC架构包括依次相连的客户端11、服务器集群12和磁盘阵列13。服务器集群12是建立在一个共享的磁盘阵列13之上的,服务器集群12的服务器节点之间采用高速网络互连。服务器集群12中任何一个服务器节点的故障都不会影响客户端进行正常的数据传输,之前连接在故障服务器节点上的请求会被自动转移到正常服务器节点,实现了实例级的高可用。

然而,目前对基于shared disk结构的RAC没有良好的分布式改造方案,存在着较多技术难题。第一,现有的RAC改造成本大:现有的RAC架构数据库为共享式磁盘阵列,若将现有RAC架构数据库直接替换为分布式数据库,对于应用程序的改造较大,成本较高;第二,现有的RAC性能无法线性扩展:现有的RAC在计算层面采用多服务器节点的方式,但是磁盘阵列仍然是一个共享架构,因此这种架构的数据库存在可扩展性的限制,对于大数据量、高并发的场景有一定的局限性,数据集中存放时,对于资源配置要求较高,扩展时会增加磁盘的竞争,为了保证数据的一致性,需要消耗很多额外的资源,获得的扩展能力和增加的资源不成正比,不能实现线性扩展;第三,现有的RAC服务器集群的服务器间易产生竞争:随着服务器节点数的不断增加,服务器节点间通信的成本也会随之增加,通信开销会严重影响服务器集群的处理能力,当到达某个限度时,增加服务器节点可能不会再带来性能上的提高,甚至可能造成性能下降。



技术实现要素:

本发明实施例提供一种分布式数据库的数据传输方法、中间层服务器及系统,用于解决现有的RAC改造成本大的问题。

本发明实施例提供了一种分布式数据库的数据传输方法,包括:

接收客户端发送的数据插入请求,所述数据插入请求中包括待插入的数据;

根据分布式数据库系统中服务器集群的数据库实例的数目对待插入的数据进行分割,获得N个数据块;

将所述N个数据块发送至服务器集群中的N个数据库实例中;

更新全局系统表,所述全局系统表中包括各个数据库实例与数据节点的对应关系;

其中,N为大于等于1的整数;每个数据块中包括至少一个数据节点。

可选地,所述全局系统表中还包括数据节点之间的关联关系;所述方法还包括:

根据所述数据节点之间的关联关系获取所述N个数据块对应的副本数据块的数目;

将所述N个数据块的副本数据块发送至服务器集群中。

可选地,所述根据所述数据节点之间的关联关系获取所述N个数据块对应的副本数据块的数目,包括:

根据如下公式获取所述N个数据块对应的副本数据块的数目:

其中,为每个数据块对应的副本数据块的数目,每个数据块对应的副本数据块的数目小于等于V为数据块中数据节点的集合,|V|为数据块中数据节点的个数,v为数据块中的数据节点,|A(v)|为数据节点v的副本数目;p为所述数据块实例的数目;D|v|为分布式数据库中与数据节点v相关联的数据节点的数目。

可选地,所述方法还包括:

接收所述客户端发送的数据查询请求;

根据所述全局系统表将所述查询查询请求转发至相应的数据库实例上;

接收所述数据库实例返回的数据,并将所述数据库实例返回的数据发送至所述客户端。

本发明实施例提供了一种中间层服务器,包括:

数据插入请求接收单元,用于接收客户端发送的数据插入请求,所述数据插入请求中包括待插入的数据;

分割单元,用于根据分布式数据库系统中服务器集群的数据库实例的数目对待插入的数据进行分割,获得N个数据块;

数据块发送单元,用于将所述N个数据块发送至服务器集群中的N个数据库实例中;

更新单元,用于更新全局系统表,所述全局系统表中包括各个数据库实例与数据节点的对应关系;

其中,N为大于等于1的整数;每个数据块中包括至少一个数据节点。

可选地,所述全局系统表中还包括数据节点之间的关联关系;

还包括:

副本数据块数目获取单元,用于根据所述数据节点之间的关联关系获取所述N个数据块对应的副本数据块的数目;

副本数据库发送单元,用于将所述N个数据块的副本数据块发送至服务器集群中。

可选地,所述副本数据块数目获取单元进一步用于:

根据如下公式获取所述N个数据块对应的副本数据块的数目:

其中,为每个数据块对应的副本数据块的数目,每个数据块对应的副本数据块的数目小于等于V为数据块中数据节点的集合,|V|为数据块中数据节点的个数,v为数据块中的数据节点,|A(v)|为数据节点v的副本数目;p为所述数据块实例的数目;D|v|为分布式数据库中与数据节点v相关联的数据节点的数目。

可选地,还包括:

数据查询请求接收单元,用于接收所述客户端发送的数据查询请求;

转发单元,用于根据所述全局系统表将所述查询查询请求转发至相应的数据库实例上;

数据发送单元,用于接收所述数据库实例返回的数据,并将所述数据库实例返回的数据发送至所述客户端。

本发明实施例提供一种分布式数据库系统,包括:

服务器集群、磁盘阵列和上述的中间层服务器;

所述中间层服务器、所述服务器集群和所述磁盘阵列依次相连;

所述服务器集群中包括多个服务器节点,每个服务器节点运行一个数据库实例;

所述中间层服务器中保存有全局系统表,所述全局系统表包括各个数据库实例与数据节点的对应关系;

所述中间层服务器用于控制客户端与所述数据库实例之间的数据传输。

可选地,所述磁盘阵列包括多个磁盘,每个磁盘中保存有多个数据节点,每个磁盘对应一个服务器节点。

本发明实施例提供的分布式数据库的数据传输方法、中间层服务器及系统,接收客户端发送的数据插入请求,所述数据插入请求中包括待插入的数据;根据分布式数据库系统中服务器集群的数据库实例的数目对待插入的数据进行分割,获得N个数据块;将所述N个数据块发送至服务器集群中的N个数据库实例中;更新全局系统表,所述全局系统表中包括各个数据库实例与数据节点的对应关系。本发明实施例通过在客户端与数据库实例之间设置中间层服务器,客户端通过所述中间层服务器与所述服务器集群中的数据库实例进行数据传输,对于应用来说是透明的,应用无需改造即可通过中间层服务器实现数据的分布式传输,对RAC改造的成本较低。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是现有的真正应用集群RAC数据库的架构图;

图2是本发明一个实施例的分布式数据库系统的数据传输方法的流程示意图;

图3是本发明一个实施例的中间层服务器的结构示意图;

图4本发明一个实施例的分布式数据库系统的结构示意图;

图5是本发明一个实施例的中间层服务器的实体结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

图2是本发明一个实施例的分布式数据库系统的数据传输方法的流程示意图。如图2所示,本发明实施例的方法以中间层服务器为执行主体,包括:

S21:接收客户端发送的数据插入请求,所述数据插入请求中包括待插入的数据;

需要说明的是,当用户需要对数据库插入新的数据时,在客户端触发数据插入请求,客户端将用户触发的数据插入请求发送至中间层服务器。

S22:根据分布式数据库系统中服务器集群的数据库实例的数目对待插入的数据进行分割,获得N个数据块;

S23:将所述N个数据块发送至服务器集群中的N个数据库实例中;

需要说明的是,本发明实施例的中间层服务器在接收到输入插入请求时,对待插入的数据进行分割,将待插入的数据尽量均匀的分发至数据库实例中。N为大于等于1的整数;每个数据块中包括至少一个数据节点。

举例来说,待插入的数据中包括9条数据,分布式数据库系统中包括9个服务器节点,每个服务器节点对应一个数据库实例,即包括9个数据库实例。中间层服务器将9条数据分割为9个数据块,每个数据块中包括一个数据节点,将9个数据块分别发送至9个数据库实例中。

S24:更新全局系统表;

可理解的是,本发明实施例中的全局系统表中保存了各个数据库实例与数据节点的对应关系,在执行数据插入请求或者数据删除请求后均需要对全局系统表进行更新。

本发明实施例提供的分布式数据库系统的数据传输方法,通过在客户端与数据库实例之间设置中间层服务器,客户端通过所述中间层服务器与所述服务器集群中的数据库实例进行数据传输,对于应用来说是透明的,应用无需改造即可通过中间层服务器实现数据的分布式传输,对RAC改造的成本较低。

进一步地,所述全局系统表中还包括数据节点之间的关联关系;所述方法还包括:

根据所述数据节点之间的关联关系获取所述N个数据块对应的副本数据块的数目;

将所述N个数据块的副本数据块发送至服务器集群中。

需要说明的是,本发明实施例为了提高分布式数据库的数据安全性,对同一个数据块要进行冗余存储。数据块冗余存储的副本数据块的数目是根据数据节点之间的关联关系确定的。

举例来说,全局系统表中保存的数据节点之间的关联关系为QQ好友之间的联系。当一个数据节点保存人员A的数据时,人员A有a个QQ好友,则与该数据节点有关联的数据节点便有a个。

具体地,所述根据所述数据节点之间的关联关系获取所述N个数据块对应的副本数据块的数目,包括:

根据如下公式获取所述N个数据块对应的副本数据块的数目:

其中,为每个数据块对应的副本数据块的数目,每个数据块对应的副本数据块的数目小于等于V为数据块中数据节点的集合,|V|为数据块中数据节点的个数,v为数据块中的数据节点,|A(v)|为数据节点v的副本数目;p为所述数据块实例的数目;D|v|为分布式数据库中与数据节点v相关联的数据节点的数目。

举例来说,数据块实例的数目p=9,数据块中包括一个数据节点v。假设数据节点v和其他数据节点没有任何联系,则D|v|=0

那么根据公式(1)可以得到,该数据块的副本数据块的数目为0。

假设数据节点v与其他1个数据节点相关联,则D|v|=1

那么根据公式(1)可以得到,该数据块的副本数据块的数目为1。

可理解的是,本发明实施例为了减小服务器节点之间的通信开销,尽量将具有关联关系的数据节点保存在同一个数据库实例中。同时,为了避免存储空间的浪费,对每个数据库的副本数据块的数目设置上限,即每个数据块对应的副本数据块的数目小于等于

进一步地,所述方法还包括:

接收所述客户端发送的数据查询请求;

根据所述全局系统表将所述查询查询请求转发至相应的数据库实例上;

接收所述数据库实例返回的数据,并将所述数据库实例返回的数据发送至所述客户端。

本发明实施例提供的分布式数据库系统的数据传输方法通过在客户端与数据库实例之间设置中间层服务器,客户端通过所述中间层服务器与所述服务器集群中的数据库实例进行数据传输,对于应用来说是透明的,应用无需改造即可通过中间层服务器实现数据的分布式传输,对RAC改造的成本较低。在对数据节点进行冗余存储时,尽量将具有关联关系的数据节点保存在同一个数据库实例中,减小了服务器节点之间的通信开销,提高了服务器集群的数据处理效率。

图3是本发明一个实施例的中间层服务器的结构示意图。如图3所示,本发明实施例的中间层服务器包括数据插入请求接收单元31、分割单元32、数据块发送单元33和更新单元34,具体地:

数据插入请求接收单元31,用于接收客户端发送的数据插入请求,所述数据插入请求中包括待插入的数据;

分割单元32,用于根据分布式数据库系统中服务器集群的数据库实例的数目对待插入的数据进行分割,获得N个数据块;

数据块发送单元33,用于将所述N个数据块发送至服务器集群中的N个数据库实例中;

更新单元34,用于更新全局系统表,,所述全局系统表中包括各个数据库实例与数据节点的对应关系;

其中,N为大于等于1的整数;每个数据块中包括至少一个数据节点。

本发明实施例提供的中间层服务器,通过在客户端与数据库实例之间设置中间层服务器,客户端通过所述中间层服务器与所述服务器集群中的数据库实例进行数据传输,对于应用来说是透明的,应用无需改造即可通过中间层服务器实现数据的分布式传输,对RAC改造的成本较低。

可选地,所述全局系统表中还包括数据节点之间的关联关系;

该中间层服务器还包括:

副本数据块数目获取单元,用于根据所述数据节点之间的关联关系获取所述N个数据块对应的副本数据块的数目;

副本数据库发送单元,用于将所述N个数据块的副本数据块发送至服务器集群中。

所述副本数据块数目获取单元进一步用于:

根据如下公式获取所述N个数据块对应的副本数据块的数目:

其中,为每个数据块对应的副本数据块的数目,每个数据块对应的副本数据块的数目小于等于V为数据块中数据节点的集合,|V|为数据块中数据节点的个数,v为数据块中的数据节点,|A(v)|为数据节点v的副本数目;p为所述数据块实例的数目;D|v|为分布式数据库中与数据节点v相关联的数据节点的数目。

可选地,该中间层服务器还包括:

数据查询请求接收单元,用于接收所述客户端发送的数据查询请求;

转发单元,用于根据所述全局系统表将所述查询查询请求转发至相应的数据库实例上;

数据发送单元,用于接收所述数据库实例返回的数据,并将所述数据库实例返回的数据发送至所述客户端。

本发明实施例的中间层服务器可以用于执行上述方法实施例,其原理和技术效果类似,此处不再赘述。

图4本发明一个实施例的分布式数据库系统的结构示意图。如图4所示,本发明实施例的分布式数据库系统包括:

服务器集群43、磁盘阵列44和上述实施例的中间层服务器42;

中间层服务器42、服务器集群43和磁盘阵列44依次相连;

服务器集群43中包括多个服务器节点431,每个服务器节点431运行一个数据库实例;

中间层服务器42中保存有全局系统表,所述全局系统表包括各个数据库实例与数据节点的对应关系;

需要说明的是,本发明实施例的中间层服务器42不存储数据节点,但保存有数据库实例与数据节点的对应关系,当中间层服务器42接收到客户端41的数据查询请求或者数据删除请求时,可以从服务器集群43中确定相应的数据库实例对数据查询请求或者数据删除请求进行响应。

中间层服务器42用于控制客户端41与所述数据库实例之间的数据传输。

本发明实施例的分布式数据库系统,通过在客户端与数据库实例之间设置中间层服务器,客户端通过所述中间层服务器与所述服务器集群中的数据库实例进行数据传输,对于应用来说是透明的,应用无需改造即可通过中间层服务器实现数据的分布式传输,对RAC改造的成本较低。

进一步地,磁盘阵列44包括多个磁盘441,每个磁盘441中保存有多个数据节点,每个磁盘441对应一个服务器节点431。

需要说明的是,本发明实施例将现有的RAC中共享式磁盘阵列中的数据分散存储到多个磁盘上,获取更大的存储容量和更高的并发访问量,在增加服务器节点时性能基本可以实现线性扩展。

图5为本发明实施例的中间层服务器的实体结构示意图。

参照图5,中间层服务器包括:处理器(processor)51、存储器(memory)52、和总线53;其中,

处理器51和存储器52通过总线53完成相互间的通信;

处理器51用于调用存储器52中的程序指令,以执行上述各方法实施例所提供的分布式数据库系统的数据传输方法。

此外,上述的存储器52中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

本实施例提供一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的分布式数据库系统的数据传输方法。

本实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行上述各方法实施例所提供的分布式数据库系统的数据传输方法。

本发明实施例提供的分布式数据库的数据传输方法、中间层服务器及系统,通过在客户端与数据库实例之间设置中间层服务器,客户端通过所述中间层服务器与所述服务器集群中的数据库实例进行数据传输,对于应用来说是透明的,应用无需改造即可通过中间层服务器实现数据的分布式传输,对RAC改造的成本较低。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

需要说明的是术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本发明的说明书中,说明了大量具体细节。然而能够理解的是,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。类似地,应当理解,为了精简本发明公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释呈反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。

以上实施例仅用于说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

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