Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 如何尽可能均匀地将数据库分布在服务器上,同时最大限度地减少所需的移动?_Database_Algorithm_Data Structures_Greedy_Bin Packing - Fatal编程技术网

Database 如何尽可能均匀地将数据库分布在服务器上,同时最大限度地减少所需的移动?

Database 如何尽可能均匀地将数据库分布在服务器上,同时最大限度地减少所需的移动?,database,algorithm,data-structures,greedy,bin-packing,Database,Algorithm,Data Structures,Greedy,Bin Packing,问题是: 我正试图创建一个程序,在有限数量的服务器上重新分布~1200个不同大小的数据库,以尽可能创建一个分布。数据库目前位于这些服务器上,但分布不均匀 我看过不少文章和stackoverflow/stackexchange帖子,但似乎找不到解决整个问题的方法 限制条件: 数据库的大小截然不同 需要尽量减少达到均匀分布所需的移动次数 每个服务器上的“权重”(满度)需要尽可能接近,我们可以说彼此之间的距离在1%以内 我所拥有的: 为了创建这些均匀分布,我有数据库标识符、它所在的当前服务器、

问题是:

  • 我正试图创建一个程序,在有限数量的服务器上重新分布~1200个不同大小的数据库,以尽可能创建一个分布。数据库目前位于这些服务器上,但分布不均匀
  • 我看过不少文章和stackoverflow/stackexchange帖子,但似乎找不到解决整个问题的方法
限制条件:

  • 数据库的大小截然不同
  • 需要尽量减少达到均匀分布所需的移动次数
  • 每个服务器上的“权重”(满度)需要尽可能接近,我们可以说彼此之间的距离在1%以内
我所拥有的:

为了创建这些均匀分布,我有数据库标识符、它所在的当前服务器、以Gbs为单位的数据库大小以及与公司相关的标称数据类型中的数据库大小作为操作数据库大小。我在数据库上生成了三个集群,根据与公司相关的标称数据类型(作为运营数据库大小)将它们划分为大小不同的集群,因此将它们标记为“小”、“中”、“大”。我在每一行上都有一个排名,它根据我可用的两个大小从最小到最大列出数据库

我所调查的内容(以我对其不起作用的原因的理解):

料仓包装-在料仓的尺寸限制下最小化料仓数量。我需要算法根据箱子的大小均匀分布,同时保留它们来自何处的知识,这样我们就可以得到达到标准化分布所需的移动计数

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

K-划分问题——我看不出有什么方法可以计算移动的数量

多处理器调度-我们没有时间维度,我也看不到一种方法来查看作业从何处移动,以便我们可以获得到达最终分布所需的移动次数

我需要的是:

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

我看过:


如果您能提供更多文档的链接,作为您正在讨论的内容的参考,我们将不胜感激。

您是否可以使用分布式数据库?Cassandra现在似乎很受欢迎出于好奇,按大小而不是按访问负载均匀分布数据的理由是什么?@cricket_007我更新了这个问题,使它更清晰。使用Cassandra并不是解决当前问题的真正方法。磁盘空间的大小很少是数据库资源消耗的有用指标…@cricket_007我们也使用SQL Server,Cassandra看起来是NoSql。