Why Would You Want Exchange Server With A SQL Backend?

Consider the format of an Exchange database.

It's flat. Very flat.

Take a mailbox. Basically, it is a table that contains pointers to other tables. What are those other tables? Well, your Inbox, Sent Items, Calendar, Tasks, Notes, etc....

Every folder is a table. Each table contains objects and pointers to other tables. An object may be a message, a task, a calendar entry - basically the low-level objects which Outlook manipulates.

Every view is an index - and an index is just a table of sorted pointers to objects (plus a small bit of meta-data).

So... each mailbox may have thousands of tables. A mailbox database may have millions of tables. Yes, you read that right: millions.

Why is it done that way? Easy answer! To allow the user maximum flexibility. The end-user is not limited in the number of views, not limited by what he can sort by, how many objects you can contain in a folder (although there certainly are performance issues associated large numbers of items), etc. etc. Exchange Server generates these views on the fly whenever Outlook requests them. Real-time. The end-user is not arbitrarily limited in any significant way.

Give a great pat on the back to Exchange!

How does Exchange do this? With ESE. Because ESE - the Exchange database engine - supports these features.

Now, consider Microsoft SQL. A great DB engine. However, it doesn't really generate tables on the fly. Or views on the fly. Or have a hierarchical mechanism for storing table trees. Or clean up after itself. All of these functions have latency in SQL...

So....what would have to happen? A complete redesign. Not just a simple "let's use a different backend". And, it's likely that a lot of features would be lost in any such translation.

Do I want Exchange in SQL? No. Do I think it would work well? Not with any SQL Server released to date.

In the future? Who knows? Maybe. But I don't know.

Until next time...

As always, if there are items you would like me to talk about, please drop me a line and let me know!

Published Wednesday, April 16, 2008 8:54 AM by michael
Filed under:

Comments

Thursday, April 17, 2008 9:10 AM by Edward Lansink

# re: Why Would You Want Exchange Server With A SQL Backend?

Exchange's database offers brilliant performance... but I think that comes at a price. Exporting Exchange email to pst doesn't always go so smoothly as most people in the industry will know. Could unreliable pst's be a result of the flexibility that the Exchange database offers?

In addition to the rhetorical questions in your post: Do I want Exchange to be supported by SQL for email backup/archiving? YES! :)

Sunday, April 20, 2008 3:22 PM by subject: exchange

# Weekend reading

Outlook Safelist aggregation IMAP And Ajax UI Temporarily Go AWOL On Gmail A Safety Net for the Send