数据平衡处理方法技术

技术编号:39774652 阅读:12 留言:0更新日期:2023-12-22 02:22
本说明书实施例公开了一种数据平衡处理方法

【技术实现步骤摘要】
数据平衡处理方法、装置及电子设备


[0001]本申请涉及计算机
,尤其涉及一种数据平衡处理方法

装置及电子设备


技术介绍

[0002]随着计算机的发展,数据的种类和数量越来越多,数据库存储系统的种类和数量也越来越多

数据库存储系统中的数据需要进行合理的管理,以确保数据的准确以及数据查询

处理的效率

随着摩尔定律的结束和信息时代的到来,数据管理系统利用机群来处理快速增长的大量数据

因此基于共享无系统的并行数据管理系统由于其可扩展性而被广泛使用

在无共享的并行数据管理系统中,记录被分片到一个节点集群中,这些节点通过互连网络相互通信,使得这些系统在节点数量增加时可以水平扩展

数据库存储系统中存储有大量的数据,如何实现数据库存储系统中各个节点的数据平衡,是保证系统性能和查询效率的关键

[0003]早期的并行数据管理系统,通常假设节点集群相对静态,然而这个假设现在已经不成立了,动态调整集群大小是可取的,有很多原因,例如:在云计算时代,动态地调整集群大小可以在工作负载发生变化时更经济

此外,随着存储数据随时间积累,集群也需要扩展才能更好地服务于查询工作负载,为了扩展集群存储的记录必须重新平衡,以便可以被重新分区到新的节点集合中

不管是数据库存储系统中各个节点对于数据的存储,还是需要对系统中的数据进行调整,都需要尽量保证系统中数据的平衡,才能使得系统具有良好的性能

[0004]因此,如何提供一种数据平衡处理方案,能够保证数据库存储系统的数据平衡,确保系统的性能,是本领域亟需解决的技术问题


技术实现思路

[0005]本说明书实施例提供了一种数据平衡处理方法

装置

设备

存储介质

计算机程序产品,实现了数据库存储系统的数据平衡,提升了数据库存储系统的性能

[0006]一方面,本说明书实施例提供了一种数据平衡处理方法,所述方法应用于数据库存储系统,所述方法包括:接收节点移除或新增节点触发的数据平衡请求,并获取所述数据库存储系统中各个节点的本地数据存储目录;所述本地数据存储目录用于表征各个节点中的数据在各个节点的分区数据集中的数据存储桶中的存储路径;根据各个节点的本地数据存储目录,确定出各个节点中分区数据集的分区负载和数据存储桶的桶负载;从各个节点的分区数据集中选择分区负载最大的第一分区数据集和分区负载最小的第二分区数据集;将所述第一分区数据集中桶负载最小的数据存储桶预分配到所述第二分区数据集中,分别计算数据存储桶预分配前后所述第一分区数据集和所述第二分区数据集之间的
分配前负载差异和分配后负载差异,若所述分配后负载差异小于所述分配前负载差异,则将所述桶负载最小的数据存储桶转移至所述第二分区数据集对应的本地数据存储目录,将所述桶负载最小的数据存储桶作为待移动数据存储桶,将所述第二分区数据集作为所述待移动数据存储桶的目标分区数据集,并返回所述从各个节点的分区数据集中选择所述分区负载最大的第一分区数据集和所述分区负载最小的第二分区数据集的步骤,直至所述第一分区数据集和所述第二分区数据集的分配后负载差异大于或等于分配前负载差异;将所述待移动数据存储桶中的数据移动至对应的目标分区数据集,以实现所述数据库存储系统中的数据平衡

[0007]另一方面提供了一种数据平衡处理装置,所述装置应用于数据库存储系统,所述装置包括:节点目录获取模块,用于接收节点移除或新增节点触发的数据平衡请求,并获取所述数据库存储系统中各个节点的本地数据存储目录;所述本地数据存储目录用于表征各个节点中的数据在各个节点的分区数据集中的数据存储桶中的存储路径;负载计算模块,用于根据各个节点的本地数据存储目录,确定出各个节点中分区数据集的分区负载和数据存储桶的桶负载;分区数据集选择模块,用于从各个节点的分区数据集中选择分区负载最大的第一分区数据集和分区负载最小的第二分区数据集;桶重新分配模块,用于将所述第一分区数据集中桶负载最小的数据存储桶预分配到所述第二分区数据集中,分别计算数据存储桶预分配前后所述第一分区数据集和所述第二分区数据集之间的分配前负载差异和分配后负载差异,若所述分配后负载差异小于所述分配前负载差异,则将所述桶负载最小的数据存储桶转移至所述第二分区数据集对应的本地数据存储目录,将所述桶负载最小的数据存储桶作为待移动数据存储桶,将所述第二分区数据集作为所述待移动数据存储桶的目标分区数据集,并返回所述从各个节点的分区数据集中选择所述分区负载最大的第一分区数据集和所述分区负载最小的第二分区数据集的步骤,直至所述第一分区数据集和所述第二分区数据集的分配后负载差异大于或等于分配前负载差异;数据移动模块,用于将所述待移动数据存储桶中的数据移动至对应的目标分区数据集,以实现所述数据库存储系统中的数据平衡

[0008]另一方面提供了一种电子设备,包括:处理器;用于存储所述处理器可执行指令的存储器;其中,所述处理器被配置为执行所述指令,以实现上述任一项所述的数据平衡处理方法

[0009]另一方面提供了一种计算机可读存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得所述电子设备能够执行上述任一数据平衡处理方法

[0010]另一方面提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中

计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各种可选实现方式中提供的数据平衡处理方法

[0011]本说明书实施例提供的数据平衡处理方法

装置

设备

存储介质

计算机程序产
品,具有如下技术效果:本说明书实施例提供的数据平衡处理方法,将数据采用分区

分桶存储的方式,在接收到数据平衡请求后,获取各个节点的本地数据存储目录,再基于本地数据存储目录确定出各个分区数据集的分区负载和桶负载

基于分区负载选择出分区负载最大的第一分区数据集和分区负载最小的第二分区数据集,并基于桶负载对第一分区数据集和第二分区数据集中的数据存储桶进行重新分配

再基于重新分配后的各个节点对应的本地数据存储目录,重新选择分区负载最大的第一分区数据集和分区负载最小的第二分区数据集,进行数据存储桶的重新分配,直至第一分区数据集和第二分区数据集的分配后负载差异大于或等于分配前负载差异

记录数据存储桶重新分配过程中确定出的待移动数据存储桶和其对应的目标分区数据集,进而可以将待移动数据存储桶中的数据移动到本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.
一种数据平衡处理方法,其特征在于,所述方法应用于数据库存储系统,所述方法包括:接收节点移除或新增节点触发的数据平衡请求,并获取所述数据库存储系统中各个节点的本地数据存储目录;所述本地数据存储目录用于表征各个节点中的数据在各个节点的分区数据集中的数据存储桶中的存储路径;根据各个节点的本地数据存储目录,确定出各个节点中分区数据集的分区负载和数据存储桶的桶负载;从各个节点的分区数据集中选择分区负载最大的第一分区数据集和分区负载最小的第二分区数据集;将所述第一分区数据集中桶负载最小的数据存储桶预分配到所述第二分区数据集中,分别计算数据存储桶预分配前后所述第一分区数据集和所述第二分区数据集之间的分配前负载差异和分配后负载差异,若所述分配后负载差异小于所述分配前负载差异,则将所述桶负载最小的数据存储桶转移至所述第二分区数据集对应的本地数据存储目录,将所述桶负载最小的数据存储桶作为待移动数据存储桶,将所述第二分区数据集作为所述待移动数据存储桶的目标分区数据集,并返回所述从各个节点的分区数据集中选择所述分区负载最大的第一分区数据集和所述分区负载最小的第二分区数据集的步骤,直至所述第一分区数据集和所述第二分区数据集的分配后负载差异大于或等于分配前负载差异;将所述待移动数据存储桶中的数据移动至对应的目标分区数据集,以实现所述数据库存储系统中的数据平衡
。2.
根据权利要求1所述的方法,其特征在于,所述数据平衡请求为移除指定节点触发的,所述根据各个节点的本地数据存储目录,确定出各个节点中分区数据集的分区负载和数据存储桶的桶负载,包括:根据各个节点的本地数据存储目录,确定出各个节点中分区数据集的原始分区负载和数据存储桶的桶负载;将所述指定节点中的数据存储桶分配给原始分区负载最小的分区数据集中;更新各个节点的本地数据存储目录,并根据更新后的本地数据存储目录,获得各个节点中分区数据集的分区负载
。3.
根据权利要求1所述的方法,其特征在于,每个数据存储桶中包括内存组件和磁盘组件,所述本地数据存储目录中包括各个节点中每个分区数据集对应的主索引,所述主索引采用日志结构合并树格式,并通过所述日志结构合并树格式将分区数据集中各个数据存储桶中的数据索引关系分开存储,所述将所述待移动数据存储桶中的数据移动至对应的目标分区数据集,包括:根据所述待移动数据存储桶对应的原分区数据集的主索引,在所述待移动数据存储桶对应的原分区数据集中扫描所述待移动数据存储桶中的磁盘组件,获得所述待移动数据存储桶中的存储数据;复制所述待移动数据存储桶数据存储桶中新写入的日志记录,获得所述待移动数据存储桶中的写入数据;在所述目标分区数据集中创建新数据存储桶,将所述原分区数据集中的存储数据加载到所述新数据存储桶对应的磁盘组件中,将所述待移动数据存储桶中的写入数据存储到所
述新数据存储桶对应的内存组件中,并更新所述目标分区数据集的主索引
。4.
根据权利要求3所述的方法,其特征在于,所述本地数据存储目录中包括各个节点中分区数据集对应的本地二级索引,所述本地二级索引采用日志结构合并树格式,并通过所述日志结构合并树格式将各个分区数据集中各个数据存储桶中的数据索引关系统一存储,所述将所述待移动数据存储桶中的数据移动至对应的目标分区数据集,还包括:在所述目标分区数据集对应的本地二级索引对应的存储区域中创建一个新存储组件,将所述待移动数据存储桶中的存储数据和写入数据存储到所述新存储组件中,且所述新存储组件对查询不可见
。5.
根据权利要求1所述的方法,其特征在于,所述将所述待移动数据存储桶中的数据移动至对应的目标分区数据集,包括:将不同节点对应的所述待移动数据存储桶分配给不同的线程,采用不同的线程将所述待移动数据存储桶移动至对应的目标分区数据集
。6.
根据权利要求1所述的方法,其特征在于,所述方法还包括:将接收到所述数据平衡请求之前各个数据存储桶中的存储数据保存在桶快照中;将接收到所述数据平衡请求之后各个数据存储桶中的写入数据复制到对应的目标分区数据集中
。7.
根据权利要求1所述的方法,其特征在于,在接收到所述数据平衡请求之前,所述方法还包括:将待存储数据采用一致性哈希分区法划分为多个分区数据集,并将各个分区数据集分配到对应的节点;为各个分区数据集分别分配预设数量的数据存储桶,并分别设置各个分区数据集中各个数据存储桶的桶编号;将各个分区数据集中的待存储数据对应的哈希值进行哈希计算,并将哈希计算结果按照各个分区数据集中的数据存储桶的数量进行取余计算;将所述待存储数据对应的取余计算结果和所述待存储数据所在的分区数据集中的数据存储桶的桶编号进行匹配,将所述待存储数据分配到相匹配的数据存储桶中存储
。8.
...

【专利技术属性】
技术研发人员:石志林
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1