我们最近更改了MongoDB设置中的逻辑,如下所示: 群集中所有副本集的一半包含数据库和未分片的相应集合。 另一半只包含分片集合。
虽然数据库仍然遍布副本集,但我们很想知道: 将数据库本身放在不包含任何集合的服务器上有什么不利之处吗? MongoDB是否存在任何可能浪费资源的元数据?
答案 0 :(得分:-2)
将数据库本身放在不包含任何集合的服务器上是否有任何不利之处?
分片永远不会出现这种情况。所有集合都从第一个(主)服务器开始,该服务器包含数据库(我喜欢将其视为在数据库级别启用分片,您可以这样做),并在其他分片(副本集)中向外扩展。
数据库及其集合将在其他分片上进行,因为需要将数据移动到它们。
因此,进一步的问题可能因为这些知识而变得非常惰性。
“包含数据库”
我指的是数据库的副本。
下一段暗示了这一点,其中我声明将根据需要在每个分片上创建数据库和集合。
在你的情况下,碎片,或者更确切地说是副本集,只会知道它自己的数据,并且只有在需要这些数据时才能存在自己的数据。
配置服务器是将分片与范围边界一起映射的服务器。
我想,现在我考虑一下,如果你在第一个节点上有一个集合但在第n个节点上没有,而你有另一个集合,那么你认为它可以容纳不需要的元数据。但是,它仍然不会,直到收集完成并添加到命名空间文件中,此时数据就在那里。