2012-01-09 72 views
4

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

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

  2. 从GridFS的检索图像比云需要更长的时间,因为我要 一)使用id b)中读出的图像到存储器 c)中使用的PHP头以显示图像

查询图像

云会更好,因为它将图像的网址直接映射到云。

这些理由听起来有效,还是应该与我的思维方向不同?

回答

4

这不完全正确。

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

Mongodb网格将大文件分割成块,只有当它被请求时它们才会被加载和服务(每个块)。是的,它肯定会占用比文件系统更多的内存。这些都是使用内存数据存储时的折衷。

从GridFS的检索图像比云需要更长的时间,因为我 必须a)使用的ID B)读出的图像到存储器 c)中使用的PHP头以显示图像

查询图像

正如我前面所说的那样,它会在第一次加载到内存中。所以你不会遇到很多性能问题,事实上它会是一个收益,因为它是从RAM而不是磁盘服务的。但是如果你还不满意,我会建议将图像缓存在nginx中。所以它不会在第一个之后来到mongo。

+0

'从RAM提供'。我已经将信息存储在RAM中,而不是网格的一部分。在RAM中存储更多信息可能会降低服务器的性能。说你处理1000个图像,只有这么多的RAM。将它存储在云服务器上并在客户端浏览器上缓存看起来似乎更好。我错了吗? – 2012-01-09 16:12:45

相关问题