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保存的数据