【问题标题】:Save Image to HDD or store as Byte Array in database? [duplicate]将图像保存到硬盘或存储为数据库中的字节数组? [复制]
【发布时间】:2013-01-09 19:18:40
【问题描述】:

可能重复:
Storing Images in DB - Yea or Nay?

非常直接,我正在托管一个用户可以上传图片的网站,并且我有一个正常工作的 .net 文件上传控件。我只是想知道我应该使用什么方法将它们存储在服务器上。

  • 我可以使用 FileUpload 控件的 SaveAs() 方法将其保存为实际文件..
  • 我可以将图像分解为 Byte[] 并将其存储在数据库中以供访问。

我相信这里真正的问题是......我想要在 IIS 或 Sql Server 2008 R2 上加载吗?

关于我应该使用哪种方法以及为什么使用的普遍共识是什么?谢谢!

【问题讨论】:

标签: c# asp.net file-upload bytearray


【解决方案1】:

没有普遍的共识,因为这两种方法都不理想。

将图像存储为文件意味着将应用程序扩展为在多个服务器上运行变得更加困难。然后你需要一个 SAN/NAS 来存储文件而不是本地磁盘。

将图像存储在数据库中意味着您将大量缓存空间用于图像数据,从而减慢其他查询速度,并且还会增加数据库和备份的大小。这也意味着您必须通过页面提供图像,而不能直接请求文件。

因此,这取决于您将拥有多少图像,以及您需要应用程序的可扩展性。

【讨论】:

  • 感谢双方@Guffa 我们已经在研究 SAS / LUN(我不太会说基础设施,哈哈)。但我想知道是否有另一种更好的方法?你会使用哪种方法?
  • 啊,你的修改更有意义。我会考虑可扩展性。谢谢@Guffa
  • @Kulingar:我会使用什么取决于具体情况。我都用过。目前,我们正在构建一个系统,其中一个 Web 服务器将图像存储在 NAS 上,多个 Web 服务器从 NAS 加载它们,在提供它们之前调整它们的大小和缓存。
【解决方案2】:

避免将它们放入数据库中。仅仅因为几个文件,这将使您的数据库变得更大。这也会影响备份大小。

我没有看到在数据库中拥有实际文件字节有任何真正的好处。如果你有文件系统中文件的物理路径就足够了。

这还允许您拥有自己的文件备份策略。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-24
    • 1970-01-01
    • 1970-01-01
    • 2018-01-16
    相关资源
    最近更新 更多