小于16MB的文件可以直接存在document里面(BinData)。大于16MB的使用GridFS存放,文件会被切分成255kB的chunk,在GridFS里面除了原文件的集合,还有一个集合用来存放metadata。如果文件数量超过了OS文件系统的上限,可以考虑将这些文件存入MongoDB如果需要访问文件的部分内容,使用Gr...
显示全部小于16MB的文件可以直接存在document里面(BinData)。大于16MB的使用GridFS存放,文件会被切分成255kB的chunk,在GridFS里面除了原文件的集合,还有一个集合用来存放metadata。
- 如果文件数量超过了OS文件系统的上限,可以考虑将这些文件存入MongoDB
- 如果需要访问文件的部分内容,使用GridFS不需要将全部文件加载进内存,例如视频快进,定位到相应的chunk后,只加载那1个chunk视频就可以播放起来,剩下来在后台慢慢加载。
- 借助MongoDB的复制集将这些文件在不同的节点(数据中心)之间进行自动的同步。
注意:在GridFS中,由于文件是被切割成chunk后存入,如果有文件update的场景,不能保证整个文件的原子性;变通的方法是保存多个版本的文件,在文件写入完成后,将metadata指向最新的版本。
收起