The invention relates to a method and a device for distributing data partition of distributed data. The method determines the partition management module to be managed according to the load balancing algorithm. Then, the target partition management module is determined from the selected partition management module of the current time ahead of the data partition. The method in the re allocation of partition management module for data partition, partition time information management module choose the current time ahead of data partition as the target partition management module; to avoid when new data is written, only to find the time information at the current time distribution of the data partition for the new partition management module behind the data partition, to partition management module of the new service exit phenomenon, greatly reduce the partition management module interrupt time, improve the rate and efficiency of database storage.
【技术实现步骤摘要】
【国外来华专利技术】
本专利技术涉及分布式数据库技术邻域,尤其涉及分布式数据库的数据分区分配方法及装置。
技术介绍
分布式数据库具有多个用于存储数据的数据分区,不同的数据分区可以位于不同的物理节点上。而分布式数据库通常都支持在一个数据分区内存储同一份数据与多个不同时间戳对应的多个版本。当某数据分区有新数据写入时,会为该新数据打上本地时间戳。当所述数据分区对应的本地时间往回跳变时,例如,分布式数据库的软件或硬件故障导致本地时间往回跳变;或者,管理该数据分区的分区管理模块迁移到另外一个物理节点上运行,而新的物理节点的本地时间滞后于原物理节点的本地时间。这样,可能出现在所述数据分区中新写入的数据的时间戳滞后于已经存储的数据的时间戳,而读取数据时通常只读取最新的时间戳所标记数据,即读取得到所述老数据,而非新数据,换言之,新数据被原来的数据覆盖掉。例如,数据分区新写入的数据(新数据)对应的时间戳为2014年1月1日12:30,而该数据分区中已存在有时间戳为2014年1月1日13:30的数据(老数据),由于新数据的时间戳滞后于老数据的时间戳,读取得到的是老数据。为解决新数据被老数据覆盖的问题,分区管理模块记录该数据分区最新写入的数据对应的时间戳T1,当该数据分区有新数据要写入时,所述分区管理模块获取本地时间为T2,如果T2<T1,即T2滞后于T1,则该分区管理模块直接退出服务,不写入新的数据,从而避免新数据被老数据覆盖。但是,此种方法在判断出新的物理节点 ...
【技术保护点】
一种分布式数据库的数据分区分配方法,其特征在于,包括:检测所述数据分区,确定是否需要为所述数据分区重新分配分区管理模块;当需要为所述数据分区重新分配分区管理模块时,根据负载均衡算法确定所述数据分区对应的待选分区管理模块,并获取所述待选分区管理模块的当前时刻;根据所述数据分区的时刻信息和所述待选分区管理模块的当前时刻,从所述待选分区管理模块中确定目标分区管理模块;其中,所述目标分区管理模块用于管理所述数据分区的读写操作,且所述目标分区管理模块的当前时刻超前于所述数据分区的时刻信息。
【技术特征摘要】
【国外来华专利技术】1.一种分布式数据库的数据分区分配方法,其特征在于,包括:
检测所述数据分区,确定是否需要为所述数据分区重新分配分区管理模块;
当需要为所述数据分区重新分配分区管理模块时,根据负载均衡算法确定所述数据分区
对应的待选分区管理模块,并获取所述待选分区管理模块的当前时刻;
根据所述数据分区的时刻信息和所述待选分区管理模块的当前时刻,从所述待选分区管
理模块中确定目标分区管理模块;其中,所述目标分区管理模块用于管理所述数据分区的读
写操作,且所述目标分区管理模块的当前时刻超前于所述数据分区的时刻信息。
2.根据权利要求1所述的方法,其特征在于,所述根据所述数据分区的时刻信息和所述
待选分区管理模块的当前时刻,从所述待选分区管理模块中确定出目标分区管理模块,包括:
获取所述数据分区中存储的最新数据的时间戳;
比较所述待选分区管理模块的当前时刻与所述时间戳之间的大小;
从当前时刻超前于所述最新数据的时间戳的待选分区管理模块中,确定出所述目标分区
管理模块。
3.根据权利要求2所述的方法,其特征在于,所述获取所述数据分区中存储的最新数据
的时间戳,包括:
获取所述数据分区记录的最新一次修改所述数据分区内的数据的修改时间戳;
或者,
获取所述数据分区内存储的数据内容中的时间戳字段内的时间戳。
4.根据权利要求1所述的方法,其特征在于,所述根据所述数据分区的时刻信息和所述
待选分区管理模块的当前时刻,从所述待选分区管理模块中确定出目标分区管理模块,包括:
获取所述数据分区对应的当前分区管理模块的当前时刻;
比较所述待选分区管理模块的当前时刻与所述当前分区管理模块的当前时刻之间的大
小;
从当前时刻超前于所述当前分区管理模块的当前时刻的待选分区管理模块中,确定出所
述目标分区管理模块。
5.根据权利要求1所述的方法,其特征在于,所述检测所述数据分区是否需要重新分配
分区管理模块,包括:
当检测到所述数据分区所在的物理节点故障时,确定需要为所述数据分区重新分配分区
管理模块;
或者,
当检测到所述数据分区对应的当前分区管理模块故障时,确定需要为所述数据分区重新
分配分区管理模块;
或者,
当检测到所述数据分区需要数据分裂时,确定需要为所述数据分区分裂得到的新的数据
\t分区需要重新分配分区管理模块。
6.一种分布式数据库的数据分区分配装置,其特征在于,包括:
检测单元,用于检测所述数据分区,确定是否需要为所述数据分区重新分配分区管理模
块;
第一确定单元,用于当需要为所述数据分区重新分配分区管理模块时,根据负载均衡算
法确定所述数据分区对应的待选分区管理模块;
获取单元,用于获取所述待选分区管理模块的当前时刻;
第二确定单元,用于根据所述数据分区的时刻信息和所述待选分区管理模块的当前时刻,
从所述待选分区管理模块中确定目标分区管理模块;
其中,所述目标分区管理模块用于管理所述数据分区的读写操作,且所述目标分区管理
模块的当前时刻超前于所述数据分区的时刻信息。
7.根据权利要求6所述的装置,其特征在于,所述第二确定单元,包括:
第一获取子单元,用于获取所述数据分区中存储的最新数据的时间戳;
第一比较子单元,用于比较所述待选分区管理模块的当前时刻与所述时间戳之间的大小;
第一确定子单元,用于从当前时刻超前于所述最新数据的时间戳的待选分区管理模块中,
确定出所述目标分区管理模块。
8.根据权利要求7所述的装置,其特征在于,所述第一获取子单元,具体用于:
获取所述数据分区记录的最新一次修改所述数据分区内的数据的修改时间戳;
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。