CS Nuggets

This blog is for addons, bugs, fixes, and issues pertaining to Community Server.

April 2009 - Posts

CS2008: CFS and the removal of BLOBs from the database. The unbelievable blunder!

Back in June of 2008 I wrote CS2008: CFS: The deal breaker where I talk about why removing all BLOBs from the database was a HUGE mistake, and here is why:

FILESTREAM Storage in SQL Server 2008

By removing BLOBs from the database you open up the problem of orphaned records, disconnected records, and backups being out of sync as the file system backup is now part of the database backup.  The whole design is an obsolete concept and complete mess.  In the past, BLOBs could be very taxing on the database and cause bottlenecks if not designed properly.  Microsoft knew this and had been working on the issues since SQL 7.  The major changes to the core design of SQL Server 2008 are what makes FILESTREAMs possible and addresses the last two issues that  BLOB database storage exhibited, size and performance.

FILESTREAMs were announced over 2 years ago, so I have no idea why Telligent removed BLOBs from the database, but their removal has created the biggest problem that I have seen in years.  Almost every client that I have worked with is wondering why their Avatars seem to get deleted, why their pictures are showing red X's, and why their media keeps disappearing.  It's because they are not preserving the ~/filestorage/ folders, which now contain the ONLY copy of these files, when they rollout updates to the site.  If you make any change that affects the ~/filestorage/ folders, or the files it contains, you are actually making changes to your database as the file system IS NOW your database for all BLOBs.

Prior to CS2008, you had the option of storing BLOBs in the database and/or on the file system.  Anyone who new anything about databases and application administration would setup CS to use both.  The database gives you referential integrity and an easy backup solution, while file system storage (cache) gives you great performance.  FILESTREAMs give you the referential integrity of the database and the speed of a file system storage.  It would have been more inTelligent to deploy CFS without removing BLOBs from the database and to provide an update for those that move to SQL Server 2008 that makes full use of FILESTREAMs, but I guess that was too inTelligent of an idea.

I've heard that Telligent is working on a new CFS module for Enterprise clients only.  It sounded like it may be making use of FILESTREAMs, and that Enterprise clients may again have the option of storing BLOBs in the database.  I tried to get more information at the time, but the information that I was given is very unclear.

On a good note, Dave Burke is working hard on Sueetie to consolidate the "Console" to give admins a better UI experience.  Be on the watch out for BeHeard.com.  We are currently in the design phase with the client, and it will be based on Sueetie.  I'll post more about teh project on my personal blog as the project progresses.

Posted: Wed, Apr 1 2009 06:28 PM by Bill Bosacker | with no comments
Filed under: ,