Recently I wrote about how scalability and elasticity are achieved in the Windows Azure Platform. Today I want to discuss another issue concerning operating in the Cloud with large databases.
Having a single large database running in a cloud environment (known as scaling-up) has some drawbacks. It may not be able to handle the load of transactions at peak times. And there are high administrative and scaling costs with running in this type of environment. A better approach for handling a database with a large amount of data is scaling-out. This method uses multiple databases spread over multiple independent nodes. Typically a sharding pattering is used which allows applications to decentralize processing and distribute their workload over many nodes. With sharding, independent parts of data are partition into an instance called an atomic unit. Applications are built to handle this partitioning and use a dynamic routing mechanism to access a partition containing a specific atomic unit. While this creates greater complexity the end result is great scalability at a reduced price giving administrators the ability to plan for periods of peak capacity and provision (the allocation new instances) or deprovision (the closing of instances) as needed. Soon, this capacity will be available in SQL Azure.
Federations, a new feature to be introduced in Azure in the last quarter of 2011, will make it easier to redistribute and repartition data by having built in support for safely routing to partitioned or repartitioned data. Administrators will enjoy having the flexibility to redistribute data at will without causing any down time. This feature will give organizations with large databases the elasticity they need through the ability to scale without limit.
For more information, see:
SQL Azure Federations
Federations in SQL Azure: Building Scalable, Elastic and Multi-tenant Database Solutions