【问题标题】:Store images in database or on file system [duplicate]将图像存储在数据库或文件系统中[重复]
【发布时间】:2011-05-31 19:33:33
【问题描述】:

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

将图像存储在文件系统中是更快更可靠,还是应该将它们存储在数据库中?

假设图像不超过 200 MB。目标是快速、可靠的访问。

一般来说,人们如何决定将文件(例如图像、PDF)存储在文件系统还是数据库中?

【问题讨论】:

  • 我喜欢它,一个绰号为“Crashalot”的程序员。 :-)

标签: database image database-design file filesystems


【解决方案1】:

个人意见:我总是将图像存储在文件系统中,并且只在数据库中存储文件路径。在许多情况下,数据库存储在快速(读取:昂贵的存储、15k RPM 或 SSD 驱动器)存储上。图像或其他文件,通常可以存储在较慢(阅读:更便宜、更大的驱动器、7.2k RPM 驱动器)的存储设备上。

我发现这是最好的,因为它允许数据库保持较小的大小。通常,数据库很好地存储“数据”。他们可以快速搜索和检索少量数据。文件系统可以很好地存储“文件”,它们经过优化可以快速查找和检索更大的数据位。

显然,这两种方法都需要权衡取舍,而且不会一刀切;但是,可能有一些用例将图像存储在数据库中是一件好事,如果它们都非常小,并且您预计它们不会很多,并且您的数据库与文件共享位于同一存储介质上,那么将图像直接放入数据库可能是有意义的。

附带说明一下,SQL Server 2008R2 有一个 FileStream 字段类型,它可以提供两全其美的效果,我还没有使用过它,所以我不能说它的效果如何。

【讨论】:

  • 写得好——并指出一些数据库有访问数据库外主数据的规定。
【解决方案2】:

如果您需要以下内容,请将文件/图像存储在数据库中:

  • 访问控制
  • 版本控制
  • 入住/退房
  • 基于元数据的搜索

这就是 SharePoint 等主要 CMS 的设计。

但是,如果您的内容更加静态且不会随时间变化,您可以使用文件系统并在 Web 服务器上启用优化/缓存。

【讨论】:

  • 如果我只需要访问控制,是否可以使用网络服务器和文件系统执行访问控制(从而避免将图像存储在数据库中)?该怎么做?
【解决方案3】:

使用数据库方法,您只需连接一件事。如果您的用户是分布式的,那可能会更简单。请注意,如果图像访问不频繁,则效率问题可能无关紧要。

【讨论】:

    【解决方案4】:

    首先你必须知道,在数据库中,你不能存储大于我认为 8 mb 的文件,所以我认为最好将文件存储在系统中,而将小图像存储在数据库中

    【讨论】:

    • 这取决于数据库。 SQL Server 最多可以存储 2GB(或者“仅”1GB?)。
    猜你喜欢
    • 1970-01-01
    • 2012-06-29
    • 2014-05-04
    • 2012-06-26
    • 1970-01-01
    • 2021-05-31
    • 2011-06-10
    • 1970-01-01
    • 2012-08-29
    相关资源
    最近更新 更多