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
53ce23e4-0d7c-48b8-a475-18ca53441e43|0|.0