Saa*_*adi 12 replication sharding mongodb
我只是混淆了它们如何工作的Sharding和复制......根据定义
复制:MongoDB中的副本集是一组维护相同数据集的mongod进程.
分片:分片是一种跨多台机器存储数据的方法.
根据我的理解,如果有75 GB的数据然后通过复制(3台服务器),它将在每台服务器上存储75GB数据意味着服务器1上75GB,服务器2上75GB和服务器3上75GB.(纠正我如果我错了)..并且通过分片将它存储为服务器-1上的25GB数据,服务器-2上的25Gb数据和服务器-3上的25GB数据.(对吗?)...但是后来我遇到了这一行教程
碎片存储数据.为了提供高可用性和数据一致性,在生产分片集群中,每个分片都是副本集
副本设置为75GB但碎片为25GB,那么它们是如何相同的......这让我感到很困惑......我想我错过了一些很棒的东西.请帮帮我.
Sal*_*ali 27
让我们尝试这个比喻.您正在运行该库.
任何正在运行图书馆的人都会在图书馆中拥有图书.您将所有书籍存放在书架上.这很好,但你的图书馆变得非常好,你的对手想要烧它.因此,您决定在其他地方制作许多额外的货架.有一个最重要的架子,无论何时添加一些新书,您都可以快速将相同的书籍添加到其他书架.现在,如果竞争对手摧毁了一个架子 - 这不是问题,你只需打开另一个并将其与书籍一起复制即可.
这是复制(只需用应用程序替换库,带有服务器的架子,带有文档的书籍,你的竞争对手只是服务器上的硬盘故障).它只是制作了额外的数据副本,如果出现问题,它会自动选择另一个主数据库.
如果你这个概念可能有所帮助
看看另一个场景.没有竞争对手,所以你不想复制你的货架.但是现在你还有另外一个问题.你变得如此优秀以至于一个架子还不够.您决定在多个货架之间分发您的图书.您决定根据作者姓名在架子之间分发它们(这不是一个好主意,并在此处阅读如何选择分片键).因此,所有以名称少于K开头的东西都会进入一个架子,一切就是K,而更多就是另一个架子.这是分片.
这个概念可以帮助您:
在这里你部分正确.如果你有75Gb,那么在所有服务器上总和仍然会有75 Gb,但它不一定是平均分配的.
但这是一个只有分片的问题.现在你的竞争对手出现了,他只是来到你的一个货架上烧了它.该架子上的所有数据都将丢失.所以你也希望复制每个分片.基本上是这个概念
每个分片都是副本集
不是真的.但是如果要进行分片,则必须为每个分片创建一个复制.因为你拥有的碎片越多,至少有一个碎片的概率就越大.