iis服务器助手广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >MongoDB的chunk详解
  • 828
分享到

MongoDB的chunk详解

2024-04-02 19:04:59 828人浏览 八月长安
摘要

目录chunk的大小如何确定???chunk的分裂chunk的迁移通常情况下,chunk迁移由下面三种场景触发:    mongoDB中,在使用到分片的时候,常常

    mongoDB中,在使用到分片的时候,常常会用到chunk的概念,chunk是指一个集合数据中的子集,也可以简单理解成一个数据块,每个chunk都是基于片键的范围取值,区间是左闭右开。例如,我们的片键是姓名的第二个字母,包含了A-Z这26中可能,理想情况下,划分为26个chunk,其中每个字母开头的姓名记录即为一个chunk。

    在数据写入的时候,monGos根据片键shard key的值来写入对应的chunk中,chunk可以表示的最小范围是单个唯一的shard key的值,只包含具体的单个片键值文档的chunk不能被分割,这个也比较容易理解,如果某个chunk只包含一个片键的值,如果对它进行分割,则代表一个片键值映射了2个chunk,下次遇到这个片键的文档时,mongos就不知道应该存放在哪个chunk当中了。

chunk的大小如何确定???

    在MongoDB中,chunk的默认大小是64MB,可以增加或者减少chunk的大小。

    chunk的大小不宜过小,如果chunk过小,好处是可以让数据更加均匀的分布,但是会导致chunk之间频繁的迁移,有一定的性能开销;同样的,chunk的大小不宜过大,过大的chunk size会导致数据分布不均匀,

chunk的分裂

    当某个chunk的值达到了chunk所能表示的最大值的时候,这个时候chunk不能无限增长,需要通过分割的方法来减少chunk的大小,例如一个64MB的chunk分割成2个32MB的chunk,这样虽然增加了chunk的数量,但是带来的收益是单个chunk的缩小。

chunk的迁移

    在分片+复制集的架构中,当某个服务器上的数据记录不停的增多,它上面分割的chunk就会变多,当集群中每个服务器上的chunk数量严重失衡的时候,mongodb会自动进行chunk的迁移工作,这个自动迁移的工作,是通过balancer来进行的。如果balancer发现各个shard之间的chunk数差异超过了提前规定的阈值,则会进行chunk的迁移工作,如下:

也就是从上面的状态变成下面的状态。每个小块代表一个chunk。

MongoDB自动触发迁移的阈值表如下:

chunk数量:   <20,迁移阈值:2

chunk数量:20~79,迁移阈值:4

chunk数量:   >80,迁移阈值:8

chunk的迁移一般使用来实现,从MongoDB3.4版本起,chunk的迁移分为7个步骤:

1、balancer进程将moveChunk的命令发送到源shard中

2、源shard使用内部moveChunk命令开始移动,迁移过程中,该chunk的操作依旧在源shard上进行,源shard依旧负责该chunk的写入操作

3、目标shard开始创建所需索引

4、目标shard开始请求chunk中的文档并开始接收数据的复制

5、接收完源shard的最后一个文档之后,目标shard启动一个同步进程,这个进程会拉取迁移期间的日志,将迁移期间对该chunk的操作更新到目标chunk中。

6、当完全同步时,源shard连接到config数据库并更新chunk的位置元数据。

7、完成数据更新后,一旦在源shard上没有对该chunk的操作,源shard会异步删除chunk。当然,用户可以设置_waitforDelete参数为true,让源shard在chunk迁移完成后同步删除chunk数据

通常情况下,chunk迁移由下面三种场景触发:

1、多个shard上分布不均匀

2、用户调用removeShard之后,被移除的shard上的chunk就要被迁移到其他的shard上

3、MongoDB的shard tag功能,可以对shard或者shard  key range打标签,系统会自动将对应的range的数据迁移到拥有相同tag的shard上。

以上就是MongoDB的chunk详解的详细内容,更多关于MongoDB chunk的资料请关注编程网其它相关文章!

--结束END--

本文标题: MongoDB的chunk详解

本文链接: https://www.lsjlt.com/news/123779.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MongoDB的chunk详解
    目录chunk的大小如何确定???chunk的分裂chunk的迁移通常情况下,chunk迁移由下面三种场景触发:    MongoDB中,在使用到分片的时候,常常...
    99+
    2024-04-02
  • Mongodb 分片 手动维护chunk
    去年的笔记For instance, if a chunk represents a single shard key value, then MongoDB cannot split the chunk ...
    99+
    2024-04-02
  • MongoDB中chunk的示例分析
    这篇文章主要介绍MongoDB中chunk的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!    MongoDB中,在使用到分片的时候,常常会用到chunk的概念,chunk是指一个集合数...
    99+
    2023-06-14
  • MongoDB balancer的使用详解
    目录01 balancer简介02 balancer工作中可能对业务造成的影响?03 设置balancer的执行时间窗口04 备份和balancer   在Mon...
    99+
    2024-04-02
  • mongodb插入详解
    db.getCollection("test").insert( {   name :"<c 语音》",   bookprice:"33.2",   adddate:"2017-10-l",   al...
    99+
    2024-04-02
  • 详解MongoDB的角色管理
    目录NO.1 MongoDB内建角色内建角色的种类和特点?数据库用户角色:数据库管理角色:集群管理角色:备份和恢复角色:全数据库角色超级用户:内部角色:MongoDB中的角色特点NO...
    99+
    2024-04-02
  • SpringBoot——整合MongoDB详解
    引入依赖 org.springframework.boot spring-boot-starter-data-mongodb 配置文件 spring: data: mongodb: ...
    99+
    2023-09-01
    mongodb spring boot java
  • SpringBoot整合MongoDB的步骤详解
    目录项目结构:1.pom引入mongodb依赖2 配置application.properties3.创建mongodb文档映射实体类SpringBoot中MongoDB常用注解:4...
    99+
    2024-04-02
  • MongoDB TTL索引的实例详解
    MongoDB TTL索引的实例详解 TTL索引是一种特殊类型的单字段索引,主要用于当满足某个特定时间之后自动删除相应的文档。也就是说集合中的文档有一定的有效期,超过有效期的文档就会失效,会被移除。也即是数...
    99+
    2024-04-02
  • 详解MongoDB中的日志模块
    目录01 MongoDB日志组件种类及日志等级02 设置某个日志组件的日志级别方法一:db.setLogLevel()方法二:执行MongoDB命令方法三:写入配置文件方法四:启动的...
    99+
    2024-04-02
  • laravel的chunk方法如何用
    这篇文章主要介绍“laravel的chunk方法如何用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“laravel的chunk方法如何用”文章能帮助大家解决问题。在laravel中,chunk()方...
    99+
    2023-06-30
  • MongoDB索引机制详解
    目录⭐ MongoDB 的索引机制⭐ 索引的类型 创建索引 - 单字段索引 创建索引 - 多字段索引 创建索引 - 唯一性索引 创建索引 - 文本索引 创建索引 - 地理空间索引⭐ 查看所有索引⭐ 删除索引⭐ Mongo...
    99+
    2023-04-23
    MongoDB的索引机制 MongoDB的索引 Python MongoDB
  • MongoDB 模式设计详解
    目录注意事项限制条件访问模式关系类型范式化和反范式化基本概念范式化选择模型设计小技巧指导原则删除旧数据一致性管理模式迁移模式管理编写代码来处理数据完整性问题注意事项 模式设计,即在文档中表示数据的方式,对于数据表示来说时...
    99+
    2022-12-26
    mongodb模式设计 mongodb应用设计模式 MongoDB数据模型的设计模式
  • MongoDB 事务支持详解
    目录事务简介如何使用事务事务语法API 区别实际使用事务调优时间限制oplog 大小限制事务简介 事务是数据库中处理的逻辑单元,每个事务中包括一个或多个数据库操作,既可以是读操作,也可以是写操作。 ACID 是一个&ld...
    99+
    2022-12-26
    mongodb是否支持事务 mongodb支持事务 MongoDB中的事务支持
  • MongoDB 聚合查询详解
    目录聚合管道管道阶段常见操作更多操作 - 投影更多操作 - 展开更多操作 - 分组更多操作 - 入库条件组累加器算术运算最值运算数组提取其他运算聚合管道 聚合框架是 MongoDB 中的一组分析工具,可以对一个或多个集合...
    99+
    2022-12-26
    MongoDB聚合查询 mongodb聚合查询性能 mongodb聚合查询优化
  • MongoDB模式设计详解
    目录注意事项限制条件访问模式关系类型范式化和反范式化基本概念范式化选择模型设计小技巧指导原则删除旧数据一致性管理模式迁移模式管理编写代码来处理数据完整性问题注意事项 模式设计,即在文...
    99+
    2022-12-26
    mongodb模式设计 mongodb应用设计模式 MongoDB数据模型的设计模式
  • MongoDB事务支持详解
    目录事务简介如何使用事务事务语法API 区别实际使用事务调优时间限制oplog 大小限制事务简介 事务是数据库中处理的逻辑单元,每个事务中包括一个或多个数据库操作,既可以是读操作,也...
    99+
    2022-12-26
    mongodb是否支持事务 mongodb支持事务 MongoDB中的事务支持
  • MongoDB聚合查询详解
    目录聚合管道管道阶段常见操作更多操作 - 投影更多操作 - 展开更多操作 - 分组更多操作 - 入库条件组累加器算术运算最值运算数组提取其他运算聚合管道 聚合框架是 MongoDB ...
    99+
    2022-12-26
    MongoDB 聚合查询 mongodb 聚合查询 性能 mongodb 聚合查询优化
  • MongoDB 查询操作的实例详解
    MongoDB 查询操作的实例详解 使用find或findOne进行查询。并可以进行范围查询、数据集查询、不等式查询,以及其他的一些查询。 查询将会返回DBcursor 游标只有在你需要的时候返回文档 ...
    99+
    2024-04-02
  • Python 操作 MongoDB 讲解详细
    目录1、连接MongoDB2、指定(切换)数据库3、指定(切换)集合4、插入数据5、查询数据6、统计查询7、结果排序8、偏移 9、更新数据10、删除数据 1、连接MongoDB 需要...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作