可能重复:
Storing Images in DB - Yea or Nay?
Images in database vs file system
我一直在使用RIA技术(Flex + PHP + MySQL + Ajax)开发Web应用程序,现在我处于图像文件的两难境地。
我在我的Flex应用程序中使用了一些图像,因此我认为“如果我将它们存储到数据库中,然后从中检索它可能会很棒;然后,维护过程应该更容易”。但是,这是我的困境:
我应该存储图像的物理网址,还是直接存储图片会更好?
例如,我的Cars
表格应该是这样的:
ID
(自动数字)|Source
(文字)
还是喜欢这个?
ID
(自动数字)|Image
(longblob或blob)
我知道这里有很酷的人可以回答我这个问题,向我解释哪个更好,为什么:)
答案 0 :(得分:6)
我个人建议将图像存储在数据库中。当然这既有利也有弊。
将BLOB数据存储在数据库中的优点:
在数据库中存储BLOB数据的缺点:
仔细考虑哪些资源可以更好地存储在文件系统而不是数据库中。很好的例子是通常通过HTTP HREF引用的图像。这是因为:
答案 1 :(得分:5)
作为一般规则,您不能保持数据库的小型化,因此它们的性能更好(并且备份也更好)。因此,如果您只能在数据库中存储文件系统引用(路径+文件名)或URL,那就更好了。
答案 2 :(得分:3)
这可能是个人偏好的问题。
作为一般规则,最好保持数据库小。但是,当您进入企业应用程序时,他们会定期将映像直接添加到数据库中。如果将它们放在文件系统上,则db和文件系统可能会不同步。
较大的CMS会定期将这些文件放在db中。但请注意,当一切都在增长时,这需要更大的数据库大小......
当您仅保存网址和名称时,请确保以后不会更改这些网址。
使用存储在数据库中的文件,您可以更轻松地实现安全性,而不必担心重复的文件名。
答案 3 :(得分:1)
我曾经将路径存储到URL中,但随后在混合中添加额外的Web服务器被证明不太理想。首先,您必须共享存储图像的路径。我们使用的是NFS,一段时间后变得很慢。我们尝试将文件从一个Web服务器同步到另一个Web服务器,但这个过程变得很麻烦。
话虽如此,我会将它们存储在数据库中。我已经把我的所有图像/文件存储都移到了MongoDB上。我知道这不能满足您的需求,但我们已经尝试了所有(甚至是S3),我们对其他解决方案并不满意。如果我们不得不这样做,我肯定会把它们扔进MySQL里。
答案 4 :(得分:0)
我存储了网址,它的数据更少,这意味着数据库越来越小,从中获取更快的数据;)
答案 5 :(得分:0)
就个人而言,我一直存储网址。
没有真正的理由不将图像直接存储在数据库中,但不将其存储在数据库中会有好处。
如果不将图像存储在数据库中,则可以获得更大的灵活性。您可以轻松移动它,只需更新文件中的URL。因此,如果您想将图像从Web服务器移动到Flickr或Amazon Web Services等服务,那么只需更新指向新文件的链接即可。这也使您可以轻松访问内容交付网络,以便更快地将图像传送给最终用户。