Database Sharding in the Cloud: SQL Azure Federations

I just had some time on my hands to try out the new Windows Azure feature called SQL Azure Federations. While it is not fully obvious from the name, SQL Azure Federation basically enables building elastic and scalable database tiers.

Your application can now scale beyond a single SQL Azure database and use the capacity of 10s or 100s of nodes. The nicest part is that administrators can play with federations and database capacity without any application downtime (pretty amazing! – try that in your database cluster if you dare ).

Massive Scale: Federations bring in the sharding pattern in SQL Azure and allow harnessing of massive capacity at the database tier. Combined with the power of SQL Azure, administrators can choose to engage 10s or 100s of nodes within the SQL Azure cluster.

Best Economics: With federations, database tiers become truly elastic. Administrators can repartition applications based on workload to engage or disengage SQL Azure nodes. With federations, no downtime is required for these repartitioning operations.

Simplified Development and Administration of Scale-out Database Systems: Federations come with a robust programming and connectivity model for creating dynamic applications. With native tooling support for managing federations and with online repartitioning operations for orchestrating federation at runtime, federations greatly ease management of databases at scale.

Simplified Multi-tenant Database Tiers: Multi-tenancy provides great efficiencies by increasing the density of tenants per database. However, a static decision on placement of tenants rarely works for the long tail of tenants or for large customers that may hit scale limitations of a single database. With federations applications don’t have to make a static decision about tenant placement. Federations provide repartitioning operations for efficient management of tenant placement and re-placement and can deliver this without any application downtime.