ES04
Oct 28th, 2008
Windows Azure Storage–Essential Cloud Storage Services

Speakers

Brad Calder, Director/Architect, Microsoft
Brad began by summarizing Windows Azure and dived right into Windows Azure Storage Services. He began by explaining how by using Windows Azure Storage Services users can:
-Access their data from anywhere/anytime
-Store data for any length of time
-Store any amount of data
-Pay for only what you use / Mentioned Technologies
  • Windows Azure
  • Windows Azure Storage

Brad then moved on to data abstractions which are available in the current CTP:
-Blobs
-Tables
-Queues
Future versions may include caches and locks. Windows Azure Storage Services are made accessible via a REST interface as well as ADO.NET. A 256-bit secret key is used to authenticate your requests to Windows Azure Storage Services.
Working with Blobs
Files can be stored as blobs – blobs are stored in containers, you can make containers either private or public (shared private is not supported in the CTP but may for commercial release). You can put your blobs in containers and blobs can be broken down into blocks. Breaking a blob into blocks helps in upload and download of large blobs. Let’s say you wanted to upload a 10 GB movie file to Windows Azure Storage Services. You can split the 10 GB file into multiple smaller blocks, upload them parallel onto Azure, and even if one or more of them fail, you re-upload only those again so that you don’t have to start all over again. Once you have uploaded all your blocks, you can merge them together again on the cloud. API’s to perform these actions were also covered in the session
Limitations of the CTP for blob storage include a max blob size of 50 GB if you use blocks to upload or a max blob size of 64 MB if you do not use blocks to upload.
Working with Tables
Windows Azure Tables provide a massively scalable structured storage for your applications that can hold billions of rows of data scaling to thousands of servers as traffic grows. Your data is replicated at least 3 times for maximum durability.
You can use familiar ADO.NET Data Services to program against Windows Azure Tables. You can also query these tables using LINQ. You can also use REST to work with Windows Azure Tables on any platform.
Structure of Windows Azure Tables is as follows:
-Tables (You can create multiple tables in one account)
-Entities (A table contains multiple entities)
-Properties (An entity is a set of properties)
Two key properties of entities are PartitionKey and RowKey. A PartitionKey helps group similar data within a table – so that if your table grows really large and needs to be scaled across multiple servers, the PartitionKey will help keep similar data in closer affinity. A tip to help you choose your PartitionKey from the columns in your table is to choose a column as a PartitionKey that is most widely used in your queries. A RowKey then helps identify a row within a partition uniquely. PartitionKey and RowKey has to be of typeof string.
Working with Queues
A queue provides a reliable message delivery. You can create many queues using a Windows Azure account. A queue contains messages which need to be below 8 kb in size. If a message needs to hold data larger than 8 kb, then you can put that data on a blob and link to it in the message in the queue.
Queues can be accessed via REST. In the CTP, messages in the queue older than a week will be GCed.
The Windows Azure Queue API allows you to create/clear and delete queues and also allows you to inspect the length of a queue. You can then enqueue a message (put a message) and eequeue a message (read the message). When you eequeue a message, you also specify the amount of time it will be invisible from the queue. Within this time, you need to delete the item from the queue, if you don’t then the item simply reappears for someone else to pick it up. This will help in scenarios where you need reliable delivery of messages.
All data in Windows Azure Storage is replicated at least 3 times for durability. Future versions will support for Geo-distribution and Geo-replication.

Conclusion

To conclude: Windows Azure Storage Provides :
  • Essential storage for the cloud in a durable, scalable, highly available, secure, and performance way
  • Familiar and easy-to-use programming interfaces such as ADO.NET Data Services and REST
  • Provides support for blobs, tables, and queues with locks and caches in the future versions

Mohammed Jeelani