【发布时间】:2015-06-20 15:34:09
【问题描述】:
我们从一个 mongodb 开始,但没有一个集合增长到 ~300GB。该集合包含具有日期字段的对象。但大多数情况下,我们只需要查询比历史更近的对象。所以我的问题是:是否可以通过日期字段在一台服务器上分割这个集合?更明确地说,我想将较新的对象分片到一个节点中,将较旧的对象分片到另一个节点中。而不是将所有对象平均分布在 n 个分片上。
是否有教程如何将现有的单个数据库(没有任何副本集)分片到分片集群中?
【问题讨论】:
-
...暗示在某个时候,“旧”数据会从一台服务器迁移到另一台服务器?
-
为什么要分片?您仍然需要在所述日期字段上建立索引,以防您需要访问旧值并且您会通过施加不必要的开销来减少可用 RAM 的数量。如果您真的不需要旧数据,只需将其删除或(如果您想节省宝贵的 RAM,但保留旧数据)将其移动到索引较少的集合中
-
@Markus W Mahlberg 通常的行为是只有索引在使用中的 ram 中。因此,由于我们通常查询较新的数据,因此较新的索引位于 ram 中。是的,当有广泛的查询时,我们会进行资源竞争,但这可能每周发生两次。
-
你说的是工作集?是的,但我仍然看不到单台机器上的分片在哪里可以帮助你。您至少有两个额外的 mongod 实例需要 RAM 和 IO 却没有任何好处,因为我们仍然会访问同一个集合。