【问题标题】:Uploading pictures to a path VS database上传图片到路径VS数据库
【发布时间】:2011-06-26 09:20:29
【问题描述】:

我即将创建一个 ASP.NET MVC 应用程序,该应用程序将包含 2000 多种产品,每个产品将包含大约 20 张照片。该应用程序将是 asp.net mvc 应用程序和

我正在使用 sql server 2008 r2 来管理我的数据。这里哪种方式更好;

  • 将图片上传到路径和 将他们的文件名存储到数据库 为了能够制作一个 相互关系。
  • 在数据库中存储图片 以及字节并检索它们 需要时从那里开始。

【问题讨论】:

标签: sql sql-server asp.net-mvc sql-server-2008 byte


【解决方案1】:

绝对在文件系统(存储路径)中更好,我过去都做过。

针对SQL服务器存储图片 A) 输入和输出数据可能会更加困难,因为必须使用 blob 类型的对象,并且某些 ORM 并不能真正满足这一点 B)您的数据库要大得多,因此会影响您的备份/恢复策略。备份越频繁越好,但空间会增加。存储在文件中,是的,您仍然需要备份,但备份文件系统很容易。 C)当您用完存储空间时,您只需添加另一个 NAS 驱动器/服务器并开始在那里存储图像,因此可以水平扩展

通常的看法不如存储在两个地方的数据,但对我来说,最好的数据类型存储在数据类型的最佳存储介质中..

【讨论】:

    【解决方案2】:

    绝对存储为路径而不是字节数组。这意味着您可以轻松更改实际图像本身,而无需更改任何代码或在 SQL 中乱七八糟(只要新文件与旧文件同名)。

    希望这会有所帮助。

    【讨论】:

      【解决方案3】:

      在数据库中使用FILESTREAM结合了2个想法(文件和数据库)

      FILESTREAM 通过将 varbinary(max) 二进制大对象 (BLOB) 数据存储为文件系统上的文件,将 SQL Server 数据库引擎与 NTFS 文件系统集成。 Transact-SQL 语句可以插入、更新、查询、搜索和备份 FILESTREAM 数据。 Win32 文件系统接口提供对数据的流式访问。

      这会改变文件 vs 数据库参数

      如果您只想存储路径,那么您将不得不接受图像和数据库随着时间的推移而失去同步的事实。

      【讨论】:

      • FILESTREAM 绝对是要走的路,但是必须专门启用 SQL Server。您能想出托管服务拒绝在共享服务器上启用 FILESTREAM 的原因吗?
      • @StuTheDog:抱歉,帮不了你。我从未使用过托管 SQL 框
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-22
      • 2013-11-01
      • 2015-04-20
      • 2023-04-09
      • 2015-08-23
      • 1970-01-01
      相关资源
      最近更新 更多