Categories: Azure, PDC08 Posted by mheydt on 10/28/2008 7:24 PM | Comments (0)
REST and ADO.NET interfaces
First need to create a storage account
  • gives you a 256-bit secret key
  • Will provide security for accessing the store
Abstractions
  • Blobs (names files and metadata)
  • Tables (structured set of entities)
  • Queues
Concepts
  • Storage account
  • Container
  • Blobs
Sharing policies is at the container level

Notes on Blob access:
  • 50GB total blob storage limit for now.
  • Put/Get/Delete API. 
  • 64MB limit per blob in CTP with PutBlob.  larger must use PutBlock. 
  • Block is up to 4MB.
  • Can associate metadata with the blob: name value pairs, 8KB limit per blob
  • Uploads can be resumed: blobs broken in to chunks.  PutBlock, PubBlockList API's. 
  • Blocks not use will be GC'd. 
  • GetBLockList can be retrieved for a blob. 
  • MD5 can be put in the REST PutBlock and the storage system will use it.
  • Not a real directory structure, but delimiters can be specified that simulate it.
  • Update, Append and Copy coming in the future.
Notes on Tables:
  • Massively scalable and durable (replicated at least 3 times)
  • Can be accessed by ado.net 3.5 sp1
  • Table is created in and scoped by account
  • Table is a set of entities
  • Entity is a set of properties
  • Partition Key is exposed in the programming model, and helps to assist with scalability. 
  • Partition gives entity locality (stored together - better query), and scalability (usage patterns monitored and used for load balancing)
  • partition key should be used in query to optimize, otherwise all partitions must be examined.
  • Entity can have up to 255 properties, including Partition Key, Row Key, and one system maintained version property
  • No fixed schema
  • Pertition Key and Row key string up to 64KB
  • Table Entities access view ADO.NET DS, LINQ, and REST
  • Insert/Update/Delete, query over tables
  • Tables represented as class objects, adorn with DataServiceKey attribute
  • Every account has a master table called "Tables"
  • Use a DataServiceContext object to get entry point to the storage account
  • LINQ works just like you expect
  • Optimistic concurrency checking
  • Not a relational database: no joins, foreign keys, etc
  • For now, results are sorted by partitionkey and rowkey.  seconday indexes in the future
  • Also, single entity transactions for now, future will be multiple entities
Notes on Queues:
  • Provides reliable delivery of messages between workers and roles
  • No limit on # of messages, but they can only live for a week
  • Message <= 8KB.  Larger store a blob and reference it in a message
  • Create/Clear/Delete, Inspect length of queue
  • Messages: enqueue, dequeue, delete
Notes on durability, avail, scale
  • Data replicated at least 3 times across different fault and upgrade domains in the same data center
  • Geo-diversity will be after the CTP
  • Efficient filover
  • Automatic load balance hot data
  • Monitor usage patterns fro optimization
  • Caching of hot blobs, entities and queues

Comments