External Blob Storage in SharePoint 2007

External Blob Storage (EBS) is a much blogged about and discussed feature of SharePoint 2007. It has been available for over 2 years now, first as a hotfix and then as part of the Service Pack 1 release but based on my experience its one of least understood and used feature. To understand external blob storage I read the SDK recently and searched a lot on the Internet for information available. I am summarizing my findings in this post and hope it will be useful to others.

To put it simply, implementing EBS in SharePoint:

  • allows file metadata to be stored in a Content Database, and
  • the actual file contents to be stored in an external file system

Understanding the EBS concept

To understand the basics, I would recommend starting with the WSS SDK documentation available on the subject. Given below is the link to landing page for relevant SDK section:

External Storing of Binary Large Objects (BLOBs) in Windows SharePoint Services - The Help topics in this section describe how to use the special external binary large object (BLOB) store provider (EBS Provider) interface, ISPExternalBinaryProvider, to allow you to store BLOB data in a data store that is external to the SharePoint content database. Topics in this section discuss the rationale for storing BLOB data externally, the architecture of the EBS Provider, and implementation of the EBS Provider in front-end Web applications for Windows SharePoint Services.

Do not miss the key issues to consider when implementing the EBS Provider in your SharePoint deployment in Operational Limits and Trade-Off Analysis section.

After the Basics

If you have been entrusted with the task to implement the EBS API, then first destination should be Pav Cherny's article and the sample code in TechNet Magazine's June 2009 issue.

Creating an External Storage Solution for SharePoint - Storing unstructured data in SharePoint content databases is not always ideal. This article discusses the advantages and disadvantages of using an external storage solution; extending the SharePoint storage architecture using the ISPExternalBinaryProvider API in managed and unmanaged code; and how to avoid data loss during lazy garbage collection

There is also a 3-part series - “External BLOB/Binary Store for Windows SharePoint Services 3.0 in C#/.NET 2.0” on Kyle's Blog. Kyle discusses how the EBS implementation was done but stops short of posting code.  Link to Part 1, Part 2 and Part 3.

After reading them, I did realize that, in this case, programming is not for faint hearted. Think hard and plan well before you start coding. Kyle has done it, so can you :-)

ISV products using EBS API

In case your company/customer has $$$ to buy a product, following are the 2 products I am personally aware of. You can check them out and evaluate suitability for your scenario.

1). BlueThread Technologies: StoragePoint 

To get more information, check: Features, Customers, Licensing pages and the StoragePoint Team Blog. There is also a Video: BackSeat Driving With Michael – BlueThread StoragePoint on Michael Gannotti's blog.

2). Open Text: Open Text Storage Services for Microsoft SharePoint

Please let me know if there are other similar products available.