SharePoint, Remote BLOB Storage (RBS), External BLOB Storage (EBS) and FILESTREAM

Finding #1: Remote Blob Storage RBS is recommended for SharePoint 2010 in conjunction with SQL Server 2008 R2. 

Finding #2: I don’t need FILESTREAM when I want use RBS. I can use FILESTREAM in conjunction with RBS though.

 

RBS

EBS

On Microsofts deprecation list

No

Yes

BLOB Store scope

Per Content DB

Entire farm

BLOB Storage Providers

More than one

Just one

Just for informational purposes, a high level architectural difference between RBS and EBS is that RBS is implemented by SQL Server 2008 R2 and EBS is implemented from a hotfix for MOSS 2007 in SP1 and is part of the SharePoint stack. EBS is still supported but is on the deprecation list.

For RBS, out-of-the-box you get a FILESTREAM provider from Microsoft which allows you to store blobs to disk drives (i.e. c:\myblobstore). It is important to note that SharePoint 2010 doesn’t know (and doesn’t care) that BLOBs are not in the database. That is the provider’s job. Third party vendors will surely release other providers, think storage in the cloud, NAS, other storage mechanisms. So if you need something more than the FILESTREAM provider from Microsoft, you are looking to the third party market.

What is Remote BLOB Storage?

A new feature in SQL Server 2008 R2 is Remote Blob Storage (RBS) which allows admins to setup SQL to save data that would normally go into a BLOB field to be stored outside the database using an RBS provider. This provider could store data on a cheaper disk solution (compared to the expensive disk solutions usually selected for SQL Server), to a SAN or maybe even into the cloud… it really doesn’t matter where. The point is that BLOBs can be kept out of a SQL Server DB.

For SharePoint this has big implications because as a document/attachment centric product, it stores a LOT of data in BLOBs generating large content databases. Before this feature became available in SQL 2008 R2 RBS was pretty much impossible. Some like External Blob Storage (EBS) was just not recommended. SharePoint 2010 when combined with SQL Server 2008 R2 allows admins to do RBS, keeping only metadata in de content DBs and keep the BLOBs out. This is a decisions not to be taken lightly.

First think about backup & restore policy. Additional backups are needed for the remotely stored BLOBs. Those who are looking to gain from RBS are large SharePoint implementations, high investment and usage. Third party vendors of backup software who support RBS therefor have an edge.

When to use Remote BLOB Storage

  • RBS is typically recommended in the case where the content databases are 4 gigabytes (4 GB) or larger.
  • When the number and the file size get bigger and bigger.
  • Intelligent backup and restore mechanisms are in place that support RBS.

When to use FILESTREAM

In SQL Server, BLOBs can be standard varbinary(max) data that stores the data in tables, or FILESTREAM varbinary(max) objects that store the data in the file system. The size and use of the data determines whether you should use database storage or file system storage. If the following conditions are true, you should consider using FILESTREAM:

  • Objects that are being stored are, on average, larger than 1 MB.
  • Fast read access is important.
  • You are developing applications that use a middle tier for application logic.

For smaller objects, storing varbinary(max) BLOBs in the database often provides better streaming performance.

Comparison point

Storage solution

File server / file system

SQL Server (using varbinary(max))

FILESTREAM

Maximum BLOB size

NTFS volume size

2 GB – 1 bytes

NTFS volume size

Streaming performance of large BLOBs

Excellent

Poor

Excellent

Security

Manual ACLs

Integrated

Integrated + automatic ACLs

Cost per GB

Low

High

Low

Manageability

Difficult

Integrated

Integrated

Integration with structured data

Difficult

Data-level consistency

Data-level consistency

Application development and deployment

More complex

More simple

More simple

Recovery from data fragmentation

Excellent

Poor

Excellent

Performance of frequent small updates

Excellent

Moderate

Poor

Table 1: Comparison of BLOB Storage Technologies Before SQL Server 2008


Figure #1: Read performance of various BLOB sizes

Find more info on FILESTREAM here and here.