实验目的
1. 性能提升:通过将数据分散到多个节点,分片可以有效提高数据库的性能,包括查询速度、写入速度等。
2. 负载均衡:分片可以将读写操作负载均衡到多个节点上,避免单个节点过载。
3. 存储容量扩展:随着数据量的增长,分片可以轻松地扩展存储容量,满足不断增长的数据需求。
4. 高可用性:通过复制数据到多个节点,分片可以提高数据库的可用性,即使单个节点发生故障,整个系统仍然可以继续运行。
5. 易管理性:分片可以将数据分成多个较小的片段,使得管理和维护变得更加容易。
6. 降低成本:通过使用分片,可以降低对硬件资源的需求,从而降低总体成本。
7. 数据分区:分片可以按照一定的规则将数据分成多个分区,从而提高查询效率。
分片概述
分片(Sharding)技术是开发人员用来提高数据存储和数据读写吞吐量常用的技术之一。简单的来说,分片主要是将数据进行划分后,将它们分别存放于不同机器上的过程。通过使用分片可以实现降低单个机器的压力和处理更大的数据负载功能。分片与副本集主要区别在于,分片是每个节点存储数据的不同片段,而副本集是每个节点存储数据的相同副本。
分片策略
MongoDB之所以能够实现自动分片,这是因为其内置了分片策略。MongoDB通过分片键(ShardKey)将集合中的数据划分为多个块(Chunk)(默认大小为64MB,每个块均表示集合中数据的一部分),然后MongoDB根据分片策略将划分的块分发到分片集群中。需要注意,分片键可以是集合文档中的一个或多个字段。
MongoDB的分片策略主要包括范围分片和哈希分片两种,介绍如下
范围分片
通过一张图来介绍范围分片策略,具体如图所示。

哈希分片(Hash Sharding)
通过一张图介绍哈希分片策略,如图所示。

注意:使用基于哈希分片时,拥有“相近”分片键的文档不会存储在同一个分片服务器中,这样的话,数据的分离性会更好,可以保证分片集群中数据分布均衡。但是,由于数据是通过哈希计算进行随机存放的,因此会降低查询性能。
配置分片(shard)集群
环境准备
| 分 片 |
节点 | 数据库路径 | ip:端口数据库路径 | 日志路径 |
| 1 | shard1(主) | localhost: 4006 |

最低0.47元/天 解锁文章
4445

被折叠的 条评论
为什么被折叠?



