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

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

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

什么是专业人员(如果有的话,除了保持生产数据和备份在同一地点)和把BLOBs放在数据库中的缺点?

编辑:只是为了澄清一点,虽然我给了一个具体的场景,我打算这个问题主要是关于一般的BLOB。 但是,无论我可以收集哪些答案,都可以帮助我解决具体情况。 🙂

谢谢,
– 罗伯特·

PS对于那些不知道的人来说,BLOB是“Binary Large Object”的缩写,

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

由于您使用的是SQL 2008,您可能也对FileStream数据types感兴趣。 它可以让你更容易。

许多CMS软件包(如Sharepoint)将其全部存储为BLOB。

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

在数据库中:

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

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

缺点:

  • 数据库膨胀
  • 性能

数据库外

优点:

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

缺点:

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

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