1

我一直在阅读有关拆分 Mongo 数据库并通过shards升级的信息,但我正在考虑是否可以将同一服务器中的 mongo 数据库按块拆分并将其存储在不同的文件中,分片键的范围将使用公式计算考虑周数和当前年份,例如 (year)x54 + 当前周数

假设 2010x54 + 11 = 108551

理想情况下,我的想法是按月拆分文件,如下所示:

chunk01 (shardKeyID 108551 -> 108555) ----> Server1---> physical file 01
chunk02 (shardKeyID 108556 -> 108560) ----> Server1---> physical file 02
chunk03 (shardKeyID 108561 -> 108565) ----> Server1---> physical file 03

我尝试在单个服务器中执行此操作,但如果我为分片设置,我只会获得数据库中文档的一个子集,这是有道理的,因为另一部分将存储在另一个分片中的不同服务器。

有任何想法吗?

4

2 回答 2

0

mongod您可以通过在不同端口上运行单独的实例来在单个服务器上设置分片集群。说明可以在本教程中找到。

关于块的分割,这是由数据库自动处理的。请注意,默认情况下,您的集合将使用 64MB 的默认块大小进行分片。在此处查看更多详细信息:

块大小是用户可配置的。但是,默认值 64 MB 对于大多数部署来说是理想的。

您似乎在描述自己的何时平衡算法,这是不可能的。你真的需要把它留给集群平衡器来为你解决这个问题。

于 2013-02-04T20:33:28.270 回答
0

MongoDB 自动为每个数据库创建数据文件(称为extents);您无法按照您的建议控制哪些文档进入给定的物理数据文件。

分片将单个逻辑数据库分布在服务器集群中,其中每个分片由副本集(推荐)或单个 mongod 支持。您选择的分片键决定了将用于平衡分片之间数据的属性,但同样您并不能确定数据在物理数据文件中的位置。

于 2013-02-04T20:33:43.723 回答