Cloud Computing
Industry hype has not been in short supply regarding cloud computing -- there is even a Microsoft commercial touting cloud computing for the every day user -- but until relatively recently I have not had clients asking me about it for industrial strength applications. I have put up a quick and dirty Amazon EC2 instance for some non-mission critical applications but I have not had mission crucial apps move to the cloud, why would this be the case - FUD, security, control, cost ...
I am now getting some serious queries related to the Microsoft Cloud offerings. Windows Azure offers two persistent data storage choices -- Windows Azure Table Storage and SQL Azure. In this post I will discuss features of the two choices, how they differ, and when one is a more appropriate choice.
SQLAzure
In Microsoft's cloud environment SQLAzure is analogous to SQLServer. It's not a 1:1 match, at the present time SQLAzure has a number of limitations compared to full blown SQLServer see http://msdn.microsoft.com/en-us/library/ee336245.aspx for more info. In general SQLAzure can be thought of as cloud based SQLServer. There are many good reference on Microsoft's site or provided by others to get you started.
What I immediately liked about SQLAzure was once you have a dB setup you can access it using the old familiar tools like SQLServer Management Studio (as long as you are using 2008 R2) and accessing the dB via your applications will also be familiar ground for the developers. As a matter of fact Microsoft provides tools for you to create and test connection strings; often times a topic of confusion, if the number of web discussions is any indication.
When getting started one area where SQLAzure differs from SQLServer is that you can not use the SSMS GUI to modify the schema or add data to tables, this work has to be done using SQL statements - templates are provided for assistance. Houston to the rescue (well kind of) -- https://manage-ch1.cloudapp.net/.
Project Houston is a very early Microsoft beta Silverlight application that supports tables, views, data entry, and stored procedures thru a SSMS like GUI. Folks who have been working with Microsoft for a while will know that when they call something beta it's going to be rough (this is early beta, so brace yourself) in contrast with Google a company that is known for betas that last for 5 years+.
Azure Table Storage
Now this construct will take some getting used to for people who are longtime RDBMS users. There has been some movement in the industry to simplify the RDBMS model -- loosen the rules a bit, if you will.
See: http://perspectives.mvdirona.com/CommentView,guid,afe46691-a293-4f9a-8900-5688a597726a.aspx or http://www.computerworld.com/s/article/9135086/No_to_SQL_Anti_database_movement_gains_steam_ or http://nosql-database.org/.
With table storage you don't have to deal with pesky features like indexes, referential integrity, views, or stored procedures. When I first started working with Table Storage I was reminded of IBM's VSAM (Virtual Storage Access Method) Keyed Sequence Data Sets or maybe a more common analogy would be a simple spreadsheet. Like a KSDS in VSAM the key provides efficient querying with limited constraints. Like a spreadsheet the table in Table Storage does not have a schema. The rows are a simple structure that contains data and the data does not have to be of a common type.
When to Use Which Technology
The bottom line question that is usually posed is; when would I use one approach over the other.
Size Matters -- From a data volume (scalability) point of view Table Storage is more scalable than SQLAzure, by far. Table Storage can currently scale to 100TB in size where SQLAzure limit is 50GB.
NoSQL or Not - If you are a traditional RDBMS company and you see benefits with the approach then you will opt for SQLAzure. If you are in the NoSQL camp and want a less restrictive more RESTful approach for data persistence then Table Storage would be more appropriate for your enterprise.
In-Out of The Cloud - With either approach data can be accessed via an application from in or out of the cloud. If you need the flexibility to move data from the cloud back into your data center databases then SQLAzure is the better choice. Not only does SQLAzure align from a technical perspective but there are tools to assist you in this migration.
Money Matters - As always cost will be a factor in any decision. Microsoft provides pricing information (http://www.microsoft.com/windowsazure/pricing/) and maybe you can cut a better deal if you are a large enterprise. I have signed up for Microsoft cloud services via the MSDN which allows developers access for testing and planning, an option for you to kick the tires for low cost.
I would be willing to bet that as new software is released SQLAzure looks more and more like SQLServer and the data limitations are removed.
Good luck in the cloud....
-npv
0 comments:
Post a Comment