友
我需要在DataList中显示动态变化的图像。我做的是我将图像存储在DB中作为图像数据类型并检索图像。将图像存储在DB中是一种很好的技术吗?
仅供参考,用户可以上传图片。
此致 ABHI
答案 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服务器扩展站点,那么将它们存储在数据库中也很有用。
如果它们是静态的,则没有用处,因为它们可以与您的站点一起部署,但是像头像这样的东西通常更好地存储在数据库中,因此它们可供所有集群成员使用。