代码之家  ›  专栏  ›  技术社区  ›  JoeCool

在数据库中存储blob是否是一个好主意?

  •  4
  • JoeCool  · 技术社区  · 15 年前

    有一段时间,我一直在努力将膨胀的Excel工作簿中的数据插入到SQL数据库中。我的团队建议保留.xls的备份,他们想知道是否最好将Excel工作簿实际放在数据库中,以便将项目中的所有相关数据放在一起。

    我知道一些数据库支持插入二进制文件,但很明显这不是数据库系统最初的预期用途,所以我认为这是个坏主意。我的投票将把URL放到数据库中的工作簿中,并把工作簿保存在我们内部网上的安全位置。

    除了将生产数据和备份放在同一位置之外,将blob放在数据库中还有什么好处(如果有的话)和缺点?

    编辑:为了进一步澄清,虽然我给出了一个特定的场景,但我希望这个问题主要是关于一般的斑点。但是,我能为你的回答收集到的任何帮助我处理具体情况的信息,当然,我很感激。:)

    谢谢,
    -罗伯特


    另外,对于那些不知道的人来说,blob是“二进制大对象”的backcronym。

    3 回复  |  直到 15 年前
        1
  •  5
  •   Scott Arrington    15 年前

    一般来说,如果有其他存储选项成本更低,我就避免在数据库中放置blob。当然,在数据库中存储blob是有正当理由的,但是我倾向于谨慎地使用fs来存储文件,使用数据库来存储数据结构。

    由于您使用的是SQL 2008,因此您可能对 FileStream 数据类型。它可以让你的生活更轻松。

        2
  •  2
  •   gbn    15 年前

    许多CMS包(如SharePoint)都将其存储为blob。

    一个简短的总结。我没有个人意见,因为我从未在数据库中设计或开发过非常大的blob(如电子表格)。我已经存储了图像和其他较小的东西。

    在数据库中:

    赞成的意见: 假设其他数据和blob:

    • 都在一个地方。
    • 备份/恢复是一致的

    欺骗:

    • 数据库膨胀
    • 性能

    数据库外

    赞成的意见:

    • 没有数据库膨胀
    • 自然存储

    欺骗:

    • 备份/恢复更复杂
    • 断开连接的风险
        3
  •  1
  •   HLGEM    15 年前

    在我看来,如果需要打开Excel电子表格,如果它是一个blob,就变得更加困难。另一方面,您不希望备份电子表格在不更改数据的情况下进行更改,因此在您的情况下,这可能是一个优势。您还可以考虑要存储的电子表格的修订数。我们经常被要求查看一个客户机的原始输入数据,这个客户机可以追溯到一年或更长的时间(当你得到一个每日文件时真的很有趣),以找到问题的来源(或者至少证明问题是他们而不是我们!)。如果需要查看数据的不同版本,则您的blob需要位于相关表中。在您的情况下,这也是一个很好的优势,在我看来,您很少需要实际访问这些数据。