【问题标题】:Storing Images in database: cons and pros将图像存储在数据库中:优缺点
【发布时间】:2012-07-06 07:02:19
【问题描述】:

我的问题可能与其他人非常相似,但又不一样。在我正在开发的信息系统中,我面临下一个问题:我需要存储许多图像数据(每月大约 100k 和每年 1.2-150 万)。我正在考虑两种方法:作为 BLOB 存储在 DB 中或存储在 DB 文件路径中。从相关问题中,我读到仅存储在数据库中的参考对性能来说更便宜。也无需编写处理程序(在 asp.net 中从 DB 获取 BLOB 字段)。但是拥有超过 100 万个文件 - 这是个好主意吗?备份非常困难,当一些文件被意外删除时,数据库不再一致。将所有内容存储在数据库中的方法不存在这些问题。你会推荐什么?有人遇到过这个问题吗?

【问题讨论】:

  • 我已阅读这些问题。如果您认为它们相同 - 请投反对票。至于我,它们不相同,我的问题没有答案。
  • 您有什么问题在我发布的任何副本中都没有解决或回答?
  • 例如哪种方法在性能方面会更好?
  • 看,现在这只是告诉我您可能已经看到这些问题,但您还没有阅读任何答案。请阅读,重点关注投票数较高的答案。我看到了几个直接明确地解决性能问题的例子。

标签: sql-server database blob


【解决方案1】:

您可以通过多种方式对此进行攻击。首先,将图像存储在数据库中是个坏主意。

更好的方法是存储在分布式文件系统中。

具有可扩展的命名架构,并将该位置信息存储在数据库或分布式哈希表中。所有的军团都是这样的。

【讨论】:

    【解决方案2】:

    我会选择数据库...如果您曾经在同一个文件夹中看到过 100 万个文件,那么在文件系统上可能会非常困难并且难以导航

    【讨论】:

      【解决方案3】:

      你错过了一件关键的事情。将文件存储在将其存储在文件系统中的数据库中,而不是存储在 MDF 文件中。查看 FileStream 的文档。集成备份,通过 SQL 完全访问,但文件位于单独的共享和/甚至另一台计算机上。

      【讨论】:

      • 那么在性能方面什么会更好呢?生成的表包含 1000000 张具有唯一 ID 的相同图像。在我的 PC 上,每秒只选择 54 行。很慢
      • 好吧,您的 PC 很可能是用于数据库的垃圾机器?你有多少个硬盘?我的意思是,说真的 - 数据库服务器是为 IO CAPACITY 定制的 - 而不是 CPU。 “我的电脑”通常是“完全垃圾数据库服务器”的同义词。
      • 是的,那是 PC,但是:Intel Core i7、8 GB DDR 3、2 TB HDD(一个)
      • 正如我所说的 - 总垃圾数据库服务器。开始添加像样的硬盘 - 数据库服务器由数据库生死存亡。我的小型服务器在系统驱动器之上为我的小型数据库配备了 2 个 SSD + 8 个 Velociraptors。这对于较大的设置来说很小。您从磁盘系统中获得 150 IOPS - 我从每个驱动器中获得 350,再加上 SSDk 中的 40000。开始数学。数据库服务器的生存和死亡取决于磁盘性能,而您的服务器速度非常慢。
      • 我希望您的数据库服务器能够运行 SAS 磁盘子系统。 SuperMicro 有很好的机箱 - 一个计算机机箱中有 72 个光盘,而每个扩展系统还有 8 个光盘。使用 15k RPM SAS 驱动器,可能使用 SSD 作为缓存。当您谈论百万个文件时,您必须谈论企业存储。
      【解决方案4】:

      有了这么多文件,无论如何备份都会很痛苦。你现在最好采取更便宜的方法。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-17
        • 1970-01-01
        • 2017-07-24
        相关资源
        最近更新 更多