Back in July I wrote my post about databases in the cloud. The big surprise that I discovered at the time was that the only “Native” RDBMS offering in the cloud came from Microsoft. Microsoft SQL Azure (launching formally at the PDC in a few weeks) is a mostly-compatible SQL Server as a Service release complete with support for Transact SQL/TDS. SQL Azure is a multitenanted DBMS with several customers running databases up to 10GB in size on a single server. Their target is the 95% of business applications running in the enterprise that have databases with less than 5GB of data (based on their research). Well, Microsoft is alone no more.
Today, Amazon’s Werner Vogels announced the Amazon Relational Database Service (RDS), which is a fully MySQL 5.1-compatible database as a service offering. Sure, Joyent launched their MySQL Accelerator in August, but nobody seemed to notice. Today’s RDS announcement from Amazon, combined with SQL Azure, heralds a new era in production scale RDBMS-as-a-Service (RDBaaS). By answering SQL Azure and fully validating the RDBaaS opportunity, Amazon has jump-started a fundamental transition in the $18B market for database systems.
DBMSs are now part of the utility model of cloud computing.
Historically, DBMSs have been something that you licensed (CapEx), installed, and physically managed and administered. Going forward, DBMSs will be something you use and perform logical administration and tuning on top of — but you won’t install, configure them, or worry about your log files jamming your disks and crashing your Web site. The RDBMS will just be there, ready for your applications, automatically backed up and replicated, and operated flawlessly as part of the fabric of your cloud.
The DBMS Market Dynamic
By providing MySQL, Amazon is catering to the Web and SaaS crowd, and less so to the enterprise. Conversely, Microsoft is well-positioned to compete in the far larger and more lucrative enterprise RDBMS market. Yes, there is MySQL in the enterprise, but it’s a side-show to Oracle, SQL Server and IBM’s DB2 (with a sprinkling of Sybase and others).
Speaking of which, how will Oracle, IBM and Sybase respond? IBM has their cloud offerings and will support DB2 fully – but will they be as innovative? Oracle’s stalled acquisition of Sun may eventually lead to an Oracle cloud where they would be able to offer a similar service. And frankly, out of all of the DBMSs out there, Oracle’s users have the most to gain from not having to hassle with that big and hard to manage system. Sybase? They seem to be dateless at this point. They don’t offer a cloud (and likely won’t), can’t get a leading cloud to back them with their small market share, and tend to only be used in really intense applications like trading and risk analytics on Wall Street – which are less likely to migrate to the cloud soon.
I don’t see a scenario where MySQL-based DBaaS offerings aren’t dominating the Web/SaaS market (MySQL the software dominates it today). Nor do I see a market for enterprise DBaaS that doesn’t have SQL Azure in the lead. There will be crossover (more with MySQL in the enterprise than SQL Azure in the Web/SaaS environment). Oracle may be able to craft a solution that enterprise-focused cloud providers (Terremark, Unisys, etc.) can use, but I wouldn’t bet on it soon.
Amazon RDS and Microsoft SQL Azure Compared
This is not intended to be a rigorous review, but there are some fairly significant differences in the approach taken by these vendors that are worth exploring.
SQL Azure is a multi-tenant service with multiple DBs on the same machine in a shared infrastructure environment. In some ways this is similar to how I believe Rackspace manages MySQL in their Cloud Sites business. You don’t manage the types of instance you run other than to select from two pricing tiers. The pros of this model is that they can offer SQL Server for as low as $10/month up to 1GB (or $99/month for 10G — nothing in the middle). If there’s a downside, it’s that some users might want to feel more like they can kick the dbms more directly. Also, by having a 10GB limit they force design decisions on applications with larger databases. They recommend partitioning (sharding) your data set across multiple DBMS instances to manage more than 10GB.
RDS is a bit different in that they provision individual special-purpose EC2 instances into your AWS account with a larger range of databases — from 5GB to 1 terabyte! They also let you control the type of instance, from Small (1.7GB RAM, 1 virtual core, etc) to Quadruple Extra Large – no foam – (68GB RAM, 8 souped up virtual cores, etc.). This gives you more control, but also makes you have to think more about your database — but then that’s how AWS works overall. You can get pretty large (1TB) without sharding due to size, though you may have to shard your DBMS for performance as this is not a “scale out” solution. My friends at Akiba Technologies in Boston are building a killer engine that eliminates sharding and radically improves performance for most MySQL applications. They’re a couple months from alpha, but this stuff is seriously kickin’ and should be considered by any other cloud provider feeling the need to compete in the RDBaaS space (disclosure, I am an advisor to Akiba).
One note is that, unlike SQL Azure, your bill can get pretty large for RDS. The smallest instance, is $0.11/hour, which is $80.30 per month (they are planning “reserved instance” pricing in the future – which will reduce that price). For their largest server, the bill is $2,270/month – plus you pay for the DBMS storage separately at $0.10/GB).
SQL Azure is mostly compatible with SQL Server, but not 100%. SQL Azure supports a reasonably large subset of T-SQL. Here is their FAQ on compatibility:
SQL Azure is built on SQL Server database technologies that are used for running mission-critical applications in the enterprise as well as on the Web. Since SQL Server is a broad data platform that can handle all data types from birth to archival, there are many associated capabilities that the data platform provides. SQL Azure is exposing a large subset of these relational capabilities and extending them as services in the cloud.
These services feature built-in high scale, availability, and self-management, and are provided in a way that makes it easy for customers and partners to consume over the Internet. SQL Azure, in its first iteration, exposes only the core RDBMS capabilities of what is in the full SQL Server data platform.
RDS, conversely, is 100% compatible with MySQL 5.1. This is pretty sweet!
There are many more things to cover, and perhaps I’ll continue this post at another time. The bottom line is that the market now has two credible, robust and innovative RDBaaS solutions, and it won’t be long before there are more. Welcome to the era of the DBMS Utility.