Cloud computing is about scaling out all your application tiers, from web application to
the database layer. In fact,
the whole promise of Azure is to pay for just what you need. You need more IIS servers? No problemo... just spin another web server. You expect to double your storage needs for Azure Tables? No problemo; you are covered there too... just pay for your storage needs.
But what about
the database tier,
SQL Azure? How do you add new databases easily,
and transparently, so that your application simply uses more of
SQL Azure if its needs to? Without changing a single line of code?
And what if you need to scale back down? Welcome to
the world of database scalability.
There are many terms that describe database scalability, including data federation, multitenant designs,
and even NoSQL depending on
the technical solution you are implementing. Because
SQL Azure is a transactional database system, NoSQL is not really an option. However data federation
and multitenant designs offer some very interesting scalability options that are worth considering. Data federation, a feature of
SQL Azure that will be offered in
the future, offers very interesting capabilities available natively on
the SQL Azure platform. More to come in a few weeks...
Multitenant designs on
the other hand are design practices
and technologies designed to help you reach flexible scalability options not available otherwise.
The first incarnation of such a method was made available on CodePlex as an open source project (http://enzosqlshard.codeplex.com). This project was an attempt to provide a sharding library for educational purposes. All that sounds really cool...
and really esoteric... almost a form of database "voodoo"...
However after being on multiple Azure projects I am starting to see a real need. Customers want to be able to free themselves from
the database tier, so that if they have 10 new customers tomorrow, all they need to do is add 2 more
SQL Azure instances. It's that simple.
How you achieve this,
and suggested application design guidelines, are available in a white paper I just published.
The white paper offers two primary sections.
The first section describes
the business
and technical problem at hand,
and how to classify it according to specific design patterns. For example, I discuss compressed shards through schema separation.
The second section offers a method for addressing
the needs of a multitenant design using a new library,
the big bother of
the codeplex project mentioned previously (that I created earlier this year), complete with management interface
and such. A Beta of this platform will be made available within weeks; as soon as
the documentation will be ready.
I would
like to ask you to drop me a quick email at
[email protected] if you are going to download
the white paper. It's not required, but it would help me get in touch with you for feedback. You can download this white paper here: http://www.bluesyntax.net/files/EnzoFramework.pdf .
Thank you,
and I am looking for feedback, thoughts
and implementation opportunities.