部署了副本集后是否可以将分片应用于Mongo DB?

时间:2019-12-10 10:39:06

标签: mongodb deployment sharding

我有两个副本集的Mongo DB。是否可以分片这些副本集。

1 个答案:

答案 0 :(得分:1)

共享是关于在称为分片的服务器之间分配数据。在数据库上启用了分片,但是对集合进行了分片(分片集群可以具有分片和未分片的集合)。副本集可以成为分片群集中的分片。

因此,两个副本集可以成为一个分片集群中的两个分片。尽管如此,您仍然必须在数据库上启用分片并分片想要的集合。

分片集群的主要组成部分是:

  • mongos:一个路由器进程,用于将您的应用程序查询路由到适当的分片。
  • 配置服务器:用于维护分片群集的元数据和分片数据的配置服务器;这是一个副本集。
  • 分片:副本集,每个作为分片;这些都有数据库数据。

这些组件需要首先配置;分片群集中使用的分片副本集,配置服务器副本集和mongos进程。然后在数据库(副本集)上启用分片。

例如,您有一个名为“应收款管理系统”的数据库,在两个副本集之一上具有集合customersinvoices。您选择仅分片客户集合。在对客户集合进行分片时,将根据定义的分片密钥在两个分片之间分配客户数据。定义分片密钥是分片集合过程的一部分。

实际上,决定哪个字段将成为分片密钥是分片最重要的方面之一。这决定了:(i)查询的有效性,(ii)数据将在各个分片之间平均分配,以及(iii)在将来向集群添加分片的扩展。

分片键很重要。集合上的该字段必须是不可变的,并且值也必须是不可变的。集合中的所有文档必须具有分片键字段。

如果您已经有一个正在运行的应用程序(带有MongoDB数据库)并计划分片数据库,则需要考虑一个重要的考虑因素:分片键是什么以及它将如何影响当前应用程序(现有查询)。分片不仅涉及在更多服务器之间分配数据,还涉及设计应用程序及其数据的各个方面。


有用链接: