如何正确的保存图片在mongodb中?

索隆 发布于 2013/04/15 10:57
阅读 14K+
收藏 5
我现在有两种解决方案: 
1.将图片保存在document的field中; 
2.将图片采用mongodb的gridfs中。 
图片大小在10k-50k之间,请问哪种方式更好?
加载中
1
sidneysu
sidneysu

gridfs

nginx有插件,可以通过url直接访问到gridfs里面的图片。速度飞快。

另外用gridfs的主要优势在于把大量的小文件封装到一个较大的文件块里面,减少磁盘频繁的寻道。

你可以建一个三到四级的目录,然后再每个子文件夹里面放上几千个小文件,然后再打开这个目录,体验一下速度。

sidneysu
sidneysu
回复 @索隆 : 当然数据量较大时mongodb的性能会有所下降,不过真到哪个适合,你肯定有资源去使用或者开发更适合自己的系统了。
sidneysu
sidneysu
回复 @索隆 : 就大多数系统应用场景而言,浪费些磁盘空间倒不是大问题,性能和文件安全才是更重要的。通过mongodb的gridfs系统,你可以很方便的架设一个分布式的图片服务器,通过mongodb的内存管理,自动把最热门的文件加载到内存中;通过多台服务器分布式存储,保证文件的安全,减少人工备份的压力。
索隆
索隆
"把大量的小文件封装到一个较大的文件块里面",我记得gridfs每个块大小为256k,我理解的是每个小图片会放到一个块中,是不是这样啊?这样不会很浪费磁盘吗?
0
aiasfina
aiasfina

file system...

gridfs是大文件存储解决方案,存小文件没多大好处。

索隆
索隆
但是当file system中有海量小文件时,查找他们也会很耗时,而且磁盘扩容也是问题。
0
专业打酱油
专业打酱油
2选一,必然 gridfs
索隆
索隆
而且查询时只需要一次请求,好像能够提高访问速度吧
索隆
索隆
为什么,求解释?文件只有10-50k,存储在document field中不是戳戳有余吗?
0
b
brainmix
我想问文件多了,容量太大的时候怎么办?
0
张宗帅
张宗帅
最好不存在数据库中,放在系统目录
0
Leon温陵
Leon温陵

引用来自“sidneysu”的答案

gridfs

nginx有插件,可以通过url直接访问到gridfs里面的图片。速度飞快。

另外用gridfs的主要优势在于把大量的小文件封装到一个较大的文件块里面,减少磁盘频繁的寻道。

你可以建一个三到四级的目录,然后再每个子文件夹里面放上几千个小文件,然后再打开这个目录,体验一下速度。

官方貌似不推荐使用gridfs存小文件:
Furthermore, if your files are all smaller the 16 MB BSON Document Size limit, consider storing the file manually within a single document.
from:http://docs.mongodb.org/manual/faq/developers/#faq-developers-when-to-use-gridfs
0
尼再采

引用来自“aiasfina”的答案

file system...

gridfs是大文件存储解决方案,存小文件没多大好处。

请问这个大文件的标准是多少?多大算大呢?
返回顶部
顶部