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