将图像存储在数据库中并检索是否很好?

时间:2012-06-15 10:35:42

标签: asp.net

  

可能重复:
  Storing Images in DB - Yea or Nay?

我需要在DataList中显示动态变化的图像。我做的是我将图像存储在DB中作为图像数据类型并检索图像。将图像存储在DB中是一种很好的技术吗?

仅供参考,用户可以上传图片。

此致 ABHI

7 个答案:

答案 0 :(得分:3)

答案是 - 这取决于......研究已经完成(http://research.microsoft.com/pubs/64525/tr-2006-45.pdf),如果对象平均大于1兆字节,基本上已经结束了,NTFS比SQL Server有明显的优势。如果对象低于256千字节,则数据库具有明显的优势。在此范围内,它取决于工作负载的写入密集程度以及系统中典型副本的存储时间。

答案 1 :(得分:0)

我会将它们作为物理文件存储在服务器上,但是将文件路径存储在数据库中,而不是实际的图像中。将图像存储在数据库中会随着时间的推移大大增加它的大小。

答案 2 :(得分:0)

图像大小会不必要地增加数据库大小,因此不能很好地存储它,而是将文件路径存储在数据库中,这不是那么大。 如果您有一些强烈的要求或用例,则应该在DB中存储图像。

答案 3 :(得分:0)

如果存储路径等,则必须解决的问题是保持图像的参照完整性。如果有人移动文件怎么办?如果有人上传了一个同名的新文件怎么办(我建议上传重命名以反映某种键而不是保留他们原来的名字bob.jpg)。您需要查看对目录等进行细分以保持列表合理。查找图像可能比将它们存储在数据库中更难。

但是,从好的方面来说,如果您没有将数据全部插入数据库中,您可以根据不同服务器,子域,云等图像的分布形成CDN

答案 4 :(得分:0)

取决于您使用的图像和数据库的大小。

对于SQL Server,如果它们大于1MB并且您不使用NTFS文件流来存储BLOB字段,那就太糟糕了。 请参阅示例http://www.simple-talk.com/sql/learn-sql-server/an-introduction-to-sql-server-filestream/

如果您有像Couch DB这样的面向文档的数据库,那可能没问题。

答案 5 :(得分:0)

我会将它们作为物理文件存储在服务器上,但是将文件路径存储在数据库中,而不是实际的图像中。然后根据位置存储搜索文件到Databasse。将图像存储在数据库中会随着时间的推移大大增加它的大小。

答案 6 :(得分:0)

如果您需要跨多个Web服务器扩展站点,那么将它们存储在数据库中也很有用。

如果它们是静态的,则没有用处,因为它们可以与您的站点一起部署,但是像头像这样的东西通常更好地存储在数据库中,因此它们可供所有集群成员使用。