【问题标题】:Blob or File System to store and retrieve heterogeneous file in a Web Application用于在 Web 应用程序中存储和检索异构文件的 Blob 或文件系统
【发布时间】:2015-07-24 23:23:06
【问题描述】:

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

谢谢

【问题讨论】:

    标签: mysql angularjs hibernate spring-mvc blob


    【解决方案1】:

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

    【讨论】:

    • 感谢您的回答,过去我曾在使用 php 和 MySQL 的网站中使用过这种方法,但我遇到了完整性问题,因为它是从 db 而不是从文件系统中删除的记录,反之亦然反之亦然。
    【解决方案2】:

    Blob 仅在少数角落用例中有用。大多数时候,您希望将文件存储到文件系统中,不出所料,正是为此目的而创建的 :-)

    【讨论】:

    • 谢谢解答,但是使用blob在数据库性能和备份方面没有问题?
    • 这就是我的意思。除非您绝对确定 blob 适合您,否则您应该避免使用它。
    • 好的,我明白了。谢谢:)
    【解决方案3】:

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

    【讨论】:

    • 感谢您的回复。所以你告诉我,从长远来看,少量数据 Blob 开始产生问题,因此最好存储在文件系统上,对吧?
    • 没错。除非您绝对确定只有少量图像,否则我会将它们放在文件系统前面并立即进行开发以使其工作,因为它会节省大量以后的时间、精力和问题。
    【解决方案4】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-16
      • 2011-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多