189 8069 5689

mongodb中chunk指的是什么

小编给大家分享一下MongoDB中chunk指的是什么,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!

创新互联建站-专业网站定制、快速模板网站建设、高性价比柳林网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式柳林网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖柳林地区。费用合理售后完善,十年实体公司更值得信赖。

什么是块(chunk)?

在一个shard server内部,MongoDB还是会把数据分为chunks,每个chunk代表这个shard server内部一部分数据。chunk的产生,会有以下两个用途:

Splitting:

当一个chunk的大小超过配置中的chunk size时,MongDB的后台进程会把这个chunk切分成更小的chunk,从而避免chunk过大的情况

Balancing:

在MongoDB中,balancer是一个后台进程,负责chunk的迁移,从而均衡各个shard server的负载。

chunk size默认值64M,生产库上选择适合业务的chunk size是最好的。

chunk的概念有些类似于数据库中的分区的概念。

当chunk的大小达到了chunk size的指定大小后,或chunk中的文档数量超过了Maximum number of documents per chunk to migrate mongodb会分裂这个chunk。

一个只包含一个分片键值的chunk是不能被分裂的。

默认的chunk的大小是64M,chunk的大小优缺点如下:

Small chunks lead to a more even distribution of data at the expense of more frequent migrations. This creates 
expense at the query routing (mongos) layer.
Large chunks lead to fewer migrations. This is more efficient both from the networking perspective and in terms 
of internal overhead at the query routing layer. But, these efficiencies come at the expense of a potentially uneven 
distribution of data.
Chunk size affects the Maximum Number of Documents Per Chunk to Migrate.
Chunk size affects the maximum collection size when sharding an existing collection. Post-sharding, chunk size does 
not constrain collection size.

如果修改了chunk的大小,那么现存的chunk在达到新的大小后,才分裂。chunk的分裂是元数据的操作,很快,没有进行数据的迁移也不影响分片。

chunk的迁移,迁移可以自动,也可以收工。

balancer是一个后台进程管理chunk的迁移。如果在分片中存在的最大的chunk与最小的chunk超过了migration 限制,那么balancer会开始迁移chunk保证集群中的数据分布均衡。

在sharding.archiveMovedChunks启用的时候,会在集合的命名空间下出现movechunk目录存放的额是迁移的chunk的备份。如果在迁移过程中出现问题,这些文件可以用来恢复文档。一旦迁移完成了,就不在需要这些文件了,可以删除这些文件。为了看迁移是否完成,使用sh.isBalancerRunning()命令来查看进度。

看完了这篇文章,相信你对mongodb中chunk指的是什么有了一定的了解,想了解更多相关知识,欢迎关注创新互联行业资讯频道,感谢各位的阅读!


分享标题:mongodb中chunk指的是什么
分享URL:http://jkwzsj.com/article/pccsip.html

其他资讯