Php 在数据库中存储文件与文件系统

Php 在数据库中存储文件与文件系统,php,mysql,document,document-management,Php,Mysql,Document,Document Management,我的一位客户要求提供一份文件,以获取数千份不同格式的文件,如pdf、doc、docx等。我的问题是,在数据库或文件系统中存储此文件的最佳方式是什么?在这两种方法之间保护文档有多容易 快速检索文件是关键要求 如果有帮助的话,我会使用mysql 关于。对大数据块使用文件系统访问通常意味着比将它们存储在mysql数据库中更快的访问速度和更少的开销 一篇有趣且可能相关的帖子:要获得高性能,您应该使用文件系统,使用php glob函数和JS接口。 我在三月份完成了这样的项目。您可能希望将其直接存储到文件系

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

快速检索文件是关键要求

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


关于。

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


一篇有趣且可能相关的帖子:

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

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

使用文件系统时,请注意:

  • 机密性:将文档放在Apache文档根目录之外。然后,您的PHP控制器将输出文档
  • 分片路径:不要在同一目录中存储数千个文档,请创建不同的目录。例如,您可以在文件名上使用散列进行切分。例如/documents/A/F/B/afb436772abcef5786692/myfile.pdf
  • Inode number:如果存储大量小文件,Inode可能会用完(如果主要存储PDF和office文档,则可能不是这样)
如果需要搜索这些文档(日期/标题等),可能需要将元数据存储到数据库中以获得更好的性能


仅供参考,MS SQL Server具有列类型(类似于混合),但目前MySQL。

可能与thanx重复。。但我最担心的是文件的安全性,因为系统必须存储非常机密的文件和报告。文件系统是否为文件提供高安全性?thanx。我不熟悉碎片路径。你能为我提供任何在线资源,例如教程等吗?例如,你不想在app/data/上存储所有内容。把你的文件弄乱。如果哈希结果为2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e730,则可以将文件存储到app/data/2/c/f/2/2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e730/$filename中(2/c/f/2是4个第一字符)。它将您的文档“分发”到几个较小的目录中,而不是一个非常大的目录。本例使用4个字符,但如果需要,您可以使用更多字符(这取决于您有多少文档)。这有什么好处?我希望系统中有数千个文档,根据文件的数量选择字符的数量是否有任何规则?如果您避免使用大目录,您将有更好的I/O。如果使用过多的子目录,I/O将降级。那就由你来正确平衡了。我不会将超过1000个文件放在一个目录中。因此,对于10000个文件,在第一个字符上分片是可以的。分片4个字符会将文件分片到65000个不同的目录中(对你来说太多了)。16^4等等。