这是存储在服务器上的文件的最好方法(在数据库或单独存储的位置)?(Which is the best

2019-07-17 23:41发布

在我的项目(类似于mediafirerapidshare ),用户可以将文件上传到服务器。 我使用的DB2 databaseIBM WAS web serverJSP as server side scripting 。 我创造我自己的加密算法,因为它是该项目的主要目的。

我需要自己的建议是否文件应存储在数据库中,或者如果只有文件的位置应存放。 哪种方法是最好的?

Answer 1:

有优点和缺点在数据库中存储BLOB。

好处

  • 对BLOB的DBMS支持非常好现在
  • 对BLOB的JDBC驱动程序支持非常好
  • 进入“文件”,可以在事务内发生。 无需担心手动清除或“管家”。 如果该行被删除,所以是BLOB数据
  • 不用担心文件系统的限制。 文件系统通常不是在存储文件的百万在一个目录非常好。 你将不得不在几个目录分发文件。
  • 一切都一起备份。 如果你把你拥有的一切数据库备份,无需担心额外的文件系统备份(见下文)
  • 通过SQL(不FTP或其他必备工具),交通方便。 访问已经存在并得到控制。
  • 相同的访问控制为数据的其余部分。 无需设置操作系统用户组来限制访问BLOB文件。

缺点

  • 不能访问直接从OS(问题,如果你需要使用命令行工具来操作文件)
  • 不能例如通过一个Web服务器,直接送达(这可能是性能问题)
  • 数据库备份(和恢复)是更复杂(因为大小)。 增量备份通常是在文件系统中更有效
  • DBMS缓存考虑
  • 不适合于高写入场景

你需要自己判断哪些优势和劣势这是对你更重要。

我不同意已经广泛使用的假设,即在数据库中存储BLOB 始终是一个坏主意。 这取决于 - 与许多其他决定。



Answer 2:

这是常识,在数据库中存储的文件 - 特别是大的全1它通常是一个坏主意。 有这些问题辉煌的解释:

存储在数据库中的文件,而不是文件系统?

存储DB图像-是啊,还是不是?

我想强调几点自己:

  • 在你的DBMS存储文件将使您的数据很大,大的数据库是一个维护地狱(特别是备份)
  • 便携性成为一个问题,因为每个DBMS供应商使自己的执行BLOB文件
  • 还有以选择句子BLOB字段相关损失了性能,相比于磁盘访问


Answer 3:

好了我的意见。将存储像路径,名称,说明等相关资料...在数据库中,并保持文件evtl. 在文件系统加密,这将是更便宜,扩展您的系统中添加一个网络服务器比添加一个数据库中的一个作为网站空间是便宜的与数据库进行比较,你将需要然后就是一个IP列添加到您的数据库或服务器名称,以便您可以解决TEH新的Web服务器。



文章来源: Which is the best method to store files on the server (in database or storing the location alone)?