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:
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.
Another ISV provider, AvePoint and their DocAve software platform, utilizes both EBS and RBS, depending on whether companies are running SharePoint 2007 or SharePoint 2010.
AvePoint also has an EBS (and RBS) solution for both 2007 and 2010 versions of SharePoint in their doc ave platform.
I hope you have a nice day! Very good article, well written and very thought out. I am looking forward to reading more of your posts in the future.