0

可能重复:
在数据库中存储图像 - 是还是不是?

朋友们,

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

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

问候, 阿比

4

7 回答 7

3

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

于 2012-06-15T10:38:47.330 回答
0

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

然而,从好的方面来说,如果你不把它们都塞进你的数据库中,你可以根据你的图像在不同的服务器、子域、云等上的分布来形成一个 CDN

于 2012-06-15T10:39:28.563 回答
0

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

对于 SQL Server,如果它们大于 1MB 并且您不使用 NTFS 文件流来存储 BLOB 字段,那将是一个非常糟糕的主意。参见例如http://www.simple-talk.com/sql/learn-sql-server/an-introduction-to-sql-server-filestream/

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

于 2012-06-15T10:39:54.397 回答
0

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

于 2012-06-15T10:40:04.303 回答
0

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

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

于 2012-06-15T10:42:35.053 回答
0

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

于 2012-06-15T10:36:48.167 回答
0

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

于 2012-06-15T10:38:16.107 回答