首页> 中国专利> 一种数据库系统、数据库系统访问方法及装置

一种数据库系统、数据库系统访问方法及装置

摘要

本发明提供了一种数据库系统、数据库系统访问方法及装置,所述数据库系统,包括:数据服务器组,由多台数据服务器组成,所述数据服务器用于存储数据,并接收客户端发送的数据操作请求来对存储的数据执行相应的操作;主服务器,用于设置所述数据服务器组中的数据服务器的数据分布状态,并将所述数据分布状态发送给所述客户端以供所述客户端根据所述数据分布状态将所述数据操作请求发送给对应的所述数据服务器。采用本发明提供的技术方案,避免了由主服务器负责对数据操作请求的分拆操作,使得主服务器成为系统的瓶颈所在,容易成为故障点,引发一定范围的数据库异常的问题。

著录项

  • 公开/公告号CN104572754A

    专利类型发明专利

  • 公开/公告日2015-04-29

    原文格式PDF

  • 申请/专利号CN201310508357.6

  • 发明设计人 冯东东;

    申请日2013-10-24

  • 分类号G06F17/30(20060101);H04L29/06(20060101);

  • 代理机构11243 北京银龙知识产权代理有限公司;

  • 代理人许静;黄灿

  • 地址 100871 北京市海淀区成府路298号中关村方正大厦808室

  • 入库时间 2023-12-18 08:25:28

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-06-05

    授权

    授权

  • 2015-05-27

    实质审查的生效 IPC(主分类):G06F17/30 申请日:20131024

    实质审查的生效

  • 2015-04-29

    公开

    公开

说明书

技术领域

本发明涉及计算机通信领域,尤其涉及一种数据库系统、数据库系统访问方法及装置。

背景技术

随着大数据时代的到来,海量的用户信息需要被系统快速的限时处理。系统的用户飞速的增长,同时用户信息的细化程度也在飞速增长,这些飞速增长的海量数据往往需要系统在日益增长的用户并发数需求下限时完成数据的增添、删除、修改和查询操作。但对于这种大规模系统无论应用层负载均衡后承载能力有多高,往往受限于有A(Atomicity,原子性)、C(Consistency,一致性)、I(Isolation,隔离性)、D(Durability,持久性)需求的数据库系统。目前通常采用的解决方案主要有数据库分片技术。

数据库分片技术通过将不同的数据分布到不同的服务器上来提供更高的数据负载能力。优势在于将数据库分隔以后数据库的CRUD(增、查、改、删)操作自然分隔,从而展现集群性能优势。缺点是因为需要由几台主服务器负责对数据操作请求的分拆操作,主服务器掌控整个数据库系统的状态,因此这些主服务器往往就会成为系统的瓶颈所在,容易成为故障点,足以引发一定范围的数据库异常。

发明内容

有鉴于此,本发明提供了一种数据库系统、数据库系统访问方法及装置,以解决现有技术中,在处理海量数据信息时,由主服务器负责分拆操作,主服务器掌控整个数据库系统的状态,成为系统的瓶颈所在,容易成为故障点,足以引发一定范围的数据库异常的问题。

为了实现上述目的,本发明的实施例提供的技术方案如下:

一方面,本发明提供一种数据库系统,包括:数据服务器组,由多台数据服务器组成,所述数据服务器用于存储数据,并接收客户端发送的数据操作请求来对存储的数据执行相应的操作;主服务器,用于设置所述数据服务器组中的数据服务器的数据分布状态,并将所述数据分布状态发送给所述客户端以供所述客户端根据所述数据分布状态将所述数据操作请求发送给对应的所述数据服务器,所述数据分布状态包括所述数据服务器组中的每一数据服务器所存储的数据范围。

进一步地,所述主服务器采用封闭式环形分布方式设置所述数据服务器组中的数据服务器的数据分布状态,使得当添加/删除数据服务器时,只需要对在所述封闭式环形分布的数据服务器组中位于所述添加/删除的数据服务器的前一个/后一个数据服务器中的数据进行重新分布。

进一步地,所述主服务器包括多台服务器,其中一台服务器为主用服务器,其他服务器为备用服务器。

进一步地,数据在所述多台数据服务器中冗余存储,其中冗余存储是指在所述多台数据服务器的不同区域存储有同一数据的多份副本。

进一步地,所述数据服务器组包括:读数据服务器组,包括多台读数据服务器,用于存储数据,并接收客户端发送的查询数据操作请求来执行相应的操作;写数据服务器组,包括多台写数据服务器,用于存储数据,并接收客户端发送的除查询数据操作请求以外的数据操作请求来执行相应的操作;所述每台写数据服务器均对应多台所述读数据服务器,所述写数据服务器存储的数据与对应的所述多台读数据服务器存储的数据相同。

另一方面,本发明还提供了一种数据库系统访问方法,用于访问如上所述数据库系统,所述方法包括:根据存储的数据服务器组中的数据服务器的数据分布状态,确定接收待处理的数据操作请求的目标数据服务器;将所述待处理的数据操作请求发送到所述目标数据服务器,以使得所述目标数据服务器根据所述待处理的数据操作请求进行相应的操作;接收所述目标数据服务器发送的与所述待处理的数据操作请求对应的操作结果。

进一步地,所述根据存储的数据服务器组中的数据服务器的数据分布状态,确定接收待处理的数据操作请求的目标数据服务器之前,还包括:向主服务器发送所述数据服务器组中的数据服务器的数据分布状态是否更新的询问;当接收到所述主服务器发送的所述数据分布状态已发生更新的消息时,向所述主服务器发送获取所述数据分布状态的请求;接收并存储所述主服务器发送的所述数据分布状态。

进一步地,所述根据存储的数据服务器组中的数据服务器的数据分布状态,确定接收待处理的数据操作请求的目标数据服务器,包括:确定所述待处理的数据操作请求所涉及的数据范围;根据所述待处理的数据操作请求所涉及的数据范围及所述数据服务器组中的数据服务器的数据分布状态确定目标数据服务器范围;根据所述目标数据服务器范围的数据分布状态拆分所述待处理的数据操作请求,所述每条拆分后的数据操作请求所涉及的数据在一台数据服务器存储的数据范围内;为所述每条拆分后的数据操作请求确定目标数据服务器。

进一步地,所述数据服务器组包括:读数据服务器组,包括多台读数据服务器,用于存储数据,并接收客户端发送的查询数据操作请求来执行相应的操作;写数据服务器组,包括多台写数据服务器,用于存储数据,并接收客户端发送的除查询数据操作请求以外的数据操作请求来执行相应的操作;所述每台写数据服务器均对应多台所述读数据服务器,所述写数据服务器存储的数据与对应的所述多台读数据服务器存储的数据相同。所述根据所述数据操作请求的类型,为所述每条拆分后的数据操作请求确定目标数据服务器,具体为:确定所述待处理的数据操作请求的类型;当所述待处理的数据操作请求为除查询操作之外的数据操作请求时,从所述每条拆分后的数据操作请求对应的所述数据服务器中确定写数据服务器为目标数据服务器;当所述待处理的数据操作请求为查询操作请求时,从所述每条拆分后的数据操作请求对应的所述数据服务器中确定一台读服务器为目标数据服务器。

进一步地,所述从所述每条拆分后的数据操作请求对应的所述数据服务器中确定一台读数据服务器为目标数据服务器,具体为:根据负载均衡算法从所述每条拆分后的数据操作请求对应的所述数据服务器中确定一台读数据服务器为目标数据服务器。

本发明还提供了一种数据库系统访问装置,用于访问如上所述数据库系统,包括:确定模块,用于根据存储的数据服务器组中的数据服务器的数据分布状态,确定接收待处理的数据操作请求的目标数据服务器;第一发送模块,用于将所述待处理的数据操作请求发送到所述目标数据服务器,以使得所述目标数据服务器根据所述待处理的数据操作请求进行相应的操作;第一接收模块,用于接收所述目标数据服务器发送的与所述待处理的数据操作请求对应的操作结果。

进一步地,所述装置还包括:第二发送模块,用于向主服务器发送所述数据服务器组中的数据服务器的数据分布状态是否更新的询问;第三发送模块,用于当接收到所述主服务器发送的所述数据分布状态已发生更新的消息时,向所述主服务器发送获取所述数据分布状态的请求;第二接收模块,用于接收并存储所述主服务器发送的所述数据分布状态。

进一步地,所述确定模块,包括:第一确定单元,用于确定所述待处理的数据操作请求所涉及的数据范围;第二确定单元,用于根据所述待处理的数据操作请求所涉及的数据范围及所述数据服务器组中的数据服务器的数据分布状态确定目标数据服务器范围;拆分单元,用于根据所述目标数据服务器范围的数据分布状态拆分所述待处理的数据操作请求,所述每条拆分后的数据操作请求所涉及的数据在一台数据服务器存储的数据范围内;第三确定单元,用于为所述每条拆分后的数据操作请求确定目标数据服务器。

进一步地,所述数据服务器组包括:读数据服务器组,包括多台读数据服务器,用于存储数据,并接收客户端发送的查询数据操作请求来执行相应的操作;写数据服务器组,包括多台写数据服务器,用于存储数据,并接收客户端发送的除查询数据操作请求以外的数据操作请求来执行相应的操作;所述每台写数据服务器均对应多台所述读数据服务器,所述写数据服务器存储的数据与对应的所述多台读数据服务器存储的数据相同。所述第三确定单元,还包括:第一确定子单元,用于确定所述待处理的数据操作请求的类型;第二确定子单元,用于当所述待处理的数据操作请求为除查询操作之外的数据操作请求时,从所述每条拆分后的数据操作请求对应的所述数据服务器中确定写数据服务器为目标数据服务器;第三确定子单元,用于当所述待处理的数据操作请求为查询操作请求时,从所述每条拆分后的数据操作请求对应的所述数据服务器中确定一台读服务器为目标数据服务器。

本发明的上述技术方案的有益效果如下:

采用本发明提供的技术方案,通过客户端根据获取的数据库系统的数据分布状态负责对数据操作请求的分拆操作,将待处理的增添、删除、修改操作请求直接发送到负责此部分数据的服务器之上,避免了由主服务器负责对数据操作请求的分拆操作,使得主服务器成为系统的瓶颈所在,容易成为故障点,足以引发一定范围的数据库异常的问题。

采用本发明提供的技术方案,通过采用封闭式环形分布方式设置所述数据服务器组中的数据服务器的数据分布状态,避免了当添加/删除数据服务器时,引起整个数据库系统的数据分布状态的改变的问题。

附图说明

图1为本发明实施例1提供的数据库系统的结构示意图。

图2为本发明实施例1提供的数据库系统访问方法的流程图。

图3为本发明实施例1提供的数据库系统访问装置的结构示意图。

图4为本发明实施例2提供的数据库系统结构示意图。

图5为本发明实施例2提供的数据库系统添加写节点方法流程图。

图6为本发明实施例2提供的数据库系统添加读节点方法流程图。

图7为本发明实施例3提供的数据更新请求访问数据库系统方法流程图。

图8为本发明实施例3提供的数据查询请求访问数据库系统方法流程图。

具体实施方式

为使本发明要解决的技术问题、技术方案和优点更加清楚,下面将结合附图及具体实施例进行详细描述。

图1为本发明实施例1提供的数据库系统的结构示意图。如图所示,所述数据库系统,包括:

数据服务器组,由多台数据服务器组成,所述数据服务器用于存储数据,并接收客户端发送的数据操作请求来对存储的数据执行相应的操作;

主服务器,用于设置所述数据服务器组中的数据服务器的数据分布状态,并将所述数据分布状态发送给所述客户端以供所述客户端根据所述数据分布状态将所述数据操作请求发送给对应的所述数据服务器,所述数据分布状态包括所述数据服务器组中的每一数据服务器所存储的数据范围。

在上述技术方案中,数据库系统由多台数据服务器和主机服务器组成,所述数据服务器用于存储数据,并接收客户端发送的数据操作请求来对存储的数据执行相应的操作,所述主机服务器设置所述数据服务器组中的数据服务器的数据分布状态,并将所述数据分布状态发送给所述客户端,由客户端根据所述数据分布状态将所述数据操作请求发送给对应的所述数据服务器。从而实现了由客户端获取数据库系统的数据分布状态,来负责对数据操作请求的分拆操作,将待处理的增添、删除、修改操作请求直接发送到负责此部分数据的服务器之上,避免了由主服务器负责对数据操作请求的分拆操作,使得主服务器成为系统的瓶颈所在,容易成为故障点,足以引发一定范围的数据库异常的问题。

在现有技术中,当添加/删除数据服务器时,会引起整个数据库系统的数据分布状态的改变,限制了数据库系统的性能扩展和发挥。

为了解决上述技术问题,进一步地,所述主服务器可以采用封闭式环形分布方式设置所述数据服务器组中的数据服务器的数据分布状态,使得当添加/删除数据服务器时,只需要对在所述封闭式环形分布的数据服务器组中位于所述添加/删除的数据服务器的前一个/后一个数据服务器中的数据进行重新分布。

在上述技术方案中,主服务器采用封闭式环形分布方式设置所述数据服务器组中的数据服务器的数据分布状态,当添加数据服务器时,只需要对在所述封闭式环形分布的数据服务器组中位于所述添加的数据服务器的前一个数据服务器中的数据进行重新分布;当删除数据服务器或者当某台数据服务器发生故障时,只需要对在所述封闭式环形分布的数据服务器组中位于所述删除的数据服务器的后一个数据服务器中的数据进行重新分布。

上述的数据库系统当主服务器发生故障时,会引起数据库系统的异常。

为了解决上述技术问题,进一步地,所述主服务器可以包括多台服务器,其中一台服务器为主用服务器,其他服务器为备用服务器。

在上述技术方案中,所述主服务器包括多台服务器,每台服务器存储的数据相同,具有相同的作用,其中一台服务器为主用服务器,其他服务器为备用服务器,当主用服务器发生故障时,可以随时启用备用服务器中的一台作为主用服务器,从而避免了引起数据系统的异常的问题。

上述的数据库系统当某台数据服务器发生故障时,会造成数据的丢失。

为了解决上述技术问题,进一步地,数据可以在所述多台数据服务器中冗余存储,其中冗余存储是指在所述多台数据服务器的不同区域存储有同一数据的多份副本。

在上述技术方案中,数据在所述多台数据服务器中冗余存储,即在所述多台数据服务器的不同区域存储有同一数据的多份副本,当某台数据服务器发生故障时,该数据服务器中存储的数据在其他数据服务器中还存有副本,从而,避免了数据丢失的问题。

在现有技术中,由于查询数据操作请求次数远远多于增、删、改等数据操作请求次数,由一台数据服务器同时处理查询数据操作请求及增、删、改等数据操作请求会造成数据服务器的查询瓶颈,影响数据服务器的性能。

为了解决上述技术问题,进一步地,所述数据服务器组可以包括:读数据服务器组,包括多台读数据服务器,用于存储数据,并接收客户端发送的查询数据操作请求来执行相应的操作;写数据服务器组,包括多台写数据服务器,用于存储数据,并接收客户端发送的除查询数据操作请求以外的数据操作请求来执行相应的操作;所述每台写数据服务器均对应多台所述读数据服务器,所述写数据服务器存储的数据与对应的所述多台读数据服务器存储的数据相同。

在上述技术方案中,所述数据服务器组包括读数据服务器组及写数据服务器组,读数据服务器组包括多台读数据服务器,写数据服务器组包括多台写数据服务器,每台写数据服务器均对应多台所述读数据服务器,所述写数据服务器存储的数据与对应的所述多台读数据服务器存储的数据相同。客户端发送的查询数据操作请求发送到查询服务器中,将插入修改和删除的数据操作请求发送到写数据服务器中,写数据服务器通过后台redo log等方式将数据的更改同步到查询服务器。从而扩宽了数据库系统的查询瓶颈,提高了数据服务器的性能。

图2为本发明实施例1提供的数据库系统访问方法的流程图。如图所示,所述方法包括:

步骤S201,根据存储的数据服务器组中的数据服务器的数据分布状态,确定接收待处理的数据操作请求的目标数据服务器;

步骤S202,将所述待处理的数据操作请求发送到所述目标数据服务器,以使得所述目标数据服务器根据所述待处理的数据操作请求进行相应的操作;

步骤S203,接收所述目标数据服务器发送的与所述待处理的数据操作请求对应的操作结果。

在上述技术方案中,客户端根据数据库系统数据服务器组中的数据服务器的数据分布状态,确定接收待处理的数据操作请求的目标数据服务器;将所述待处理的数据操作请求发送到所述目标数据服务器,并接收由所示目标数据服务器发送的相应的操作结果。从而实现了由客户端获取数据库系统的数据分布状态,来负责对数据操作请求的分拆操作,将待处理的增添、删除、修改操作请求直接发送到负责此部分数据的服务器之上,避免了由主服务器负责对数据操作请求的分拆操作,使得主服务器成为系统的瓶颈所在,容易成为故障点,足以引发一定范围的数据库异常的问题。

由于数据库系统中可以添加/删除数据服务器,因此会导致数据服务器组中的数据服务器的数据分布状态的改变,此时,在客户端存储的数据服务器组中的数据服务器的数据分布状态为错误的。

为了解决上述技术问题,进一步地,所述根据存储的数据服务器组中的数据服务器的数据分布状态,确定接收待处理的数据操作请求的目标数据服务器之前,还可以包括:向主服务器发送所述数据服务器组中的数据服务器的数据分布状态是否更新的询问;当接收到所述主服务器发送的所述数据分布状态已发生更新的消息时,向所述主服务器发送获取所述数据分布状态的请求;接收并存储所述主服务器发送的所述数据分布状态。

在上述技术方案中,客户端在确定接收待处理的数据操作请求的目标数据服务器之前,向主服务器询问所述数据服务器组中的数据服务器的数据分布状态是否更新,当主服务器反馈的消息表明所述数据分布状态已发生更新时,客户端向所述主服务器发送获取所述数据分布状态的请求,接收并存储所述主服务器发送的新的数据分布状态,以避免客户端存储的数据服务器组中的数据服务器的数据分布状态为错误的,而当主服务器反馈的消息表明所述数据服务器组中的数据服务器的数据分布状态没有发生更新时,则不需要获取数据服务器组中的数据服务器的数据分布状态以避免重复获取影响客户端的性能。

由于一条数据操作请求涉及的数据范围可以在多台数据服务器的数据存储范围内,因此在确定该数据操作请求的目标数据服务器时,无法将该数据操作请求与某一台目标数据服务器直接映射。

为了解决上述技术问题,进一步地,所述根据存储的数据服务器组中的数据服务器的数据分布状态,确定接收待处理的数据操作请求的目标数据服务器,可以包括:确定所述待处理的数据操作请求所涉及的数据范围;根据所述待处理的数据操作请求所涉及的数据范围及所述数据服务器组中的数据服务器的数据分布状态确定目标数据服务器范围;根据所述目标数据服务器范围的数据分布状态拆分所述待处理的数据操作请求,所述每条拆分后的数据操作请求所涉及的数据在一台数据服务器存储的数据范围内;为所述每条拆分后的数据操作请求确定目标数据服务器。

在上述技术方案中,客户端根据待处理的数据操作请求所涉及的数据范围及所述数据服务器组中数据服务器的数据分布状态,确定接收待处理的数据操作请求的目标数据服务器。例如数据服务器组中数据服务器的数据分布状态为:数据服务器A存储的数据范围为字段G大于0小于1000,数据服务器B存储的数据范围为字段G大于等于1000小于2000,数据服务器C存储的数据范围为字段G大于等于2000小于3000,数据服务器D存储的数据范围为字段G大于等于3000小于4000,而数据操作请求所涉及的数据范围为字段G大于1500小于3200,则可以确定目标数据服务器范围包括数据服务器B、数据服务器C及数据服务器D。因此,该数据操作请求需要拆分为三条数据操作请求,第一条数据操作请求涉及的数据范围为字段G大于1500小于2000,第二条数据操作请求涉及的数据范围为字段G大于等于2000小于3000,第三条数据操起请求涉及的数据范围为字段G大于等于3000小于3200。然后为所述每条拆分后的数据操作请求确定目标数据服务器。对数据操作请求的拆分根据涉及的数据范围及数据服务器的数据分布状态来确定,当数据操作请求涉及的数据范围在一台数据服务器的数据存储范围内时,则无需对数据操作请求进行拆分。

由于查询数据操作请求次数远远多于增、删、改等数据操作请求次数,由一台数据服务器同时处理查询数据操作请求及增、删、改等数据操作请求会造成数据服务器的查询瓶颈,影响数据服务器的性能。

为了解决上述技术问题,进一步地,所述数据服务器组可以包括:读数据服务器组,包括多台读数据服务器,用于存储数据,并接收客户端发送的查询数据操作请求来执行相应的操作;写数据服务器组,包括多台写数据服务器,用于存储数据,并接收客户端发送的除查询数据操作请求以外的数据操作请求来执行相应的操作;所述每台写数据服务器均对应多台所述读数据服务器,所述写数据服务器存储的数据与对应的所述多台读数据服务器存储的数据相同。所述根据所述数据操作请求的类型,为所述每条拆分后的数据操作请求确定目标数据服务器,可以具体为:确定所述待处理的数据操作请求的类型;当所述待处理的数据操作请求为除查询操作之外的数据操作请求时,从所述每条拆分后的数据操作请求对应的所述数据服务器中确定写数据服务器为目标数据服务器;当所述待处理的数据操作请求为查询操作请求时,从所述每条拆分后的数据操作请求对应的所述数据服务器中确定一台读服务器为目标数据服务器。

在上述技术方案中,客户端根据待处理的数据操作请求的类型,确定所述拆分后的数据操作请求的目标数据服务器。

进一步地,所述从所述每条拆分后的数据操作请求对应的所述数据服务器中确定一台读数据服务器为目标数据服务器,可以具体为:根据负载均衡算法从所述每条拆分后的数据操作请求对应的所述数据服务器中确定一台读数据服务器为目标数据服务器。

在上述技术方案中,当待处理的数据操作请求为查询操作时,每条拆分后的数据操作请求对应的所述数据服务器中包括多台读数据服务器,每台读数据服务器中存储的数据相同,可以根据负载均衡算法从这些读数据服务器中确定一台读数据服务器为目标数据服务器,当然也可以根据其他算法来确定一台性能最好、状态最闲的读数据服务器为目标数据服务器。

图3为本发明实施例1提供的数据库系统访问装置的结构示意图。如图所示,所述装置包括:

确定模块,用于根据存储的数据服务器组中的数据服务器的数据分布状态,确定接收待处理的数据操作请求的目标数据服务器;

第一发送模块,用于将所述待处理的数据操作请求发送到所述目标数据服务器,以使得所述目标数据服务器根据所述待处理的数据操作请求进行相应的操作;

第一接收模块,用于接收所述目标数据服务器发送的与所述待处理的数据操作请求对应的操作结果。

在上述技术方案中,确定模块根据数据服务器组中的数据服务器的数据分布状态,确定接收待处理的数据操作请求的目标数据服务器,由第一发送模块将所述待处理的数据操作请求发送到所述目标数据服务器,第一接收模块接收所述目标数据服务器发送的与所述待处理的数据操作请求对应的操作结果。从而避免了由主服务器负责对数据操作请求的分拆操作,使得主服务器成为系统的瓶颈所在,容易成为故障点,足以引发一定范围的数据库异常的问题。

进一步地,所述装置还包括:第二发送模块,用于向主服务器发送所述数据服务器组中的数据服务器的数据分布状态是否更新的询问;第三发送模块,用于当接收到所述主服务器发送的所述数据分布状态已发生更新的消息时,向所述主服务器发送获取所述数据分布状态的请求;第二接收模块,用于接收并存储所述主服务器发送的所述数据分布状态。

进一步地,所述确定模块,包括:第一确定单元,用于确定所述待处理的数据操作请求所涉及的数据范围;第二确定单元,用于根据所述待处理的数据操作请求所涉及的数据范围及所述数据服务器组中的数据服务器的数据分布状态确定目标数据服务器范围;拆分单元,用于根据所述目标数据服务器范围的数据分布状态拆分所述待处理的数据操作请求,所述每条拆分后的数据操作请求所涉及的数据在一台数据服务器存储的数据范围内;第三确定单元,用于为所述每条拆分后的数据操作请求确定目标数据服务器。

进一步地,所述数据服务器组包括:读数据服务器组,包括多台读数据服务器,用于存储数据,并接收客户端发送的查询数据操作请求来执行相应的操作;写数据服务器组,包括多台写数据服务器,用于存储数据,并接收客户端发送的除查询数据操作请求以外的数据操作请求来执行相应的操作;所述每台写数据服务器均对应多台所述读数据服务器,所述写数据服务器存储的数据与对应的所述多台读数据服务器存储的数据相同。所述第三确定单元,还包括:第一确定子单元,用于确定所述待处理的数据操作请求的类型;第二确定子单元,用于当所述待处理的数据操作请求为除查询操作之外的数据操作请求时,从所述每条拆分后的数据操作请求对应的所述数据服务器中确定写数据服务器为目标数据服务器;第三确定子单元,用于当所述待处理的数据操作请求为查询操作请求时,从所述每条拆分后的数据操作请求对应的所述数据服务器中确定一台读服务器为目标数据服务器。

图4为本发明实施例2提供的数据库系统结构示意图。如图所示,所示数据库系统包括:

核心状态节点:用于实现实施例1中主服务器的作用。

写节点环:包括多个节点,用于实现实施例1中数据服务器组中的写数据服务器组的作用,每个节点对应于一台写数据服务器。

读节点环:包括多个节点。用于实现实施例1中数据服务器组中的读数据服务器组的作用,每个节点对应于一台读数据服务器。

节点在横向为采用封闭式环形分布,在纵向采用读写分离,即每个写节点对应的纵向方向上有多个读节点,且写节点中存储的数据与其所对应的多个读节点中存储的数据相同。

客户端在收到用户数据更新请求后,发送消息到核心状态节点以查询节点状态信息是否发生更新,如果发生更新则从核心状态节点获取节点状态信息。客户端根据节点状态信息,对待处理的用户数据更新请求进行分析,如果用户数据更新请求涉及的数据范围分布在不同的节点中,则需要将用户数据更新请求拆分,以分别对应不同的节点即服务器,多条拆分后的请求可以并发处理,由于用户数据请求为更新请求,因此,客户端将拆分后的请求发送到写节点环上的写数据服务器中进行处理。

客户端在收到用户数据查询请求后,发送消息到核心状态节点以查询节点状态信息是否发生更新,如果发生更新则从核心状态节点获取节点状态信息。客户端根据节点状态信息,对待处理的用户数据查询请求进行分析,如果用户数据查询请求涉及的数据范围分布在不同的节点中,则需要将用户数据查询请求拆分,以分别对应不同的节点即服务器,从而可以实现引擎关联驱动查询,多条拆分后的请求可以并发处理,由于用户数据请求为查询请求,因此,客户端将拆分后的请求发送到读节点环上的读数据服务器中进行处理,并可通过负载均衡算法从多个读数据服务器中选择一台性能最优的来对用户数据查询请求进行处理。

图5为本发明实施例2提供的数据库系统添加写节点方法流程图。如图所示,包括:

步骤S501,确定新节点的数据范围。

步骤S502,新节点拷贝基线数据;在此步骤中,新节点从写节点环上位于新节点的前一个节点中拷贝基线数据。例如节点A存储的数据范围为字段G大于0小于1000,节点B存储的数据范围为字段G大于等于1000小于2000,节点C存储的数据范围为字段G大于等于2000小于3000,节点D存储的数据范围为字段G大于等于3000小于4000,现发现节点B的访问请求量较大,需要添加节点以分担节点B的压力,因此,添加一个节点B1,在确定节点B1的数据范围为字段G大于等于1500小于2000后,需要从节点B中将数据范围为字段G大于等于1500小于2000的数据拷贝到节点B1中作为节点B1的基线数据。

步骤S503,新节点获取增量数据;由于在步骤S502中,进行基线数据的拷贝时,由于数据量较大,拷贝需要一定的时间。在进行数据拷贝的时间内,所拷贝的数据可能会发生更新,因此,在数据拷贝完成之后,需要从写节点环上位于新节点的前一个节点中获取在拷贝基线数据过程中发生的更新的增量数据。

步骤S504,新节点再次获取增量数据,向核心状态节点注册新节点,向核心状态节点申请锁定所负责数据的修改;在步骤S503中,新节点获取增量数据的过程中,新节点所负责的数据范围仍可能会发生更新,因此,需要在上述获取增量数据完成后,再次从写节点环上位于新节点的前一个节点中获取在上述获取增量数据过程中发生更新的数据。并且,由于上次获取增量数据的过程较短,在此过程中发生的更新的数据量不会很大,因此本次增量数据的获取过程持续时间很短,因此,可以向核心状态节点注册新节点,向核心状态节点申请锁定所负责数据的修改,防止客户端在本次增量数据的获取过程中对新节点所负责的数据进行修改,造成数据的不一致。同时,由于本次增量数据的获取过程持续时间很短,锁定数据的修改并不会对客户端造成严重的影响。

步骤S505,向核心状态节点申请开放所负责数据的修改;在此步骤中,向核心状态节点申请解除对新节点所负责的数据修改的锁定,客户端可以将之前无法执行的数据更新请求重新发送至新节点以执行相应的操作。

步骤S506,核心状态节点通知相应的读节点重新分配的写数据节点环信息;在此步骤中核心状态节点通知与写节点环上位于新节点的前一个节点对应的读节点,其对应的写节点的数据信息发生更新,读节点的信息根据写节点的数据分布进行调整。

步骤S507,核心状态节点更新节点状态信息;受影响的读节点重新建立与写节点的对应关系,核心状态节点更新节点状态信息。

图6为本发明实施例2提供的数据库系统添加读节点方法流程图。如图所示,包括:

步骤S601,确定新节点的数据范围。

步骤S602,连接对应的写节点;在此步骤中,在确定新节点的数据范围后,需要连接新节点与其对应的写节点。

步骤S603,从写节点获取基线数据;新的读节点中存储的数据与其对应的写节点存储的数据相同,因此,从对应的写节点中获取写节点所存储的数据作为新节点的基线数据。

步骤S604,从写节点获取增量数据;在步骤S603中,新节点从写节点获取基线数据的过程中,由于数据量较大,获取基线数据的过程持续时间较长,写节点的数据有可能发生更新。因此需要从写节点中获取在新节点从写节点获取基线数据的过程中写节点发生更新的数据。

步骤S605,向核心状态节点注册新节点。

步骤S606,核心状态节点更新节点状态信息。

使用本发明实施例2提供的数据库系统,当节点出错时,客户端发送到该节点的数据请求返回结果失败,则该数据请求将会发送到存储了出错节点的数据的备份数据的其他节点上。当节点恢复后,数据库系统通过上述添加写节点/读节点的方法恢复。

图7为本发明实施例3提供的数据更新请求访问数据库系统方法流程图。如图所示,包括:

步骤S701,向核心状态服务器发送消息查询是否有节点变更,如果是,进入步骤S702,否则,进入步骤S703。

步骤S702,从核心状态服务器获取更新后的节点状态信息。

步骤S703,判断是否需要拆分数据更新请求,如果是,进入步骤S704,否则,进入步骤S705;在此步骤中,根据节点状态信息即每个节点所存储的数据范围及数据更新请求所涉及的数据范围判断该数据更新请求是否需要拆分。

步骤S704,拆分数据更新请求;在此步骤中,拆分数据更新请求,使得拆分后的每条数据更新请求所涉及的数据范围在一个节点存储的数据范围内。

步骤S705,确定接收数据更新请求的目标写节点。

步骤S706,将数据更新请求发送到目标写节点。

步骤S707,接收目标写节点发送的结果;接收目标写节点发送的与数据更新请求对应的操作结果,如数据更新操作是否成功、对几条数据进行更新等信息。

图8为本发明实施例3提供的数据查询请求访问数据库系统方法流程图。如图所示,包括:

步骤S801,向核心状态服务器发送消息查询是否有节点变更,如果是,进入步骤S802,否则,进入步骤S803。

步骤S802,从核心状态服务器获取更新后的节点状态信息。

步骤S803,判断是否需要拆分数据查询请求,如果是,进入步骤S704,否则,进入步骤S805;在此步骤中,根据节点状态信息即每个节点所存储的数据范围及数据查询请求所涉及的数据范围判断该数据查询请求是否需要拆分。

步骤S804,拆分数据查询请求;在此步骤中,拆分数据查询请求,使得拆分后的每条数据查询请求所涉及的数据范围在一个节点存储的数据范围内。

步骤S805,确定接收数据查询请求的目标读节点。

步骤S806,将数据查询请求发送到目标读节点。

步骤S807,接收目标读节点发送的结果;接收目标读节点发送的与数据查询请求对应的操作结果,如数据查询操作所获得查询数据。

以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明所述原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号