Microsoft launched in preview this week a new Elastic Database Pool model specifically designed to support SaaS developers building massively multi-tenant applications. In these scenarios, SaaS application vendors provision a database per client and with thousands of clients, each having their own dedicated Azure SQL database.
The challenge in this scenario is that each database is charged on a per unit basis with its own pool of resources. In many cases, you can have databases that are not using up their allotted resources and therefore the SaaS developer is forced to over provision and therefore be over charged for the databases for each of their clients.
With the Elastic Database Pool model, the SaaS Developer now can buy a pool of resources that spans across thousands of databases. In a similar way to packing virtual machines on a host to optimize resources, the Elastic Database Pool allows you to pack databases into a shared pool of database resources by average the peaks and valleys across many databases. The efficiency gain is dependent on the variability of the database and the number of databases in the pool. The ideal target for the Elastic Database Pool model are applications where are hundreds of databases provisioned but they are not constantly used and have lots of variability in usage patterns.
While paying more per performance unit than a dedicated database, this can result in significant savings in scenarios where there are a large number of database instances that are not under utilized as the pool averages out the usages across all the instances. If the Elastic Pool runs out of resources, the SaaS can easy scale up the entire pool.