首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Mongo中,分片和复制的区别是什么?

在Mongo中,分片和复制的区别是什么?
EN

Stack Overflow用户
提问于 2012-07-20 08:31:01
回答 8查看 52.8K关注 0票数 84

复制似乎比分片简单得多,除非我错过了分片真正想要实现的好处。它们不都提供水平伸缩吗?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2020-10-22 17:28:51

把这个放在某个地方..。

运行mongo最基本的方式是作为独立的服务器。

使用mongod在服务器上写入配置(文件或cli options)

  • initiate

在这张图片中,我没有包括“客户端”。检查下一个。

  • 副本集是用不同的配置文件初始化的一组服务器。
  • 为了链接它们,我们连接到其中之一,并初始化副本集模式。
  • 它们将彼此镜像(在最常见的配置中)。该系统保证了数据的高可用性。

副本集的初始化在红色边框中表示。

  • 分片不是复制数据,而是分片。
  • 每个数据分片都被称为分块,并被分到不同的分片中。分片=每个副本集。
  • “主”服务器,运行mongos而不是mongod。这是用于从客户端进行查询的路由器。

显而易见的:折衷是一个更复杂的架构。Novelty:配置服务器(同样,是一个不同的配置文件)。

还有更多的东西要补充,但除了文字之外,图片持有的内容大致相同。

即使是mongoDB也建议在使用分片之前仔细研究你的案例。垂直缩放(vs)可能在水平缩放(hs)之前至少一次是个好主意。

vs完成了硬件(cpu、ram等)的升级。hs需要更多的计算机(但也可能是廉价的计算机)。

票数 2
EN

Stack Overflow用户

发布于 2012-07-20 10:11:25

在扩展MongoDB的上下文中:

  • 创建数据的其他拷贝,并允许自动故障切换到另一个节点。如果您可以读取可能不是latest.
  • 的数据,则复制可能有助于水平扩展读取。通过使用分片键对多个服务器上的数据进行分区,允许数据写入的水平扩展。这对choose a good shard key来说很重要。例如,不恰当的分片键选择可能会导致数据的“热点”仅写入单个分片。

分片环境添加了more complexity,因为MongoDB现在必须管理在分片之间分发数据和请求--添加了额外的配置和路由过程来管理这些方面。

复制和分片通常组合在一起创建一个,其中每个分片都由一个副本集支持。

从客户端应用程序的角度来看,您还可以对复制/分片交互进行一些控制,特别是:

  • Read preferences
  • Write concerns
票数 121
EN

Stack Overflow用户

发布于 2016-03-27 09:34:55

考虑到你的硬盘上有一个很棒的音乐收藏,你将音乐按照发行年份的逻辑顺序存储在不同的文件夹中。您担心如果驱动器出现故障,您的收藏将会丢失。因此,你会得到一个新的磁盘,偶尔会复制整个集合,保持相同的文件夹结构。

分片>>将音乐文件保存在不同的文件夹中

Replication >>将您的收藏同步到其他驱动器

票数 66
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11571273

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档