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

Sam*_*son 18 php mysql document document-management

我的一位客户要求提供文件管理系统,用于数千种不同格式的文档,即pdf,doc,docx等.我的问题是在数据库或文件系统中存储此文件的最佳方法是什么?两种方法之间如何轻松保护文档?

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

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

问候.

Séb*_*ENT 18

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

使用文件系统时要小心:

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

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

仅供参考,在这个问题中, MS SQL Server具有FILESYSTEM列类型(如混合),但目前MySQL 没有替代方案.

  • 如果你避免使用大目录,你会有更好的I/O. 如果使用太多子目录,I/O将降级.然后由你来正确平衡.我没有将超过1000个文件放入一个目录中.因此,说一万个文件,第一个字符的分片就可以了.对4个字符进行分片会将文件分片为65000个不同的目录(对你来说太多了).16 ^ 4等. (3认同)

Joh*_*han 5

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

一个有趣且可能相关的帖子:在DB中存储图像 - 是或不是?