Windows Azure - Data Storage

Posted by Alin Irimie on October 30, 2008

The goal of Azure storage services is to allow applications to: store and access data, scale to store any amount of data, pay only for what you use/store. In order to use any of the services, a user has to create a globally unique storage account name. The user will receive a secret key that will be used to create a signature for each request, used for authentication.

There are three actual services providing data storage functionality: Blob, Table and Queue

Blob - simple interface for storing named files and metadata about the files. A Blob is named file. A set of blobs is a Blob Container. An account can have many blob containers. Sharing policies are set at the container level (public read or private). A blob or a container can have associated metadata, name/value pairs, up to 8kb per blob or container. The maximum size of a blob is 50 GB. The blob namespace looks something like: 

http://<account>.blob.core.windows.net/<container>/<blobname> 

Blob interface is easy to use using REST put/get/delete. Check here for an example on Windows Azure that uses the blob storage service.

Tables - provide massively scalable, highly available, durable structured storage with automatic load balancing and scaling. It is NOT a relational database so: no joins, foreign keys etc. If you need relational database in the cloud you’ll need to use SQL Services.

An account can create many tables. A table is a set of entities (rows). An entity is a set of properties (columns). A table can be actually considered an entity. An entity can have up to 255 properties and it has two mandatory properties, that together represent the unique ID of the entity in a table: PartitionKey which enables scalability and RowKey which uniquely identify the entity within a table partition. A partition represents all the entities in a table with the same PartitionKey value. Supported property types are: String (up to 64kb), Binary(up to 64k), bool, DateTime, GUID, Int, Int64, Double.

Table entities can be accessed via ADO .NET or using REST. See the sample here.

Queue - reliable storage and delivery of messages, simple asynchronous work dispatch. Programatic access to the queue is done through REST. An account can create many queues. A queue contains messages. There is no limit on number of messages in the queue but a message is not stored more than a week. A message should be less than 8kb. The queue allows messages to be retrieved and processed at least once.

The queue namespace looks like this:

http://<account>.queue.core.windows.net/<queuename>

Other information about the Azure data storage:
 - All data is replicated at least 3 times
 - Dynamic replication to maintain a healthy number of replicas
 - Automatic Load Balancing of Hot Data - Monitor the usage patterns and load balance access to Blob Containers, Table Partitions and Queues
 - Caching of Hot Blobs, Entities and Queues
 - Hot Entity and Queue data pages are cached and served from memory 

Share it:
  • Digg
  • del.icio.us
  • Facebook
  • Google
  • E-mail this story to a friend!
  • Live
  • NewsVine
  • TwitThis
  • StumbleUpon
  • Technorati

Related posts:

Trackbacks

Use this link to trackback from your own site.

Comments

Leave a response

Comments