将BLOB存储在数据库中是不是一个好主意?

时间:2009-06-02 13:38:30

标签: database excel sql-server-2008 blob

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

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

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

编辑:为了进一步澄清,虽然我给出了一个特定的场景,但我打算这个问题主要是关于一般的BLOB。但是,无论我能为你的回答收集什么,这将有助于我在我的具体情况,当然,赞赏。 :)

谢谢,
-Robert


附:对于那些不知道的人,BLOB是“Binary Large Object”的缩写词

3 个答案:

答案 0 :(得分:5)

一般情况下,如果存在其他成本较低的存储选项,我会避免将blob放入数据库中。当然,在数据库中存储blob是有正当理由的,但我倾向于谨慎,并使用FS进行文件存储,使用数据库进行数据结构。

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

答案 1 :(得分:2)

无论如何,许多CMS软件包(例如Sharepoint)都将它们全部存储为BLOB。

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

在数据库中:

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

  • 一切都在一个地方。
  • 备份/恢复是连贯的

缺点:

  • 数据库膨胀
  • 性能

超出数据库

优点:

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

缺点:

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

答案 2 :(得分:1)

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