单机部署
主从模式
分片部署
1、部署架构

- shard:每个分片是整体数据的一部分子集。每个分片都可以部署为副本集。强烈建议在生产环境下将分片部署为副本集且最少部署 2 个分片。
- mongos:充当查询路由器,提供客户端应用程序和分片集群之间的接口。应用程序直接连接 mongos 即可,可以部署一个或多个。
- config servers:配置服务器存储集群的元数据和配置(包括权限认证相关)。从 MongoDB 3.4 开始,必须将配置服务器部署为副本集(CSRS,全称是 Config Servers Replica Set)。
2、分片方法(Shard Key)
Shard Key(分片键)MongoDB 通过定义 shared key(分片键)从而对整个集合进行分片,分片键的好坏直接影响到整个集群的性能。另外需要注意的是,一个集合只有且只能有一个分片键,一旦分片键确定好之后就不能更改。分片键分为以下两种类型:
-
基于 Hashed 的分片:MongoDB会计算分片键字段值的哈希值,用以确定该文档存于哪个chunk(参见下文"Chunk(块)"的介绍),从而达到将集合分摊到不同的chunk。此种类型能够使得数据整体分布比较均匀,对于等值查询效率很高,但是对于范围查询效率就比较低,因为可能要扫描所有的分片才能获取到数据。
-
基于 Ranged 的分片:MongoDB 会将相似的值放到一个 chunk 中,所以说如果在查询的时候带上分片键的范围条件,查询效率会非常高,因为不需要扫描所有的分片就可以定位到数据。注意,如果片键的值为单调递增或单调递减,那么适合采用该分片策略,因为数据总会写到一个分片,从而没有很好地分散 IO。