【问题标题】:What are the pros and cons of storing files in a database?将文件存储在数据库中的优点和缺点是什么?
【发布时间】:2010-03-16 22:54:20
【问题描述】:

我正在编写一个 php 应用程序,并且想知道在数据库中存储完整文件是否是个坏主意。文件应该在 100-200kb 左右,主要是文本文件(txt、doc、docx 等)或小图像文件。或者这只是一个完全错误的想法?

【问题讨论】:

  • 你可能想看看这个:Storing Images in DB - Yes or Nay? (stackoverflow.com/questions/3748/…)
  • MongoDB 有一些有趣的文件存储功能。
  • @Daniel Vassallo:有趣,我不认为我会在那里存储那么多图像,当然也不会用于任何高流量的网页。

标签: php mysql database file


【解决方案1】:

真的要看情况吗?

  • 文件将如何保存 分布式?
  • 文件是独立使用还是 它们是系统的一部分吗? 自己的授权和 认证逻辑?
  • 你的 备份策略?
  • 你需要 复制?
  • 您是否需要支持 大量的 I/O?
  • 缓存怎么样?

话虽如此,我还是倾向于使用某种文件系统来存储数据库上的文档。

【讨论】:

    【解决方案2】:

    优点:

    1. 无需担心文件存储的写入权限。
    2. 无需尝试将文件存储中的文件与数据库中的行同步,避免出现孤立文件或断开的链接。例如,您可以在删除相关内容时自动级联删除文件。
    3. 在某些数据库(例如 Oracle 和 SQL Server)中,您可以使用 SQL 索引文件并在其中搜索
    4. 无需担心唯一的文件名、文件夹,并且在某些情况下可以使上传更简单
    5. 更容易保护对文件的访问,因此只有授权用户才能看到它们

    缺点:

    1. 与文件存储相比,提供文件的性能通常会受到影响
    2. 可能导致大型数据库。选择二元列时需要小心。
    3. 更多的工作是链接到文件和提供内容 - 您需要专门的处理程序等。

    【讨论】:

      【解决方案3】:

      专业版:高度便携。

      缺点:您无法使用 SQL(索引、搜索等)对其进行任何操作,并且您需要在其他列(内容类型、文件名等)中添加元数据以提高(重)可用性和可维护性。

      我不会那样做。磁盘文件系统更适合这些任务。

      【讨论】:

      • 我的目标是可移植性,因为这些文件不会以任何方式编辑,也许它们会被删除,但仅此而已。
      【解决方案4】:

      就我个人而言,我喜欢这个想法,尤其是如果数据库将它们压缩存储或您手动压缩它们。

      除其他外,这意味着您无需担心文件的唯一名称,从而节省了很多复杂性。

      【讨论】:

      • 不过,您仍然需要在数据库中唯一标识它们。
      • 确实如此。我没有想到只将文件存储在数据库中的微不足道的情况。我假设了一些“元数据”,例如用户名、日期、文件名等。
      猜你喜欢
      • 1970-01-01
      • 2012-07-06
      • 2010-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多