MongoDB分片存储使用情况



我正在阅读MongoDB中的分片。在了解了它的工作原理后,我对它使用的存储空间有了一个非常基本的问题

假设我有一个包含1GB存储空间的服务器。现在假设我的数据将增长到1GB以上,这对我的目的来说是不够的。所以,我又添加了一个服务器和shard Mongo。

现在,假设我有2台服务器,每个服务器的存储空间为1GB,它们将包含在集群中。如果我执行分片,那么这两个服务器都将用于分发Mongo数据。所以,总的来说,我必须有2GB的存储空间可用于Mongo。但是,我发现官方的分片文档提到分片是复制集。如果是这样的话,那么添加1 GB服务器难道不意味着我只有1 GB的存储空间(像以前一样(用于实际的MongoDB数据,而剩下的1 GB只是复制的数据吗?

如果我的理解是正确的,那么有没有办法不创建副本集?我们可以像使用逻辑卷一样使用两台服务器的2 GB存储吗?

否则,如果我的理解是错误的,什么是正确的?

MongoDB的Sharding文档中说-"Sharding将数据分布在集群中的碎片中,允许每个碎片包含集群总数据的子集。随着数据集的增长,额外的碎片会增加集群的存储容量"。此处:https://docs.mongodb.com/manual/sharding/(存储容量(

因为它是一个子集,所以两者都包含不同的数据集。因此,可以根据使用情况对副本集进行多次使用(存储数据子集的碎片或将数据保存为备份并创建副本(。

共享发生在复制之上一级。

当同时使用分片和复制时,集群由许多副本集组成,而一个副本集由许多mongod实例组成。

然而,也可以创建一个独立的mongod实例集群,这些实例没有被复制,或者只有一些碎片被实现为副本集,而一些碎片则被实现为独立的mongood实例。

每个碎片都是一个副本集,而不是碎片是副本集

我希望这能有所帮助。

最新更新