[1],[2]和许多其他参考文献给出的结论是,大小小于0.3-1 MB的BLOB应存储在数据库中,而BLOB大于1 MB - 在文件系统中(可能通过FILESTREAM)。
FACEBOOK.com在文件系统中存储6.5(30个缩略图和大小版本)数十亿张图片[3]。
兰德尔的白皮书[2]的理由是:
嗯,这并不能说服我在数据库中存储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
答案 0 :(得分:3)
将这些数据存储在数据库而不是文件系统中有很多好处:
数据完整性 - 您可以对其实施约束
交易支持
可管理性 - 备份和还原选项
高可用性 - 数据库往往具有比文件系统更复杂的镜像和群集选项。
安全性 - 您可以获得那种不使用文件系统的细粒度安全控件
辅助功能 - 所有类型的应用程序都可以访问数据库中的表,以便进行演示和分析。可以使用SQL语句轻松查询数据库
审核 - 您可以记录和监控数据更改
我希望还有很多其他原因,但这些是最初想到的原因。