Azure SQL Data Services
In a previous blog entry, I provided an overview of Microsoft’s Azure Services (http://azure.com) but now I’d like to take a more in-depth look at what Microsoft is now calling SQL Azure Services (http://www.microsoft.com/azure/sql.mspx) which itself is based on the, you guessed it, SQL Azure database. From the outset, it is important to note that SQL Azure is a true cloud-based SQL database, which clearly differentiates it from other data storage options such as Google’s Big Table (partially accessible as part of Google App Engine – http://code.google.com/appengine/) or Amazon’s SimpleDB (http://aws.amazon.com/simpledb/). Both SimpleDB and Big Table are essentially infinitely scalable hash tables that allow data to be stored and retrieved using key values. So, if you’re building a cloud application using either of those technologies, or something similar and you need to store a person’s address, payment information, and order history, you might store all of that using a single key value and a large XML document, as opposed to normalizing out that data into many relational tables, as is traditionally done using relational database technology. This may or may not match your requirements; it certainly makes field-level querying and advanced reporting much more challenging. Just as importantly, if you’re interested in porting an existing app “to the cloud”, as they say, there’s a very good chance that that app is based on a relational database, possibly even Microsoft SQL Server. In that case, nothing short of a partial rewrite is going to allow that application to port to the cloud – the more drastic the data storage architecture change, the bigger the rewrite.
Microsoft is betting that enough developers will demand cloud access to traditional SQL/relational databases that their original plans for Azure Data Services have been modified to now fully support traditional programmatic access to the database using familiar APIs such as ADO.NET and ODBC. Additionally, SQL scripts can be run against a SQL Azure database using SQLCMD or SQL Query Analyzer (commonly used tools by SQL Server developers and DBAs) and traditional SQL Server management tools such as SQL Management Studio are supported. The SQL Azure database itself supports a full complement of relational database functionality, including tables, views, indexes, roles, stored procedures, triggers, and functions as well as transactions, temp tables, and a subset of the existing SQL Server functions, procedures, and system views.
SQL Azure is free for use during the current Community Technology Preview (CTP) phase and Microsoft will soon announce formal pricing once it is ready for production use. As with most cloud services, SQL Azure will be priced based on resource utilization which will according to Microsoft include:
- CPU time, measured in CPU-hours
- Bandwidth for ingress/egress from the data center, measured in GBs
- Storage, measured in GBs
- Transactions, measured as requests likes Gets & Puts
Microsoft has announced that the product will be released during the second half of 2009 so stay tuned to Azure.com for more details. Until then, you’re free to download the SDK and get started building apps on SQL Azure today.