小编典典

哪种方法是在服务器上存储文件的最佳方法(在数据库中还是单独存储位置)?

jsp

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

我需要建议文件本身应该存储在数据库中还是仅文件位置应存储。哪种方法最好?


阅读 980

收藏
2020-06-08

共1个答案

小编典典

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

优点

  • 如今,DBMS对BLOB的支持非常好
  • JDBC驱动程序对BLOB的支持非常好
  • 在事务内部可能会访问“文档”。无需担心手动清理或“整理”。如果删除该行,则BLOB数据也将删除
  • 不必担心文件系统的限制。文件系统通常不太擅长在单个目录中存储数百万个文件。您将不得不在多个目录中分发文件。
  • 一切都一起备份。如果要进行数据库备份,则将拥有一切,而无需担心额外的文件系统备份(但请参见下文)
  • 可通过SQL轻松访问(无需FTP或其他工具)。该访问已经存在并且处于控制之下。
  • 与其余数据相同的访问控制。无需设置OS用户组即可限制对BLOB文件的访问。

缺点

  • 无法从OS直接访问(如果需要使用命令行工具来操作文件,则可能会出现问题)
  • 无法直接由例如Web服务器提供服务(这可能是性能问题)
  • 数据库备份(和还原)更加复杂(由于大小)。增量备份通常在文件系统中更有效
  • DBMS缓存注意事项
  • 不适合高写方案

您需要自己判断哪种优势和劣势对您更重要。

我不同意这样的假设:将BLOB存储在数据库中 始终 是一个坏主意。与其他许多决定一样,这取决于。

2020-06-08