分布式数据库的数据分区分配方法及装置的制造方法

文档序号:9756897阅读:244来源:国知局
分布式数据库的数据分区分配方法及装置的制造方法
【技术领域】
[0001] 本发明涉及分布式数据库技术邻域,尤其涉及分布式数据库的数据分区分配方法 及装置。
【背景技术】
[0002] 分布式数据库具有多个用于存储数据的数据分区,不同的数据分区可以位于不同 的物理节点上。而分布式数据库通常都支持在一个数据分区内存储同一份数据与多个不同 时间戳对应的多个版本。当某数据分区有新数据写入时,会为该新数据打上本地时间戳。 [0003] 当所述数据分区对应的本地时间往回跳变时,例如,分布式数据库的软件或硬件 故障导致本地时间往回跳变;或者,管理该数据分区的分区管理模块迀移到另外一个物理 节点上运行,而新的物理节点的本地时间滞后于原物理节点的本地时间。这样,可能出现 在所述数据分区中新写入的数据的时间戳滞后于已经存储的数据的时间戳,而读取数据时 通常只读取最新的时间戳所标记数据,即读取得到所述老数据,而非新数据,换言之,新数 据被原来的数据覆盖掉。例如,数据分区新写入的数据(新数据)对应的时间戳为2014年 1月1日12:30,而该数据分区中已存在有时间戳为2014年1月1日13:30的数据(老数 据),由于新数据的时间戳滞后于老数据的时间戳,读取得到的是老数据。
[0004] 为解决新数据被老数据覆盖的问题,分区管理模块记录该数据分区最新写入的数 据对应的时间戳T1,当该数据分区有新数据要写入时,所述分区管理模块获取本地时间为 T2,如果T2 < T1,即T2滞后于T1,则该分区管理模块直接退出服务,不写入新的数据,从而 避免新数据被老数据覆盖。但是,此种方法在判断出新的物理节点的本地时间滞后于该数 据分区中最新写入的数据对应的时间戳T1的现象时,使分区管理模块退出服务,增加了该 分区管理模块的服务中断时间,从而降低了分布式数据库的数据存储速率和效率。

【发明内容】

[0005] 本发明实施例中提供了一种分布式数据库的数据分区分配方法及装置,在避免新 写入的数据不被老数据覆盖的前提下,提高分布式数据库的数据存储速率和效率。
[0006] 为实现上述发明目的,本发明实施例公开了如下技术方案:
[0007] 第一方面,提供一种分布式数据库的数据分区分配方法,包括:
[0008] 检测所述数据分区,确定是否需要为所述数据分区重新分配分区管理模块;
[0009] 当需要为所述数据分区重新分配分区管理模块时,根据负载均衡算法确定所述数 据分区对应的待选分区管理模块,并获取所述待选分区管理模块的当前时刻;
[0010] 根据所述数据分区的时刻信息和所述待选分区管理模块的当前时刻,从所述待选 分区管理模块中确定目标分区管理模块;其中,所述目标分区管理模块用于管理所述数据 分区的读写操作,且所述目标分区管理模块的当前时刻超前于所述数据分区的时刻信息。 [0011] 结合第一方面,在第一方面的第一种可能的实现方式中,所述根据所述数据分区 的时刻信息和所述待选分区管理模块的当前时刻,从所述待选分区管理模块中确定出目标 分区管理模块,包括:
[0012] 获取所述数据分区中存储的最新数据的时间戳;
[0013] 比较所述待选分区管理模块的当前时刻与所述时间戳之间的大小;
[0014] 从当前时刻超前于所述最新数据的时间戳的待选分区管理模块中,确定出所述目 标分区管理模块。
[0015] 结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式 中,所述获取所述数据分区中存储的最新数据的时间戳,包括:
[0016] 获取所述数据分区记录的最新一次修改所述数据分区内的数据的修改时间戳;
[0017] 或者,
[0018] 获取所述数据分区内存储的数据内容中的时间戳字段内的时间戳。
[0019] 结合第一方面,在第一方面的第三种可能的实现方式中,所述根据所述数据分区 的时刻信息和所述待选分区管理模块的当前时刻,从所述待选分区管理模块中确定出目标 分区管理模块,包括:
[0020] 获取所述数据分区对应的当前分区管理模块的当前时刻;
[0021] 比较所述待选分区管理模块的当前时刻与所述当前分区管理模块的当前时刻之 间的大小;
[0022] 从当前时刻超前于所述当前分区管理模块的当前时刻的待选分区管理模块中,确 定出所述目标分区管理模块。
[0023] 结合第一方面,在第一方面的第四种可能的实现方式中,所述检测所述数据分区 是否需要重新分配分区管理模块,包括:
[0024] 当检测到所述数据分区所在的物理节点故障时,确定需要为所述数据分区重新分 配分区管理模块;
[0025] 或者,
[0026] 当检测到所述数据分区对应的当前分区管理模块故障时,确定需要为所述数据分 区重新分配分区管理模块;
[0027] 或者,
[0028] 当检测到所述数据分区需要数据分裂时,确定需要为所述数据分区分裂得到的新 的数据分区需要重新分配分区管理模块。
[0029] 第二方面,提供一种分布式数据库的数据分区分配装置,包括:
[0030] 检测单元,用于检测所述数据分区,确定是否需要为所述数据分区重新分配分区 管理模块;
[0031] 第一确定单元,用于当需要为所述数据分区重新分配分区管理模块时,根据负载 均衡算法确定所述数据分区对应的待选分区管理模块;
[0032] 获取单元,用于获取所述待选分区管理模块的当前时刻;
[0033] 第二确定单元,用于根据所述数据分区的时刻信息和所述待选分区管理模块的当 前时刻,从所述待选分区管理模块中确定目标分区管理模块;
[0034] 其中,所述目标分区管理模块用于管理所述数据分区的读写操作,且所述目标分 区管理模块的当前时刻超前于所述数据分区的时刻信息。
[0035] 结合第二方面,在第二方面的第一种可能的实现方式中,所述第二确定单元,包 括:
[0036] 第一获取子单元,用于获取所述数据分区中存储的最新数据的时间戳;
[0037] 第一比较子单元,用于比较所述待选分区管理模块的当前时刻与所述时间戳之间 的大小;
[0038] 第一确定子单元,用于从当前时刻超前于所述最新数据的时间戳的待选分区管理 模块中,确定出所述目标分区管理模块。
[0039] 结合第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式 中,所述第一获取子单元,具体用于:
[0040] 获取所述数据分区记录的最新一次修改所述数据分区内的数据的修改时间戳;
[0041] 或者,
[0042] 获取所述数据分区内存储的数据内容中的时间戳字段内的时间戳。
[0043] 结合第二方面,在第二方面的第三种可能的实现方式中,所述第二确定单元,包 括:
[0044] 第二获取子单元,用于获取所述数据分区对应的当前分区管理模块的当前时刻;
[0045] 第二比较子单元,用于比较所述待选分区管理模块的当前时刻与所述当前分区管 理模块的当前时刻之间的大小;
[0046] 第二确定子单元,用于从当前时刻超前于所述当前分区管理模块的当前时刻的待 选分区管理模块中,确定出所述目标分区管理模块。
[0047] 结合第二方面,在第二方面的第四种可能的实现方式中,所述检测单元,具体用 于:
[0048] 当检测到所述数据分区所在的物理节点故障时,确定需要为所述数据分区重新分 配分区管理模块;
[0049] 或者,
[0050] 当检测到所述数据分区对应的当前分区管理模块故障时,确定需要为所述数据分 区重新分配分区管理模块;
[0051] 或者,
[0052] 当检测到所述数据分区需要数据分裂时,确定需要为所述数据分区分裂得到的新 的数据分区需要重新分配分区管理模块。
[0053] 第三方面,提供一种分布式数据库的管理设备,包括:处理器和存储器,其中,所述 存储器内存储有所述处理器能够执行的操作指令,以使所述处理器执行以下步骤;
[0054] 检测所述数据分区,确定是否需要为所述数据分区重新分配分区管理模块;
[0055] 当需要为所述数据分区重新分配分区管理模块时,根据负载均衡算法确定所述数 据分区对应的待选分区管理模块;
[0056] 获取所述待选分区管理模块的当前时刻;
[0057] 根据所述数据分区的时刻信息和所述待选分区管理模块的当前时刻,从所述待选 分区管理模块中确定目标分区管理模块;
[0058] 其中,所述目标分区管理模块用于管理所述数据分区的读写操作,且所述目标分 区管理模块的当前时刻超前于所述数据分区的时刻信息。
[0059] 结合第三方面,在第三方面的第一种可能的实现方式中,所述处理器根据所述数 据分区的时刻信息和所述待选分区管理模块的当前时刻,从所述待选分区管理模块中确定 目标分区管理模块,具体用于:
[0060] 获取所述数据分区中存储的最新数据的时间戳;
[0061] 比较所述待选分
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1