mongodb系列之-mongodb gridfs分析(java应用)

本文探讨了MongoDB的GridFS文件系统,它通过files和chunks两个集合存储文件元数据和实际数据。当文件大小超过256KB时,会被分割成多个chunk,每个chunk最多256KB。在Java中,使用GridFSInputFile创建文件时,会自动初始化files集合的元数据。读取文件时,涉及的步骤包括查询、数据写入和chunk的获取。文章深入解析了这些过程。

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

 

Mongodb GridFS文件系统

 

Mongodb gridfs文件系统通过files与chunks 2个集合来保存文件,其中files集合保存每个文件的元数据(包括每个文件被分割成了多少)  ,

chunks集合具体保存每个文件相应的数据chunk,大于256kb的文件被分割为多个chunk,每个chunk最大保存256kb的数据(其实可以手动设置chunkSize,但貌似最大不能大于3M左右)

 

写文件:

  默认将整个文件拆为256Kb为单位的二进制字节数组——>再save到每个chunk中----->最后再保存files集合元数据

  java里面调用GridFSInputFile ifile=gridFS.createFile(f)方法会把db.fs.files集合中元数据各个参数初始化好,比如_id、chunkSize(默认256KB)、filename等

  写文件源码就不多分享了,挺简单的,大家可以去看源码,大致就是上面那个流程

 

读文件:

 

先看下2个集合的数据结构

switched to db category
hd1:PRIMARY> db.fs.files.findOne()
{
       "_id" : ObjectId("514ae50bf211487e93102dd3"),
       "chunkSize" : NumberLong(262144),  //每个chunk保存的数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值