对GridFS数据进行分片

博客介绍了GridFS存储分片时files集合和chunks集合的相关情况。files集合通常较小,多数情况无需分片,若分片可用复合片键,且生产环境需用复制集;chunks集合分片只有两个片键可选,默认片键可能使新数据存于单独分片,写负载大时需考虑更换。

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

在对 GridFS 存储进行分片时,需要注意以下的情况:

files 集合

大多数情况下不需要对 files 集合进行分片,这个集合通常很小,只包含了一些元信息.集合中也没有合适的片键可以将数据均衡地分布在集群中.如果你 必须 对 files 进行分片,可以使用 _id 字段与应用相关的字段做复合片键.

不将``files`` 分片意味着所有文件的元信息都存储在一个分片上,在生产环境中, 必须 在存储了 files 的分片上使用复制集.

chunks 集合

用以下命令使用 files_id } 做片键为 chunks 集合分片:

db.fs.chunks.createIndex( { files_id : 1 , n : 1 } ) db.runCommand( { shardCollection : "test.fs.chunks" , key : { files_id : 1 , n : 1 } } ) 

也可以像这样只使用 file_id 字段进行分片:

db.runCommand( { shardCollection : "test.fs.chunks" , key : { files_id : 1 } } ) 

重要

在GridFS存储中,对 chunks 集合进行分片时, 只有 两个片键可以选择,``{ files_id : 1 , n : 1 }`` 与 {  files_id } .

默认的 files_id 是 ObjectId , ObjectId 是递增的,因此所有新写入的数据都会存储到一个单独的分片中,如果这个分片的写负载太大,考虑换一个片键或者在 files 集合中使用不同的 _id 值.

转载于:https://www.cnblogs.com/ExMan/p/10948876.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值