一种数据库系统、数据库系统访问方法及装置的制造方法_4

文档序号:8258626阅读:来源:国知局
74]写节点环:包括多个节点,用于实现实施例1中数据服务器组中的写数据服务器组的作用,每个节点对应于一台写数据服务器。
[0075]读节点环:包括多个节点。用于实现实施例1中数据服务器组中的读数据服务器组的作用,每个节点对应于一台读数据服务器。
[0076]节点在横向为采用封闭式环形分布,在纵向采用读写分离,即每个写节点对应的纵向方向上有多个读节点,且写节点中存储的数据与其所对应的多个读节点中存储的数据相同。
[0077]客户端在收到用户数据更新请求后,发送消息到核心状态节点以查询节点状态信息是否发生更新,如果发生更新则从核心状态节点获取节点状态信息。客户端根据节点状态信息,对待处理的用户数据更新请求进行分析,如果用户数据更新请求涉及的数据范围分布在不同的节点中,则需要将用户数据更新请求拆分,以分别对应不同的节点即服务器,多条拆分后的请求可以并发处理,由于用户数据请求为更新请求,因此,客户端将拆分后的请求发送到写节点环上的写数据服务器中进行处理。
[0078]客户端在收到用户数据查询请求后,发送消息到核心状态节点以查询节点状态信息是否发生更新,如果发生更新则从核心状态节点获取节点状态信息。客户端根据节点状态信息,对待处理的用户数据查询请求进行分析,如果用户数据查询请求涉及的数据范围分布在不同的节点中,则需要将用户数据查询请求拆分,以分别对应不同的节点即服务器,从而可以实现引擎关联驱动查询,多条拆分后的请求可以并发处理,由于用户数据请求为查询请求,因此,客户端将拆分后的请求发送到读节点环上的读数据服务器中进行处理,并可通过负载均衡算法从多个读数据服务器中选择一台性能最优的来对用户数据查询请求进行处理。
[0079]图5为本发明实施例2提供的数据库系统添加写节点方法流程图。如图所示,包括:
[0080]步骤S501,确定新节点的数据范围。
[0081]步骤S502,新节点拷贝基线数据;在此步骤中,新节点从写节点环上位于新节点的前一个节点中拷贝基线数据。例如节点A存储的数据范围为字段G大于O小于1000,节点B存储的数据范围为字段G大于等于1000小于2000,节点C存储的数据范围为字段G大于等于2000小于3000,节点D存储的数据范围为字段G大于等于3000小于4000,现发现节点B的访问请求量较大,需要添加节点以分担节点B的压力,因此,添加一个节点BI,在确定节点BI的数据范围为字段G大于等于1500小于2000后,需要从节点B中将数据范围为字段G大于等于1500小于2000的数据拷贝到节点BI中作为节点BI的基线数据。
[0082]步骤S503,新节点获取增量数据;由于在步骤S502中,进行基线数据的拷贝时,由于数据量较大,拷贝需要一定的时间。在进行数据拷贝的时间内,所拷贝的数据可能会发生更新,因此,在数据拷贝完成之后,需要从写节点环上位于新节点的前一个节点中获取在拷贝基线数据过程中发生的更新的增量数据。
[0083]步骤S504,新节点再次获取增量数据,向核心状态节点注册新节点,向核心状态节点申请锁定所负责数据的修改;在步骤S503中,新节点获取增量数据的过程中,新节点所负责的数据范围仍可能会发生更新,因此,需要在上述获取增量数据完成后,再次从写节点环上位于新节点的前一个节点中获取在上述获取增量数据过程中发生更新的数据。并且,由于上次获取增量数据的过程较短,在此过程中发生的更新的数据量不会很大,因此本次增量数据的获取过程持续时间很短,因此,可以向核心状态节点注册新节点,向核心状态节点申请锁定所负责数据的修改,防止客户端在本次增量数据的获取过程中对新节点所负责的数据进行修改,造成数据的不一致。同时,由于本次增量数据的获取过程持续时间很短,锁定数据的修改并不会对客户端造成严重的影响。
[0084]步骤S505,向核心状态节点申请开放所负责数据的修改;在此步骤中,向核心状态节点申请解除对新节点所负责的数据修改的锁定,客户端可以将之前无法执行的数据更新请求重新发送至新节点以执行相应的操作。
[0085]步骤S506,核心状态节点通知相应的读节点重新分配的写数据节点环信息;在此步骤中核心状态节点通知与写节点环上位于新节点的前一个节点对应的读节点,其对应的写节点的数据信息发生更新,读节点的信息根据写节点的数据分布进行调整。
[0086]步骤S507,核心状态节点更新节点状态信息;受影响的读节点重新建立与写节点的对应关系,核心状态节点更新节点状态信息。
[0087]图6为本发明实施例2提供的数据库系统添加读节点方法流程图。如图所示,包括:
[0088]步骤S601,确定新节点的数据范围。
[0089]步骤S602,连接对应的写节点;在此步骤中,在确定新节点的数据范围后,需要连接新节点与其对应的写节点。
[0090]步骤S603,从写节点获取基线数据;新的读节点中存储的数据与其对应的写节点存储的数据相同,因此,从对应的写节点中获取写节点所存储的数据作为新节点的基线数据。
[0091]步骤S604,从写节点获取增量数据;在步骤S603中,新节点从写节点获取基线数据的过程中,由于数据量较大,获取基线数据的过程持续时间较长,写节点的数据有可能发生更新。因此需要从写节点中获取在新节点从写节点获取基线数据的过程中写节点发生更新的数据。
[0092]步骤S605,向核心状态节点注册新节点。
[0093]步骤S606,核心状态节点更新节点状态信息。
[0094]使用本发明实施例2提供的数据库系统,当节点出错时,客户端发送到该节点的数据请求返回结果失败,则该数据请求将会发送到存储了出错节点的数据的备份数据的其他节点上。当节点恢复后,数据库系统通过上述添加写节点/读节点的方法恢复。
[0095]图7为本发明实施例3提供的数据更新请求访问数据库系统方法流程图。如图所示,包括:
[0096]步骤S701,向核心状态服务器发送消息查询是否有节点变更,如果是,进入步骤S702,否则,进入步骤S703。
[0097]步骤S702,从核心状态服务器获取更新后的节点状态信息。
[0098]步骤S703,判断是否需要拆分数据更新请求,如果是,进入步骤S704,否则,进入步骤S705 ;在此步骤中,根据节点状态信息即每个节点所存储的数据范围及数据更新请求所涉及的数据范围判断该数据更新请求是否需要拆分。
[0099]步骤S704,拆分数据更新请求;在此步骤中,拆分数据更新请求,使得拆分后的每条数据更新请求所涉及的数据范围在一个节点存储的数据范围内。
[0100]步骤S705,确定接收数据更新请求的目标写节点。
[0101 ] 步骤S706,将数据更新请求发送到目标写节点。
[0102]步骤S707,接收目标写节点发送的结果;接收目标写节点发送的与数据更新请求对应的操作结果,如数据更新操作是否成功、对几条数据进行更新等信息。
[0103]图8为本发明实施例3提供的数据查询请求访问数据库系统方法流程图。如图所示,包括:
[0104]步骤S801,向核心状态服务器发送消息查询是否有节点变更,如果是,进入步骤S802,否则,进入步骤S803。
[0105]步骤S802,从核心状态服务器获取更新后的节点状态信息。
[0106]步骤S803,判断是否需要拆分数据查询请求,如果是,进入步骤S704,否则,进入步骤S805 ;在此步骤中,根据节点状态信息即每个节点所存储的数据范围及数据查询请求所涉及的数据范围判断该数据查询请求是否需要拆分。
[0107]步骤S804,拆分数据查询请求;在此步骤中,拆分数据查询请求,使得拆分后的每条数据查询请求所涉及的数据范围在一个节点存储的数据范围内。
[0108]步骤S805,确定接收数据查询请求的目标读节点。
[0109]步骤S806,将数据查询请求发送到目标读节点。
[0110]步骤S807,接收目标读节点发送的结果;接收目标读节点发送的与数据查询请求对应的操作结果,如数据查询操作所获得查询数据。
[0111]以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明所述原理的前提
当前第4页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1