【问题标题】:Why to use Blob at all if I can save file pathes in database and actual files in storage?如果我可以将文件路径保存在数据库中并将实际文件保存在存储中,为什么还要使用 Blob?
【发布时间】:2019-02-11 21:31:34
【问题描述】:

我知道 blob 是二进制数据的数据类型,因为整数是 int 的数据类型。正如他们所说,它用于将文件直接存储在数据库中(我们将音频文件移动到 blob 中,并将该 blob 保存在数据库中)。

问题 1) 如果我可以将音频存储在例如路径 /var/www/audio.mp3 中并在数据库中存储路径名 /var/www/audio.mp3,为什么要存储音频的 blob?

问题 2) 哪个更好? Netflix 如何存储电影?只是斑点还是什么?

问题 3) 想知道是否有任何缺点或优点,如果你能给我一些想法,以便我知道何时使用它们。

【问题讨论】:

标签: javascript mysql filesystems blob


【解决方案1】:

将 blob 放入数据库而不是文件中,可以让您通过负载平衡扩展到多台服务器。如果将数据放在文件中,则必须在服务器之间复制文件。大多数数据库都有内置的复制功能,这对于常规文件来说并不容易。

【讨论】:

    【解决方案2】:

    使用 blob,您可以存储各种东西。 您是否通过 SOAP 或 JSON 与 API 通信并希望将其存储在数据库中?使用斑点。想要记录用户在抛出异常时填写的表单内容?将整个帖子存储为一个 blob。您可以按原样保存所有内容。如果您有不同的数据格式,它对记录很方便。我知道一个 API 需要一些数据通过 SOAP 和一些 JSON。为了记录通信,我使用 blob,因为响应可能是 XML、JSON、数字(http 代码 203 为空但已接受)或数组形式的异常。

    【讨论】:

    • 同意,但是当它只是关于图像或电影时,就会出现一个主要问题。但我认为世界上没有人将电影存储在数据库中的 blob 中。我知道这将是超级安全、数据完整性等,但也许没有办法存储长电影。你怎么看?我对吗?但是如果我需要存储图像,我会将其存储为 blob,因为在文件系统中删除或插入文件时我不会头疼。对吗?
    • 电影不会存储在数据库中,因为您会很快耗尽磁盘空间,因此不建议这样做。所有更小的东西(虱子图标、邮件附件……)都是合法的,我将这些东西存储为 blob。仅存储电影等大文件的路径。将小文件保存为 blob 可以在迁移系统时为您省去麻烦,帮助您提高性能,甚至减少代码。例如,您不需要连接到额外的 FTP 服务器来获取文件。想象一下,当您可以进行简单的选择时,循环浏览几行并分别下载文件。
    【解决方案3】:

    最好使用外部存储/cdn 来提供此类大型内容。

    Netflix 和我们的工作方式如何?他们在外部存储桶 i 上上传内​​容。 e. S3并在db中写入文件名以进行识别。根据用户文件访问频率,文件缓存在 CDN/边缘位置。当内容服务器从他们最近的边缘位置时,用户将获得很棒的体验

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-12
      • 1970-01-01
      • 1970-01-01
      • 2020-02-11
      • 1970-01-01
      • 1970-01-01
      • 2011-04-01
      相关资源
      最近更新 更多