在MongoDB GridFS中存储图像

时间:2012-01-09 15:48:38

标签: php mongodb image-processing cloud gridfs

我正在讨论将图像存储在Mongo GridFS或云文件系统中。由于一些原因,我倾向于云。使用的语言是Nginx服务器上的PHP。

  1. 在GridFS中存储图像会增加数据库的大小。因此,更多的数据库必须在内存中,当涉及到分片等事情时,我将花费更多的时间/金钱来管理服务器。

  2. 从GridFS中检索图像所需的时间比云要长,因为我必须这样做     a)使用id查询图像     b)将图像读入内存     c)使用php标题显示图像

  3. 云会更好,因为它的图像直接映射到云端。

    这些原因是否合理,或者我的思维方向是否应该朝着不同的方向发展?

1 个答案:

答案 0 :(得分:4)

这不完全正确。

  

在GridFS中存储图像会增加数据库的大小。   因此,更多的数据库必须在内存中,我将花费   管理服务器的时间/金钱更多   分片。

Mongodb gridfs将巨大的文件拆分成块,只有在请求时才会加载和提供(按每个块)。是的,它肯定会占用比文件系统更多的内存。这些都是使用内存数据存储时的权衡。

  

从GridFS中检索图像需要比云更长的时间,因为我   必须a)使用id查询图像b)将图像读入内存   c)使用php标头显示图像

正如我在上一点所述,它将在第一时间被加载到内存中。所以你不会遇到太多的性能问题,因为它从RAM而不是磁盘服务,它将是一个增益。但如果你还不满意,我会建议在nginx中缓存图像。所以它不会在第一个之后来到mongo。