你在数据库中存储小于0.3 MB的blob的原因?

时间:2010-12-08 12:37:25

标签: sql-server database database-design storage blob

[1],[2]和许多其他参考文献给出的结论是,大小小于0.3-1 MB的BLOB应存储在数据库中,而BLOB大于1 MB - 在文件系统中(可能通过FILESTREAM)。

FACEBOOK.com在文件系统中存储6.5(30个缩略图和大小版本)数十亿张图片[3]。

兰德尔的白皮书[2]的理由是: alt text

嗯,这并不能说服我在数据库中存储blob的必要性,而是说它们不应该通过T-SQL而是通过Win32从外部访问/流式传输。

其他原因,我确实读过,对我来说也不那么令人信服。

您在数据库而不是文件系统中存储blob的原因是什么?

[1]
雷大麦。使用FILESTREAM将BLOB存储在SQL Server 2008中的NTFS文件系统中 http://www.mssqltips.com/tip.asp?tip=1489
[2]
Paul S. Randal
SQL Server 2008中的FILESTREAM存储
http://msdn.microsoft.com/en-us/library/cc949109(SQL.100).aspx
[3]
James Hamilton的博客文章。 Facebook:大海捞针:高效存储数十亿张照片 http://perspectives.mvdirona.com/2008/06/30/FacebookNeedleInAHaystackEfficientStorageOfBillionsOfPhotos.aspx

1 个答案:

答案 0 :(得分:3)

将这些数据存储在数据库而不是文件系统中有很多好处:

数据完整性 - 您可以对其实施约束

交易支持

可管理性 - 备份和还原选项

高可用性 - 数据库往往具有比文件系统更复杂的镜像和群集选项。

安全性 - 您可以获得那种不使用文件系统的细粒度安全控件

辅助功能 - 所有类型的应用程序都可以访问数据库中的表,以便进行演示和分析。可以使用SQL语句轻松查询数据库

审核 - 您可以记录和监控数据更改

我希望还有很多其他原因,但这些是最初想到的原因。