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

Mysql Blob或文件系统,用于在Web应用程序中存储和检索异构文件,mysql,angularjs,hibernate,spring-mvc,blob,Mysql,Angularjs,Hibernate,Spring Mvc,Blob,早上好, 我正在设计一个使用SpringMVC、Hibernate、MySQL和AngularJS等技术的web应用程序。 现在我发现自己要解决以下问题。假设一个产品与一个或多个异构文件(图像、pdf、视频等)关联,并且您必须管理文件的上载和显示。 我了解了在DB中使用BLOB与混合使用文件系统和DB之间的区别。 我的问题是:考虑到所使用的技术以及(至少在初始阶段)仍然部署到单个服务器的技术的堆栈,最好的使用方法是什么 谢谢在我看来,最好的方法是将文件存储在文件系统中,然后将它们的路径存储在数据

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


谢谢

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

blob只在少数几个角落的用例中有用。大多数情况下,您会希望将文件存储到文件系统中,而文件系统正是为此目的而设计的:-)

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

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

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


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

谢谢您的回答,但是使用blob在数据库和备份的性能方面没有问题?这就是我的意思。除非你绝对确定blob适合你,否则你应该避免它。好的,我理解。谢谢:)谢谢你的回答,过去我在使用php和MySQL的网站上使用过这种方法,但我有完整性问题,因为它是从数据库中删除的记录,而不是从文件系统中删除的,反之亦然。谢谢你的回复。所以您告诉我,从长远来看,如果数据量适中,Blob开始产生问题,因此最好存储在文件系统中,对吗?没错。除非您绝对确定只有少量的映像,否则我会将它们放在文件系统的前端,并进行开发以使其现在起作用,因为这将节省大量的时间、精力和以后的问题。