3

在销售产品的网页中处理产品图片的典型方法是什么?假设我有一个包含书籍或计算机组件等的数据库,例如,所有这些都有自己的示例图片......我应该将它们作为二进制数据保存到数据库中,还是以某种方式在代码隐藏中处理它们,将它们保存到目录中保存到数据库产品表中的图片文件的适当链接?

我正在尝试以销售公司为例,虽然我可以想出办法来做到这一点,但我想知道编程业务中使用的典型规范是什么?

更新:存储在另一个系统或备用数据库上不是一种选择,而有关可能的替代方案的信息以供将来参考表示赞赏。我所能使用的只有 Visual Studio 2008 和 SQL Server 2005 / 2008,在一台计算机上,有一个 ASP.Net 项目。因此,这些文件必须保存到网页项目中的一个目录中,或者保存到它正在使用的一个 DB 中。

4

4 回答 4

7

将文件保存在文件系统但在数据库
中 将文件保存到数据库使其成为所有应用程序数据的单一备份点,并为您的应用程序提供更小的安全表面,因为您不需要写入权限文件夹来存储文件。

FILESTREAM拯救SQL Server 2008存储

在 SQL Server 2008 中,Microsoft 引入了一种新的数据存储机制,称为FILESTREAM将文件夹中的数据作为常规文件存储。但是您可以通过表访问它们(并存储它们的元数据)。您可以将文件存储为 varbinary(max) 并按照配置将它们存储在文件系统中。这些文件也将被 DB Backup 程序拾取。这样,您就可以在一个解决方案中获得两全其美的效果。

在这里阅读。

会后说明
我必须指出,问题的作者确实提到他们可能会使用 SQL Server 2008,如果有任何好处。这是此答案与 2008 版相关的唯一原因,因为这确实是他们问题的最佳解决方案。

于 2009-09-28T07:26:10.750 回答
2

请参阅:将文件存储在数据库中而不是文件系统中?

如果您决定在此处存储在数据库中,我有适用于 SQL Server 2005 的 C# 代码:Save and Restore Files/Images to SQL Server Database

已故 Jim Gray 的这篇 MS 研究论文:To BLOB or Not To BLOB: Large Object Storage in a Database or a Filesystem有以下建议:

正如常识所预期的那样,小于 256K 的对象最好存储在数据库中,而大于 1M 的对象最好存储在文件系统中。在 256K 和 1M 之间,读写比和对象覆盖或替换率是重要因素。

于 2009-09-28T06:57:37.797 回答
1

不要通过二进制数据加载 DBMS!让 SQL Server 完成它的特定工作。最好将文件存储在文件系统甚至其他计算机上。

于 2009-09-28T07:02:26.307 回答
0

我首选的解决方案是始终将它们保存到文件系统上的目录中,并将 url / 位置保存在数据库中。我发现这是最容易维护的,并且很容易更改数据库、数据存储而不影响文件。

这种方法,不依赖于数据库。

我最近遇到了一种情况,旧系统将图像和文件存储为二进制文件,这导致检索这些文件以升级数据库软件需要花费大量时间和精力。

于 2009-09-28T07:02:50.547 回答