Blob或文件系统,用于在Web应用程序中存储和检索异构文件

时间:2015-05-13 15:06:23

标签: mysql angularjs hibernate spring-mvc blob

早上好, 我正在设计一个使用Spring MVC,Hibernate,MySQL和AngularJS等技术的Web应用程序。 现在我发现自己要解决以下问题。假设产品与一个或多个异构文件(图像,pdf,视频等)相关联,并且您必须同时管理文件的上载和显示。 我浏览了数据库中BLOB的使用与文件系统和数据库的混合使用之间的差异。 我的问题是:使用的最佳方法是什么,考虑到所使用的技术堆栈以及(至少在初始阶段)部署到单个服务器的技术?

由于

4 个答案:

答案 0 :(得分:0)

我认为最好的方法是将文件存储在文件系统中,然后将它们的路径存储在数据库中,varchar对我来说效果很好

答案 1 :(得分:0)

Blob仅在少数角落用例中有用。大多数情况下,您希望将文件存储到文件系统中,不出所料,这完全是为了这个目的:-)

答案 2 :(得分:0)

几年前我们经历了一个非常类似的过程,并选择将文件存储在数据库中。这适用于少量文件。但考虑一年/ 5年/ 10年的情况以及您将拥有多少文件。它们占用了数据库中的大量空间,这会影响性能和备份/恢复时间。 我们现在正试图将它们从数据库移到文件系统上,并且要比将它们放在文件系统中要困难得多(因为它现在已经深深扎根于我们的应用程序中)。

答案 3 :(得分:0)

这取决于数据库和/或文件大小。

也许有点偏离主题但也有趣的是,对于我自己的应用程序,我发现MySQL不适合在数据库中存储大于1 MB的文件。但是,当使用像MongoDB这样的数据库(包括GridFS(基本上是数据库中的文件系统抽象))时,存储文件效果很好。更具体地说,MongoDB将这些文件存储在块中。在检索文件(例如视频)时,您只能请求所需的块而不是整个视频,这在例如您在视频中稍后跳过时效果很好。

由于您使用的是MySQL(看起来每个文件的大小大于1 MB),我建议将它们放在文件系统中。