操作限制和权衡分析

上次修改时间: 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 存储。

请参阅

引用

SPFarm

SPSiteCollection

概念

实现惰性垃圾收集