将文件存储在数据库中的优缺点是什么?

时间:2010-03-16 22:54:21

标签: php mysql database file

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

4 个答案:

答案 0 :(得分:3)

<强>优点:

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

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

答案 1 :(得分:2)

专业:非常便携。

Con:你不能使用SQL(索引,搜索等)做任何事情,你需要在其他列(内容类型,文件名等)中添加元数据,以提高(重新)可用性和可维护性。

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

答案 2 :(得分:2)

这真的取决于情况?

  • 文件将如何发生 分布式?
  • 文件是单独使用还是 他们是可能拥有的系统的一部分吗? 自己的授权和 认证逻辑?
  • 什么是你的 备份策略?
  • 你需要吗? 复制?
  • 你需要支持吗? 很多I / O?
  • 缓存怎么样?

话虽如此,我会倾向于某种文件系统来处理数据库中的文档。

答案 3 :(得分:1)

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

除此之外,它意味着您无需担心文件的唯一名称,从而节省了大量复杂性。