【问题标题】:Is it ever a good idea to store BLOBs in a database?将 BLOB 存储在数据库中是个好主意吗?
【发布时间】:2010-10-30 16:32:53
【问题描述】:

一段时间以来,我一直致力于将数据从臃肿的 Excel 工作簿插入 SQL 数据库。我的团队建议保留 .xls 的备份,他们想知道将 Excel 工作簿实际放在数据库中是否是个好主意,以便我们项目中的所有相关数据都放在一起。

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

将 BLOB 放入数据库有哪些优点(如果有的话,除了将生产数据和备份保存在同一个地方)和缺点?

编辑:只是为了进一步澄清,虽然我给出了一个具体的场景,但我打算这个问题主要是关于一般的 BLOB。但是,我可以从您的回答中收集到任何有助于我解决具体情况的信息,当然,我们将不胜感激。 :)

谢谢,
-罗伯特


附言对于那些不知道的人,BLOB 是“二进制大对象”的后缀

【问题讨论】:

  • 好问题,但这里已经被问过很多次了。投票以重复结束
  • 我只能找到关于将图像专门存储为 BLOB 的问题;我打算询问一般的 BLOB。但是,我认为图像 BLOB 的大多数优点/缺点适用于所有 BLOB。
  • @Josh,请编辑问题并添加欺骗问题的链接,以便新用户轻松找到它们。

标签: database excel sql-server-2008 blob


【解决方案1】:

如果有其他成本更低的存储选项,我通常会避免将 blob 放入数据库。当然,将 blob 存储在数据库中是有正当理由的,但我倾向于谨慎行事,将 FS 用于文件存储,将数据库用于数据结构。

由于您使用的是 SQL 2008,您可能还对 FileStream 数据类型感兴趣。它可以让你的事情变得更轻松。

【讨论】:

  • 感谢 FILESTREAM 的建议 - 我会检查一下。
【解决方案2】:

许多 CMS 包(例如 Sharepoint)无论如何都将其全部存储为 BLOB。

快速总结。我没有个人意见,因为我从来不需要在数据库中设计或开发非常大的 BLOB(例如电子表格)。我已经存储了图像和其他较小的东西。

在数据库中:

优点: 假设其他数据以及 BLOB:

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

缺点:

  • 数据库膨胀
  • 性能

数据库外

优点:

  • 没有数据库膨胀
  • 本地存储

缺点:

  • 备份/恢复更复杂
  • 链接断开的风险

【讨论】:

  • 数据库膨胀还不错。 Blob 存储在表空间之外,并带有对二进制数据的引用。
  • 在 SQL Server 中?使用 FILESTREAM 是的,但是“表空间”是一个 Orcle 概念,不是吗?
  • @Kieveli:所有支持 BLOB 的 DBMS 都是这样吗?
【解决方案3】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-25
    • 2011-12-03
    • 1970-01-01
    • 1970-01-01
    • 2010-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多