I've signed up for the beta created my solution and so to really get started I needed to prepare my dev env . This involved installing the Azure SDK and installing the CloudService msi which provides a Cloud environment for local testing and debugging . Debugging live Cloud applications will be an interesting proposition I feel going forward . You get a project template called Cloud Service in VS2008.
The solution I have has the potential to use any or all of the following services : SQL Data Services, Service Bus, Workflow Service and Access Control Service . The latter service I believe has great potential via the cloud .
I decided at this point actually going through the resources available wouldn't be a bad idea before I started on my own app so started on the Lab for the SQL Data Services (SDS).
I thought I'd start off my adventure in a comfort zone by looking at the the SDS but as I found out almost as soon as I started its not quite what I would have expected. I was ready to start designing my data store using traditional Relational techniques but I found myself staring at the 'ACE' concept which is a three layered containment model . It consists of authorities which are the top level of the hierarchy . Creating an authority is the first thing that needs to be done after signing up for the service. An authority is represented by a DNS name probably based on your solution name.
An authority contains a collection of containers ( 0 or more ). Each container is assigned a unique ID within the authority.
The containers themselves then have a number of entities. The entities are the actual data stores.
Entities can store any number of user defined properties and values .
The query language is more LINQ like than SQL like. I'm sure I'll get used to it.
It is a beta though and its obviously very early days judging from the following:
You cannot nest containers nor can you do undertake cross container queries with the current version of the beta.
Each Authority is in one geographical location ( data Centre ) ! Although Microsoft do seem to be making a commitment to offer the service other than just in the US which should go some way to addressing concerns about the actual location of data.
Each container is stored on one node of the cluster.
I'd really like to know more detail on some of the infrastructure aspects ( well it is what I do!) you know stuff like how many nodes in a cluster? What happens if the node has a catastrophic failure? Performance impact, resilience all come to mind as pressing questions to me anyway. The MSDN SDS Best practice paper has some suggestions to address my performance concerns by using data partitioning ( although what are the cost implications of doing this I wonder) .
You can retrieve an entire entity, add, update and delete properties and replace the original entity but you cannot carry out a partial update of an entity
There are other limitations but that's for another post or have a look at the MSDN stuff available ( There's not much there as yet).
Anyway guess I'd better go have some practice.