Overview of External BLOB Storage in SharePoint Foundation

Last modified: October 01, 2009

Applies to: SharePoint Foundation 2010

Although Microsoft SQL Server is a highly efficient resource manager for structured data in a SharePoint content database, a large proportion of data files are represented as unstructured binary files—that is, binary large object (BLOB) data files. SQL Server offers less of a gain for binary data than for structured data, so your server farm might gain cost savings by using an external data store to contain your binary data files.

SQL Server is a highly performant resource manager for structured data in SharePoint Foundation. SQL Server provides a fast, efficient SQL query engine and exceptional query-based retrieval of structured data.

However, a large proportion of data in a typical enterprise deployment of SharePoint Foundation is stored as unstructured, binary data streams associated with SharePoint files. These binary streams, or BLOBs, which correspond with SharePoint files, often comprise a majority of your data.

The problem, however, is that SQL Server is not the best option for storing unstructured binary data streams because unstructured binary data does not expose itself to the rich SQL query environment. In fact, store and retrieve operations for BLOB data in SQL Server are little more than simple get and put statements. Therefore, because BLOB data is not able to leverage one of SQL Server's most useful features, its query engine, its value as a BLOB store is limited.

The solution, then, is using a simple, cost-effective storage medium to function as an external BLOB store (EBS). The EBS runs parallel to the site's SQL Server content database, which stores the site's structured data. To coordinate the two data stores, you must implement a COM interface (ISPExternalBinaryProvider), which uses simple semantics to recognize file Save and Open commands and invokes redirection calls to the BLOB store when it recognizes BLOB data streams.

When you implement this interface, you can use the object known as the external BLOB store provider—the EBS Provider—which coordinates store and retrieve operations for the BLOB store. The EBS Provider also ensures that the SQL Server content database contains metadata references to their associated BLOB streams in the external BLOB store.

You must install, register, and configure the EBS Provider on each of the front-end Web servers for each SharePoint site. This allows the interface to recognize Save and Open commands (representing the store and retrieve operations, respectively) and initiate the EBS Provider's redirection calls.

Be sure to understand that implementing EBS in your deployment requires certain trade-offs. In addition to the operational limits that are summarized in Operational Limits and Trade-Off Analysis, implementing the EBS Provider also adds new support and maintenance requirements.