操作限制和权衡分析
上次修改时间: 2009年10月1日
适用范围: SharePoint Foundation 2010
利用外部二进制大型对象 (BLOB) 存储提供程序或 EBS 提供程序 (ISPExternalBinaryProvider),您可以在外部 BLOB 存储中存储或从中检索非结构化二进制流。这将允许外部 BLOB 存储与包含应用程序结构化数据的 Microsoft SQL Server 内容数据库并行工作。但是,由于 EBS 提供程序相对简单(设计使然),因此存在一些操作限制。此外,安装和启用 EBS 提供程序还会增加部署 SharePoint 的复杂性,从而影响备份和还原操作、垃圾收集过程以及部署的其他方面。
限制因素和权衡问题
以下是在 SharePoint 部署中实现 EBS 提供程序时应考虑的一些关键问题:
外部 BLOB 存储中的数据流从不改变或更新,这使得 SQL Server 内容数据库和并行外部 BLOB 存储始终保持文件级事务一致性。
在保存一个已编辑或已更新的 SharePoint 文件时,EBS 提供程序不会 覆盖现有 BLOB,而是创建一个新的 BLOB 数据流并将其放在外部 BLOB 存储中。同时会从 SQL Server 数据库中删除对原始 BLOB 及其 BlobId 的元数据引用;然后,EBS 提供程序会创建一个新的引用(具有新的 BlobId)来关联新建的 BLOB。
当然,这种方案会导致外部 BLOB 存储中积聚孤立的 BLOB;根据系统中 BLOB 数据的更新速度,孤立 BLOB 的数量很容易变得很大。因此,必须分析和量化更新速度并按预定时间收集垃圾,以便有效维护外部 BLOB 存储。(有关详细信息,请参阅实现惰性垃圾收集。)
备注
垃圾收集本身就是一种耗费资源的操作,对于外部 BLOB 存储和 SQL Server 内容数据库均是如此。因此,您必须确保安排适当的垃圾收集时间,从而避免在使用高峰期出现争夺应用程序资源的情况。
当前版本中的外部 BLOB 存储功能在语法上将不再与即将发布的外部 BLOB 存储技术(随 Microsoft Office 和 SharePoint Foundation 的下一完整版一起发布)保持一致。这种兼容性不是设计目标,因此不要认为使用当前版本的实施方案将与 Microsoft Office 或 SharePoint Foundation 的未来版本兼容。
在其当前版本中,仅在场 (SPFarm) 范围内支持外部 BLOB 存储。此外,必须在场中的每台前端 Web 服务器上安装、配置和启用 EBS 提供程序。
任何因使用 EBS 提供程序引起的或外部 BLOB 存储自身存在的错误情形、资源或系统延迟情况通常都会在 SharePoint 站点的性能中反映出来。
没有用来将 BLOB 数据从内容数据库移至外部 BLOB 存储的实用程序。因此,当您首次安装和启用 EBS 提供程序时,一定要手动将当前存储在内容数据库中的现有 BLOB 数据移到外部 BLOB 存储中。您可以采用两种方式进行移动。
可以对 SPSiteCollection 对象使用站点级备份和还原方法来备份和还原整个数据存储。首次备份所有数据,然后安装并启用 EBS 提供程序后,再调用还原操作时,EBS 提供程序会将 BLOB 数据流传送到外部 BLOB 存储,同时会将结构化数据传送到内容数据库的相应表中。
还可以采用被动方法,但需将本节前面讨论过的问题考虑在内。由于更新文件时,会将新的 BLOB 数据流保存到外部 BLOB 存储中,因此,您可以只安装和启用 EBS 提供程序,然后允许自动更新文件,以便使用内容数据库中以前存放的二进制文件逐步填充外部 BLOB 存储。当更新后的文件传送到外部 BLOB 存储时,会自动从内容数据库中删除该文件的以前版本。
将外部 BLOB 存储与 EBS 提供程序结合使用时,必须重新设计备份和还原过程以及灾难恢复方案,因为 SharePoint Foundation 中的某些备份和还原功能只对内容数据库有效,而对外部 BLOB 存储无效。必须单独处理外部 BLOB 存储。