MongoDB中的分片是什么?
分片是MongoDB中的一个概念,它将跨多个MongoDB实例的大型数据集拆分为小型数据集。
有时,MongoDB中的数据会非常庞大,以至于对如此大的数据集进行查询会导致服务器上大量的CPU被占用。为了解决这种情况,MongoDB提出了分片的概念,基本上是将数据集拆分到多个MongoDB实例中。
实际上,可能很大的集合实际上被称为多个集合或碎片。逻辑上,所有分片都作为一个集合工作。
如何实施分片
分片是通过使用集群实现的,这些集群不过是一组MongoDB实例。
分片的组成部分包括:
- 分片(Shard)–基本上说,这不过是一个保存数据子集的MongoDB实例。在生产环境中,所有分片都必须是副本集的一部分。
- 配置服务器–一个mongodb实例,其中包含有关集群的元数据,基本上是有关将保存分片数据的各种mongodb实例的信息。
- 路由器–一个mongodb实例,主要负责将客户端发送的命令重定向到正确的服务器。
分片集群
第一步)为配置服务器创建一个单独的数据库。
mkdir /data/configdb
第二步)在配置模式下启动mongodb实例。假设有一个名为Server D的服务器作为配置服务器,则需要运行以下命令将服务器配置为配置服务器。
mongod –configdb ServerD: 27019
第三步)通过指定配置服务器启动mongos实例
mongos –configdb ServerD: 27019
第四步)使用mongo 命令连接到mongo的实例
mongo –host ServerD –port 27017
第五步)如果需要将服务器A和服务器B添加到集群中,请发出以下命令
sh.addShard(“ServerA:27017”)sh.addShard(“ServerB:27017”)
第六步)为数据库启用分片。如果我们需要对Employeedb数据库分片,请发出以下命令
sh.enableSharding(Employeedb)
第七步)为集合启用分片。如果我们需要对Employee集合分片,请发出以下命令
Sh.shardCollection(“db.Employee” , { “Employeeid” : 1 , “EmployeeName” : 1})
分片是MongoDB中的一个概念,它将跨多个MongoDB实例的大型数据集拆分为小型数据集。
译者:徐扬
源地址:https://www.guru99.com/mongodb-sharding-implementation.html
评论前必须登录!
注册