MongoDB 分片:逐步教程及示例
MongoDB中的分片是什么?
分片是MongoDB中的一个概念,它将大型数据集分布到多个MongoDB实例中。
有时MongoDB中的数据会非常庞大,以至于针对这些大型数据集的查询会导致服务器上大量的CPU利用率。为了应对这种情况,MongoDB引入了分片的概念,也就是将数据集分布到多个MongoDB实例中。
可能很大尺寸的集合实际上被分割成多个集合或称为分片。从逻辑上看,所有分片作为一个集合协同工作。
如何实现分片
分片是通过使用集群来实现的,集群就是一组MongoDB实例。
分片包含以下组件
- 一个分片 - 这是基本要素,它是一个MongoDB实例,包含部分数据。在生产环境中,所有分片都需要是副本集的一部分。
- 配置服务器 - 这是一个MongoDB实例,它保存有关集群的元数据,基本上是关于将保存分片数据的各种MongoDB实例的信息。
- 一个路由器 - 这是一个MongoDB实例,它负责将客户端发送的命令重定向到正确的服务器。
分片集群的分步示例
步骤 1) 为配置服务器创建一个单独的数据库。
mkdir /data/configdb
步骤 2) 以配置模式启动MongoDB实例。假设我们有一个名为Server D的服务器,它将是我们的配置服务器,我们需要运行以下命令将该服务器配置为配置服务器。
mongod –configdb ServerD: 27019
步骤 3) 通过指定配置服务器来启动mongos实例。
mongos –configdb ServerD: 27019
步骤 4) 从mongo shell连接到mongo’s实例。
mongo –host ServerD –port 27017
步骤 5) 如果您有需要添加到集群的Server A和Server B,请发出以下命令。
sh.addShard("ServerA:27017") sh.addShard("ServerB:27017")
步骤 6) 为数据库启用分片。如果我们想分片Employeedb数据库,请发出以下命令。
sh.enableSharding(Employeedb)
步骤 7) 为集合启用分片。如果我们想分片Employee集合,请发出以下命令。
Sh.shardCollection("db.Employee" , { "Employeeid" : 1 , "EmployeeName" : 1})
摘要
- 如教程中所述,分片是MongoDB中的一个概念,它将大型数据集分布到多个MongoDB实例中。