MongoDB的分片

本文深入解析了分片技术的核心概念、架构、应用条件及实施步骤,包括如何选择片键、创建配置服务器与路由服务器、添加分片数据库及启用分片功能。重点介绍了分片在提升数据库性能、解决磁盘不足与大规模数据存储问题方面的优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

分片简介

分片是指将数据拆分,将其分散存储在不同的机器上的过程,有时也叫分区。mongodb支持自动分片,集群自动切分片数据,做负载均衡。其基本思想就是将集合切分成小块,这些块分散到诺干片里面,每个片只负责总数据的一部分,应用程序不必知道哪片对应哪些数据,甚至不知道该数据已经被拆分了,所以要在分片之前运行一个路由进程,该进程名位mongos。mongos知道数据存放的位置,所有的一切细节都由mongos来处理,应用程序不必管理这些细节,只用处理自己的业务就可以了。

分片的架构如下图:

 

 

片键

设置分片时,需要从集合里面选一个键,用该键的值作为数据拆分的依据,这个键称为片键。

利用key作为片键,进行自动分片,通过路由去查询。

 

 

什么情况下用到分片

1磁盘不够

2单个mongodb满足不了写数据库性能需要

3想将大量数据放在内存中提高性能

 

分片步骤

4.1 创建一个配置服务器,端口是20000

  配置服务器存储了集群的配置信息,数据和片的对应关系,mongos不永久存放数据,所以需要个地方存放分片的配置。

 启动配置服务器: mongod --dbpath D:\MongoDBDATA\fenpian  --port 20000

 

4.2 创建路由服务器,端口是30000,并且连接到配置服务器,命令名称是mongos,mongos就是mongodb各版本中都配有的路由器进程,它路由所有服务,然后将结果聚合,不存储数据或者配置信息,但会缓存配置服务器的信息

   启动路由:mongos --port 30000 --configdb  127.0.0.1:20000

 

4.3 添加两个分片数据库端口分别是8081,8082

     启动8081的数据库:mongod --dbpath D:\MongoDBDATA\8081 --port 8081

     启动8082的数据库:mongod --dbpath D:\MongoDBDATA\8082 --port 8082

 

4.4利用路由器位集群添加分片,之前不能使用任何数据库语言

    进入mongos来添加分片数据库:

     db.runCommand({"addshard":"127.0.0.1:8081",allow:true});

     db.runCommand({"addshard":"127.0.0.1:8082",allow:true});

 

 4.5打开数据分片功能,为foobar数据库打开分片功能,得先在数据库和集合的级别将分片功能打开

开启数据库foobar分片功能

 db.runCommand({"enablesharding":"foobar"});

 

 

 开启集合分片功能:

 

 插入大量的数据400000

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值