MongoDB学习(七):集群之分片集

本文详细介绍了MongoDB的分片集群搭建过程,包括启动mongod、mongos进程,配置集群,分配集合等步骤。通过理解分片的概念,了解如何手动平衡数据库分片,以及如何进行块级别的自动分片。此外,还讨论了客户端如何连接到分片集群进行操作。
摘要由CSDN通过智能技术生成

目录

1 概念

2 建立分片集

1)启动mongod、mongos进程

2)配置集群

3)分配集合

3 客户端连接


MongoDB学习(六):集群之复制集 提到,复制集(副本集)在数据量过大,以至于无法全部装载到内存中时,分布式架构也很难提升系统性能。MongoDB的方案是分片。

1 概念

所谓分片,就是将大数据集分割为较小的数据集的过程。之前使用MongoDB的过程中,无论是单节点 or 复制集,每个服务器都保存了全量数据。这就带来两个问题:首先,随着数据增长,单台服务器的处理能力逐渐到达极限(内存无法装下所有数据);其次,由于数据过大,新节点进行初始化的全量同步时,很可能出现卡死的问题(I/O导致CPU不足)。

分片集群的相关组件如下:

  • 分片(Shards):每个分片存储了完整数据的一部分,实际是一个单节点服务器or复制集。只有路由和管理员可以直接访问分片。
  • 路由(Routers):存储了集群元数据,用来查找操作的数据在哪个分片上。
  • 配置服务器(Config Servers):持久化集群元数据,例如每个分片存储了哪部分数据。

另一个问题是,MongoDB分片的粒度。在MongoDB中,有数据库、集合、文档等结构,实际上,在集合和文档之间,还存在一中名为“块”的概念,指的是根据一个或多个字段(称为分片键)的值聚集的一系列文档。分片是在数据库和块这两级上进行的。

实际上,数据库级的分片是手动的,即我们必须保证每个分片上的每个数据库所包含的数据都大致均衡。如果有某个数据库存放了过多数据,就需要对其进行分库。

在块上的分片则是自动进行的,根据指定的分片键的值,将整个值域分割为多个区间,每个区间映射到一个分片上。例如一共分两个片,分片键的值以A~Z开头,那么可能A~E分到分片1,F~J分到分片2……

2 建立分片集

建立分片集的步骤如下,这里以两个分片为例:

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值