0

我目前正在编写一个使用 SQL Server 2008 数据库作为其后端的 ASP.NET MVC 网站。很少有表格(如产品目录等)应该有缩略图和完整图像,以显示在网站上以供最终用户使用。我很困惑是否应该使用 - A) FILESTREAM 列用于将图像存储在数据库本身 B) 或包含图像的路径和文件名(或 URL)的简单 varchar 列

一般的做法是什么?我知道 FILESTREAM 会带来很多代码和 DBA 开销,但如果它是一般做法,我可以灵活地使用它。否则,存储 URL 绝对是最简单的选择。但是应该遵循推荐的那个。

对此的任何建议,非常感谢。

谢谢

4

1 回答 1

2

我从来没有真正理解将图像存储为数据库中的二进制 blob 的炒作。请记住,您的文件系统为存储二进制 blob(称为文件)而设计的数据库。

这个问题提供了对该主题的很多见解。我建议大家阅读它及其答案。

就个人而言,我一直将图像存储在文件系统中(毕竟图像就是文件!),并且只在数据库中存储运行时生成 URL 所需的信息。

我见过的一种方案是使用图像的 MD5 作为其文件名,并将该 MD5 与图像 ID 一起存储在数据库中。然后您可以将 MD5 十六进制数字分解为几个组件以构建目录结构。这限制了单个目录中的文件数量。

例如,图像的 MD5 可能为d41d8cd98f00b204e9800998ecf8427e. 它在数据库中的条目如下所示:

 id | md5                              | upload_date | ...
 ----------------------------------------------------------
 42 | d41d8cd98f00b204e9800998ecf8427e | 2013-04-01  | ...

此文件可能存储在images/d4/1d8/cd98f00b204e9800998ecf8427e.jpg. 您放置路径分隔符的位置以及您拥有的路径分隔符的数量决定了目录数和每个目录中的文件数之间的平衡。

于 2013-04-01T23:35:20.403 回答