[英]Blob or File System to store and retrieve heterogeneous file in a Web Application
早上好,我正在设计一个使用Spring MVC,Hibernate,MySQL和AngularJS等技术的Web应用程序。 现在我发现自己要解决以下问题。 假设与一个产品相关联的是一个或多个异构文件(图像,pdf,视频等),并且您必须管理文件的上载和显示。 我了解了在数据库中使用BLOB与混合使用文件系统和数据库之间的区别。 我的问题是:考虑到所使用的技术堆栈以及(至少在初始阶段)仍部署到单个服务器的技术堆栈,什么是最佳使用方法?
谢谢
我认为最好的方法是将文件存储在文件系统中,然后将其路径存储在数据库中,这对我来说很有效
Blob仅在少数几个用例中有用。 在大多数情况下,您想将文件存储到文件系统中,这毫不奇怪,它正是为此目的而制作的:-)
几年前,我们经历了一个非常类似的过程,并选择将文件存储在数据库中。 对于少量文件,这很好用。 但是,请考虑一年/ 5年/ 10年的情况以及您将拥有多少个文件。 它们会占用数据库中的大量空间,从而影响性能和备份/还原时间。 我们现在正在尝试将它们移出数据库并移至文件系统,这比将它们放入文件系统开始要困难得多(因为它已经深深地根植于我们的应用程序中)。
这取决于数据库和/或文件的大小。
对于我自己的应用程序来说,也许有点偏离主题,但也很有趣,我发现MySQL不适合在数据库中存储大于1 MB的文件。 但是,当使用MongoDB之类的数据库时,该数据库包括GridFS(基本上是数据库中的文件系统抽象),存储文件的效果很好。 更具体地说,MongoDB将这些文件存储在块中。 检索文件(例如视频)时,您只能请求所需的块,而不是整个视频,这在例如您跳到视频的稍后时间时效果很好。
由于您使用的是MySQL(每个文件的大小看起来将大于1 MB),因此建议您将它们放入文件系统中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.