将文件存储在数据库Vs文件系统中

时间:2011-08-04 09:30:12

标签: php mysql document document-management

我的一位客户要求提供Document Management System数千种不同格式的文档,即pdf,doc,docx等。我的问题是将此文件存储在数据库或文件系统中的最佳方法是什么?在两种方法之间保存文档有多容易?。

快速检索文件是关键要求..

如果有帮助的话,我正在使用mysql

问候。

3 个答案:

答案 0 :(得分:17)

您可能希望将其直接存储到文件系统中。

使用文件系统时要小心:

  • 机密性:将文档放在Apache Document Root之外。然后你的PHP控制器将输出文件。
  • 分片路径:不要在同一目录中存储数千个文档,制作不同的目录。例如,您可以在文件名上使用哈希值进行分片。例如/documents/A/F/B/AFB43677267ABCEF5786692/myfile.pdf。
  • Inode编号:如果您存储了大量小文件,则可能会用完inode(如果主要存储PDF和Office文档,则可能不是这种情况)。

如果您需要搜索这些文档(日期/标题/等...),您可能希望将元数据存储到数据库中以获得更好的性能。

仅供参考,in this question MS SQL Server具有FILESYSTEM列类型(如混合版),但目前是MySQL doesn't have an alternative

答案 1 :(得分:5)

对大数据透视表使用文件系统访问通常意味着比将它们存储在mysql数据库中更快的访问速度和更少的开销。

一篇有趣且可能相关的帖子:Storing Images in DB - Yea or Nay?

答案 2 :(得分:0)

为了获得高性能,你应该使用文件系统,使用php glob函数和JS接口。 我在3月完成了这样的项目。