Announcing Great New SQL Database Capabilities in Azure
Today we are making available several new SQL Database capabilities in Azure that enable you to build even better cloud applications. In particular:
- We are introducing two new pricing tiers for our Elastic Database Pool capability. Elastic Database Pools enable you to run multiple, isolated and independent databases on a private pool of resources dedicated to just you and your apps. This provides a great way for software-as-a-service (SaaS) developers to better isolate their individual customers in an economical way.
- We are also introducing new higher-end scale options for SQL Databases that enable you to run even larger databases with significantly more compute + storage + networking resources.
Both of these additions are available to start using immediately.
Elastic Database Pools
If you are a SaaS developer with tens, hundreds, or even thousands of databases, an elastic database pool dramatically simplifies the process of creating, maintaining, and managing performance across these databases within a budget that you control.
A common SaaS application pattern (especially for B2B SaaS apps) is for the SaaS app to use a different database to store data for each customer. This has the benefit of isolating the data for each customer separately (and enables each customer’s data to be encrypted separately, backed-up separately, etc). While this pattern is great from an isolation and security perspective, each database can end up having varying and unpredictable resource consumption (CPU/IO/Memory patterns), and because the peaks and valleys for each customer might be difficult to predict, it is hard to know how much resources to provision. Developers were previously faced with two options: either over-provision database resources based on peak usage--and overpay. Or under-provision to save cost--at the expense of performance and customer satisfaction during peaks.
Microsoft created elastic database pools specifically to help developers solve this problem. With Elastic Database Pools you can allocate a shared pool of database resources (CPU/IO/Memory), and then create and run multiple isolated databases on top of this pool. You can set minimum and maximum performance SLA limits of your choosing for each database you add into the pool (ensuring that none of the databases unfairly impacts other databases in your pool). Our management APIs also make it much easier to script and manage these multiple databases together, as well as optionally execute queries that span across them (useful for a variety operations). And best of all when you add multiple databases to an Elastic Database Pool, you are able to average out the typical utilization load (because each of your customers tend to have different peaks and valleys) and end up requiring far fewer database resources (and spend less money as a result) than you would if you ran each database separately.
The below chart shows a typical example of what we see when SaaS developers take advantage of the Elastic Pool capability. Each individual database they have has different peaks and valleys in terms of utilization. As you combine multiple of these databases into an Elastic Pool the peaks and valleys tend to normalize out (since they often happen at different times) to require much less overall resources that you would need if each database was resourced separately:
Because Elastic Database Pools are built using our SQL Database service, you also get to take advantage of all of the underlying database as a service capabilities that are built into it: 99.99% SLA, multiple-high availability replica support built-in with no extra charges, no down-time during patching, geo-replication, point-in-time recovery, TDE encryption of data, row-level security, full-text search, and much more. The end result is a really nice database platform that provides a lot of flexibility, as well as the ability to save money.
New Basic and Premium Tiers for Elastic Database Pools
Earlier this year at the //Build conference we announced our new Elastic Database Pool support in Azure and entered public preview with the Standard Tier edition of it. The Standard Tier allows individual databases within the elastic pool to burst up to 100 eDTUs (a DTU represents a combination of Compute + IO + Storage performance) for performance.
Today we are adding additional Basic and Premium Elastic Database Pools to the preview to enable a wider range of performance and cost options.
- Basic Elastic Database Pools are great for light-usage SaaS scenarios. Basic Elastic Database Pools allows individual databases performance bursts up to 5 eDTUs.
- Premium Elastic Database Pools are designed for databases that require the highest performance per database. Premium Elastic Database Pools allows individual database performance bursts up to 1,000 eDTUs.
Collectively we think these three Elastic Database Pool pricing tier options provide a tremendous amount of flexibility and optionality for SaaS developers to take advantage of, and are designed to enable a wide variety of different scenarios.
Easily Migrate Databases Between Pricing Tiers
One of the cool capabilities we support is the ability to easily migrate an individual database between different Elastic Database Pools (including ones with different pricing tiers). For example, if you were a SaaS developer you could start a customer out with a trial edition of your application – and choose to run the database that backs it within a Basic Elastic Database Pool to run it super cost effectively. As the customer’s usage grows you could then auto-migrate them to a Standard database pool without customer downtime. If the customer grows up to require a tremendous amount of resources you could then migrate them to a Premium Database Pool or run their database as a standalone SQL Database with a huge amount of resource capacity.
This provides a tremendous amount of flexibility and capability, and enables you to build even better applications.
Managing Elastic Database Pools
One of the the other nice things about Elastic Database Pools is that the service provides the management capabilities to easily manage large collections of databases without you having to worry about the infrastructure that runs it.
You can create and mange Elastic Database Pools using our Azure Management Portal or via our Command-line tools or REST Management APIs. With today’s update we are also adding support so that you can use T-SQL to add/remove new databases to/from an elastic pool. Today’s update also adds T-SQL support for measuring resource utilization of databases within an elastic pool – making it even easier to monitor and track utilization by database.
Elastic Database Pool Tier Capabilities
During the preview, we have been and will continue to tune a number of parameters that control the density of Elastic Database Pools as we progress through the preview.
In particular, the current limits for the number of databases per pool and the number of pool eDTUs is something we plan to steadily increase as we march towards the general availability release. Our plan is to provide the highest possible density per pool, largest pool sizes, and the best Elastic Database Pool economics while at the same time keeping our 99.99 availability SLA.
Below are the current performance parameters for each of the Elastic Database Pool Tier options in preview today:
| Basic Elastic | Standard Elastic | Premium Elastic |
Elastic Database Pool | |||
eDTU range per pool (preview limits) | 100-1200 eDTUs | 100-1200 eDTUs | 125-1500 eDTUs |
Storage range per pool | 10-120 GB | 100-1200 GB | 63-750 GB |
Maximum database per pool (preview limits) | 200 | 200 | 50 |
Estimated monthly pool and add-on eDTU costs (preview prices) | Starting at $0.2/hr (~$149/pool/mo). Each additional eDTU $.002/hr (~$1.49/mo) | Starting at $0.3/hr (~$223/pool mo). Each additional eDTU $0.003/hr (~$2.23/mo) | Starting at $0.937/hr (`$697/pool/mo). Each additional eDTU $0.0075/hr (~$5.58/mo) |
Storage per eDTU | 0.1 GB per eDTU | 1 GB per eDTU | .5 GB per eDTU |
Elastic Databases | |||
eDTU max per database (preview limits) | 0-5 | 0-100 | 0-1000 |
Storage max per DB | 2 GB | 250 GB | 500 GB |
Per DB cost (preview prices) | $0.0003/hr (~$0.22/mo) | $0.0017/hr (~$1.26/mo) | $0.0084/hr (~$6.25/mo) |
We’ll continue to iterate on the above parameters and increase the maximum number of databases per pool as we progress through the preview, and would love your feedback as we do so.
New Higher-Scale SQL Database Performance Tiers
In addition to the enhancements for Elastic Database Pools, we are also today releasing new SQL Database Premium performance tier options for standalone databases.
Today we are adding a new P4 (500 DTU) and a P11 (1750 DTU) level which provide even higher performance database options for SQL Databases that want to scale-up. The new P11 edition also now supports databases up to 1TB in size.
Developers can now choose from 10 different SQL Database Performance levels. You can easily scale-up/scale-down as needed at any point without database downtime or interruption. Each database performance tier supports a 99.99% SLA, multiple-high availability replica support built-in with no extra charges (meaning you don’t need to buy multiple instances to get an SLA – this is built-into each database), no down-time during patching, point-in-time recovery options (restore without needing a backup), TDE encryption of data, row-level security, and full-text search.
Learn More
You can learn more about SQL Databases by visiting the http://azure.microsoft.com web-site. Check out the SQL Database product page to learn more about the capabilities SQL Databases provide, as well as read the technical documentation to learn more how to build great applications using it.
Summary
Today’s database updates enable developers to build even better cloud applications, and to use data to make them even richer more intelligent. We are really looking forward to seeing the solutions you build.
Hope this helps,
Scott