如何尽可能均匀地在服务器之间分发数据库,​​同时最大限度地减少所需的移动?

时间:2018-02-28 14:38:05

标签: database algorithm data-structures greedy bin-packing

问题:

  • 我正在尝试创建一个程序,在有限数量的服务器上重新分配〜1200个不同大小的数据库,以创建尽可能均匀的分布。数据库当前位于这些服务器上,但分布不均匀。
  • 我查看了很多文章和stackoverflow / stackexchange帖子,但似乎无法找到解决整个问题的东西。

约束:

  • 数据库的大小差异很大
  • 需要尽量减少达到均匀分布所需的移动次数
  • 每台服务器上的“重量”(多少)需要尽可能接近,我们可以说彼此相差不到1%。

我有什么:

要创建这些偶数分发,我有数据库标识符,它存在的当前服务器,Gbs中的数据库大小,以及与公司相关的名义数据类型中的数据库大小作为操作数据库大小。我在数据库上生成了三个集群,根据与公司相关的名义数据类型将它们分成大小的集群作为操作数据库大小,因此将它们标记为“小”,“中”,“大”。我还在每一行上都有一个Rank,它列出了从最小到最大的数据库,作为我可用的两种大小的函数。

我已经研究过(了解为什么它不起作用):

Bin打包 - 在bin的大小约束下最小化bin的数量。我需要算法根据箱子中的大小均匀分布,同时保留它们来自何处的知识,这样我们就可以获得达到归一化分布所需的运动计数

背包 - 假设只有一个垃圾箱并根据包裹的大小以及它们对人的价值进行包装。我需要更多的垃圾箱而且我不希望在我们继续前进到下一个箱子之前在一个垃圾箱中获得最大饱满度我们需要均匀分布。

K-Partition问题 - 我没有办法计算这些动作的数量。

多处理器调度 - 我们没有时间维度,也没有办法查看作业的移动位置,因此我们可以获得到达终点分布所需的移动次数。

我需要什么:

算法(或r包)的方向可以帮助我解决这个问题。

我看过:

任何方向都将非常受欢迎,如果您有进一步文档的链接作为您正在讨论的内容的参考,那将是可爱的。

0 个答案:

没有答案