1

我有一个使用 UserCake 和 PHPMyEdit 开发的 PHP 网站,我的数据存储在 MySQL 中。现在我也想以一种我可以控制不同用户的访问权限的方式上传 PDF 文件,并且该解决方案必须适用于大量文件上传。

我想知道在 MySQL 中存储 PDF 文件是否适合我的目的?

如果不是什么是最好的和现成的解决方案?

谢谢,

4

2 回答 2

3

在数据库上存储二进制文件通常不是一个好主意。

存储在数据库中的优点:

  • 它允许您利用数据库的安全机制
  • 在数据库上存储 blob 还意味着您永远不必担心重复的文件名。
  • 也意味着当上传出错时,您可以回滚事务,您不必四处寻找损坏的文件并将它们从磁盘中删除。

存储在数据库中的缺点:

  • 您必须序列化文件以写入和反序列化以读取它们,这比仅写入/读取文件要慢得多;
  • 更高的内存使用率(想象加载一个包含许多行的结果集,所有行都带有 blob)
  • 将使您的数据库备份非常、非常繁重和缓慢。
  • Blob 通常以 4kb 的块为单位传输到数据库,对于比这更大的文件,这会给您带来大量开销。

从数据库中检索文件路径并将文件直接流式传输给用户通常更快。

编辑:我深思熟虑,并提出了存储在数据库中的另外两个优点。只是编辑扮演魔鬼的拥护者,给你所有的信息,让你自己决定哪种方法更适合你的情况。

于 2013-03-05T17:44:43.737 回答
0

您可以在数据库中保留 pdf 的相对路径。这样,您可以避免 DB 上的所有开销。

如果您要存储 PDF 本身,那必须有非常充分的理由。

于 2013-03-05T17:50:38.380 回答