MongoDb-GridFs-分片

前置要求

  1. MongoDb需要使用Shard方式部署
  2. 需要安装好 mongod、mongos、replica set

使用GridFs存储文件

GridFs存储文件的方式

GridFs使用两个集合存储文件:files、chunks。如果不做指定,默认会使用前缀【fs.】

files

其中files是文件元数据,存储的是文件的一些信息。不建议分片,存储的数据就是一个简单的doc,数据量较小,如果需要使用分片,建议用_id分片。

{
  "_id" : 文件ObjectId,  【默认索引字段】
  "length" : 文件描述文档大小,
  "chunkSize" : 文件大小,
  "uploadDate" : 上传时间, 【默认索引字段】
  "md5" : 废弃的字段,无视即可,
  "filename" : 文件名, 【默认索引字段】
  "contentType" : 废弃的字段,无视即可,
  "aliases" : 废弃的字段,无视即可,
  "metadata" : 文件描述信息,
}

chunks

chunks存储的是文件实际数据。根据文件大小不同会分多个数据片。数据结构:

{
    _id:文件片ObjectId, 【默认索引字段】
  files_id: 文件ObjectId, 【默认索引字段,推荐的分片键,可单独作为分片键使用】
  n:文件片序号, 【默认索引字段,推荐的分片键,不要单独作为分片键使用,需要配合files_id使用】
  data: 文件片二进制数据
}

官网介绍:https://docs.mongodb.com/manual/core/gridfs/index.html

如果上述集合不指定分片键,则默认存储在primary上。

 

清理策略

增加一个每日执行的定时任务。不同配置时,在不同时间触发删除操作。

优势:做起来简单。

劣势:需要额外开发定时任务,指定规则,删除时间只能控制到天。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值