【问题标题】:Best way to save/load pictures with .Net & SQL Server 2005?使用 .Net 和 SQL Server 2005 保存/加载图片的最佳方式?
【发布时间】:2010-12-01 22:15:12
【问题描述】:

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

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

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

【问题讨论】:

  • 您是否会考虑使用 SQL Server 2008,因为其中有相应的功能?
  • 如果可能的话,是的。但假设我没有 SQL Server 2008,答案是什么?不过,您是说 最好将其保存在 SQL Server 中,而不是带有数据库链接的文件系统?
  • @Zan2:其实两者都有。将文件存储在 DB 中,但存储在文件系统中。在下面阅读我的答案。你肯定会非常喜欢它。通过利用这种技术,您可以两全其美。

标签: .net database save image


【解决方案1】:

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

SQL Server 2008 FILESTREAM 存储救援

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

阅读here

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

【讨论】:

  • 可以,前提是您可以使用 SQL Server 2008。
  • @RichardOD:我问他关于 2008 的版本,他说他可能会使用它。所以我认为这是最好的解决方案。
  • 发帖者有 siad 他有 SQL Server 2005
  • 同时承认他可以使用 2008 版。在他自己的问题下检查他的 cmets。
【解决方案2】:

请看:Storing a file in a database as opposed to the file system?

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

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

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

【讨论】:

  • 双备份等怎么样?
  • +1 用于参考 MS 研究论文。我记得几年前读过。
  • @Robert Koritnik:他们呢?你仍然需要让它们保持同步。
  • @Mitch:如果将文件存储在文件系统上,则必须从数据库备份创建单独的备份。同步两者可能是一场噩梦。将文件直接存储在文件系统上还有其他(安全)问题。
  • @Mitch:现在有针对这些问题的新技术和解决方案。您这里的数据有点过时,但仍然很有价值。
【解决方案3】:

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

【讨论】:

    【解决方案4】:

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

    此方法,不依赖于数据库。

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

    【讨论】:

    • 它还有一个缺点,就是你的数据库和文件系统的备份必须同步。
    • @Stuart:取决于应用程序。这对于某些应用程序来说可能是必不可少的障碍。
    • @Robert - 好的,同意,一如既往,对于每种情况来说,最好的解决方案都是如此。
    猜你喜欢
    • 2013-06-23
    • 1970-01-01
    • 1970-01-01
    • 2011-04-14
    • 2017-05-13
    • 2011-04-28
    • 1970-01-01
    • 1970-01-01
    • 2014-05-31
    相关资源
    最近更新 更多