SlideShare une entreprise Scribd logo
1  sur  38
Télécharger pour lire hors ligne
NOSQL Storage in
Windows AZURE
  {   Kogman Gal
NOSQL

   In computing, NoSQL is a broad class of database
    management systems that differ from the classic model of the
    relational database management system (RDBMS) in some
    significant ways. These data stores may not require fixed table
    schemas, usually avoid join operations, and typically scale
    horizontally.


                                                 Wikipedia
NoSQL Technologies
Windows Azure Storage
   Storage in the Cloud
       Scalable, durable, and available
       Anywhere at anytime access
       Only pay for what the service uses
   Exposed via RESTful Web Services
       Use from Windows Azure Compute
       Use from anywhere on the internet
   Various storage abstractions
       Tables, Blobs, Queues, Drives
Windows Azure Storage Account
   User specified globally unique account name
       Can choose geo-location to host storage account
           US – ‚North Central‛ and ‚South Central‛
           Europe – ‚North‛ and ‚West‛
           Asia – ‚East‛ and ‚Southeast‛
       Can CDN Enable Account
           Blobs delivered via 18 global CDN nodes
       Can co-locate storage account with compute account
           Explicitly or using affinity groups
 Accounts have two independent 512 bit shared
  secret keys
 100TB per account
Storage in the Development
Fabric
   Provides a local ‚Mock‛ storage
   Emulates storage in cloud
   Allows offline development
   Requires SQL Express 2005/2008 or above


     There are some differences between Cloud and Dev Storage.
                http://msdn.microsoft.com/dd320275

                    A good approach for developers:
        To test pre-deployment, push storage to the cloud first
     Use Dev Fabric for compute connect to cloud hosted storage.
                  Finally, move compute to the cloud.
The Storage Client API

   In this presentation we’ll cover the underlying RESTful API
       Can call these from any HTTP client
        e.g. Flash, Silverlight, etc…


   Client API from SDK Microsoft.WindowsAzure.StorageClient
       Provides a strongly typed wrapper around REST services
Storage Security
   Windows Azure Storage provides simple security for calls to
    storage service
       HTTPS endpoint
       Digitally sign requests for privileged operations
   Two 512bit symmetric keys per storage account
       Can be regenerated independently
   More granular security via Shared Access Signatures
Windows Azure Storage
Abstractions
   Blobs – Simple named files along with metadata for the file
   Drives – Durable NTFS volumes for Windows Azure applications
    to use. Based on Blobs.
   Tables – Structured storage. A Table is a set of entities; an entity is
    a set of properties
   Queues – Reliable storage and delivery of messages for an
    application
Backend
                                             Processing
                      Windows Azure Cloud      Server
                        Request Queue
                                               Backend
                                              Processing
 Web Server
                                                 Backend
                                                Server
     FE
                                                Processing
Web Server
                                                  Server
   FE




              Blob Store       Table Store
Tables
Table Storage Concepts

  Account    Table        Entity

                          Name =…
                          Email = …
             customers
                          Name =…
                         EMailAdd= …
   contoso
                         Photo ID =…
                           Date =…
              photos
                         Photo ID =…
                           Date =…
Table Details
   Not an RDBMS!
    More on table modeling in Storage Strategies session
   Table
       Create, Query, Delete
       Tables can have metadata
   Entities
       Insert
       Update
           Merge – Partial update
           Replace – Update entire entity
       Delete
       Query
       Entity Group Transactions
           Multiple CUD Operations in a single atomic transaction
Entity Properties
   Entity can have up to 255 properties
          Up to 1MB per entity
   Mandatory Properties for every entity
          PartitionKey & RowKey (only indexed properties)
          Uniquely identifies an entity
          Defines the sort order
          Timestamp
          Optimistic Concurrency. Exposed as an HTTP ETag
   No fixed schema for other properties
          Each property is stored as a <name, typed value> pair
          No schema stored for a table
          Properties can be the standard .NET types
          String, binary, bool, DateTime, GUID, int, int64, and double
First   Last      Birthdate     Fav Sport

  Kim     Akers     2/2/1981

  Nancy   Anderso   3/15/1965     Canoeing
No Fixed Schema
  Mark
          n
          Hassall   May 1, 1976
?$filter=Last eq ‘Akers’

  First   Last      Birthdate

  Kim     Akers     2/2/1981

  Nancy   Anderso   3/15/1965
Querying
  Mark
          n
          Hassall   May 1, 1976
Purpose of the PartitionKey
   Entity Locality
       Entities in the same partition will be stored together
                 Efficient querying and cache locality
                 Endeavour to include partition key in all queries
   Entity Group Transactions
       Atomic multiple Insert/Update/Delete in same partition in a single
        transaction
   Table Scalability
            Target throughput – 500 tps/partition, several thousand tps/account
       Windows Azure monitors the usage patterns of partitions
       Automatically load balance partitions
                 Each partition can be served by a different storage node
                 Scale to meet the traffic needs of your table
Partitions and Partition
Ranges   PartitionKey
         PartitionKey
         (Category)
                        RowKey
                        RowKey
                        (Title)
                                                 Timestamp
                                                 Timestamp   ModelYear
                                                             ModelYear
         (Category)     (Title)
         Bikes          Super Duper Cycle        …           2009

         Bikes          Quick Cycle 200 Deluxe
                        Quick Cycle 200 Deluxe   …
                                                 …           2007
                                                             2007
         Bikes
         …              …                        …           …
         …              …                        …           …
         Canoes         Whitewater               …           2009
         Canoes         Whitewater               …           2009
         Canoes         Flatwater                …           2006
         Canoes         Flatwater                …           2006

         PartitionKey
         Rafts          RowKey Tourer
                        14ft Super               Timestamp
                                                 …           ModelYear
                                                             1999
         (Category)     (Title)
         …              …
                        14ft Super Tourer        …
                                                 …           …
                                                             1999
         Rafts
         Skis
         …              Fabrikam Back Trackers
                        …                        …
                                                 …           2009
                                                             …

         Skis           Fabrikam Back Trackers
                        …                        …
                                                 …           2009
                                                             …
         …
         …              …                        …           …
         Tents          Super Palace             …           2008
         Tents          Super Palace             …           2008
Blob Storage
Blob Storage Concepts
  http://<account>.blob.core.windows.net/<container>/<blobname>



   Acco            Contai                           Pages/
                                     Blob
   unt              ner                             Blocks

                                    PIC01.JPG

                     images                         Block/Page

                                    PIC02.JPG

   contoso
                                                    Block/Page

                                    VID1.AV
                     videos
                                       I
Blob Details
   Main Web Service Operations
       PutBlob
       GetBlob
       DeleteBlob
       CopyBlob
       SnapshotBlob
       LeaseBlob
   Associate Metadata with Blob
       Standard HTTP metadata/headers
        (Cache-Control, Content-Encoding, Content-Type, etc)
       Metadata is <name, value> pairs, up to 8KB per blob
       Either as part of PutBlob or independently
   Blob always accessed by name
       Can include ‘/‘ or other delimeter in name
        e.g. /<container>/myblobs/blob.jpg
Blob Containers
   Multiple Containers per Account
       Special $root container
   Blob Container
       A container holds a set of blobs
       Set access policies at the container level
       Associate Metadata with Container
       List the blobs in a container
           Including Blob Metadata and MD5
           NO search/query. i.e. no WHERE MetadataValue = ?
   Blobs Throughput
       Effectively in Partition of 1
       Target of 60MB/s per Blob
Enumerating Blobs
   GET Blob operation takes parameters
        Prefix
        Delimiter
        Include= (snapshots, metadata etc…)


    http://adventureworks.blob.core.windows.net/
    Products/Bikes/SuperDuperCycle.jpg
    Products/Bikes/FastBike.jpg
    GET http://.../products?comp=list&delimiter=/
    Products/Canoes/Whitewater.jpg
    http://.../products?comp=list&prefix=Tents&delimiter=/
    Products/Canoes/Flatwater.jpg
    <BlobPrefix>Bikes</BlobPrefix>
    Products/Canoes/Hybrid.jpg
    <Blob>Tents/PalaceTent.wmv</Blob>
    <BlobPrefix>Canoes</BlobPrefix>
    Products/Tents/PalaceTent.jpg
    <Blob>Tents/ShedTent.wmv</Blob>
    <BlobPrefix>Tents</BlobPrefix>
    Products/Tents/ShedTent.jpg
Pagination
   Large lists of Blobs can be paginated
        Either set maxresults or;
        Exceed default value for maxresults (5000)



    http://.../products?comp=list&prefix=Canoes&maxresults=2

    <Blob>Canoes/Whitewater.jpg</Blob>
    http://.../products?comp=list&prefix=Canoes&maxresults=2
    <Blob>Canoes/Flatwater.jpg</Blob>
            &marker=MarkerValue
    <NextMarker>MarkerValue</NextMarker>
    <Blob>Canoes/Hybrid.jpg</Blob>
Two Types of Blobs Under the
Hood
   Block Blob
       Targeted at streaming workloads
       Each blob consists of a sequence of blocks
           Each block is identified by a Block ID
       Size limit 200GB per blob
       Optimistic Concurrency via ETags
   Page Blob
       Targeted at random read/write workloads
       Each blob consists of an array of pages
           Each page is identified by its offset from the start of the blob
       Size limit 1TB per blob
       Optimistic or Pessimistic (locking) concurrency via Leases
Uploading a Block Blob

                                          blobName = “TheBlob.wmv”;
                                          PutBlock(blobName, blockId1,
               10 GB Movie                block1Bits);
                                          PutBlock(blobName, blockId2,




                             Block Id N
  Block Id 2
  Block Id 1

  Block Id 3




                                          block2Bits);
                                          …………
                                          PutBlock(blobName, blockIdN,
                                          blockNBits);
                                          PutBlockList(blobName,

                                          blockId1,…,blockIdN);


                             TheBlob.w
                              TheBlob.wm
                                mv v
                                     Windows Azure
                                           Storage
Page Blob – Random
Read/Write
     0

    512

    1024   10 GB Address Space
    1536

    2048

    2560                             PutPage 512, 2048
                                     PutPage 0, 1024
                                     ClearPage 512, 1536
                                     PutPage 2048,2560

                                 GetPageRange 0, 4096
                                     0,512   1536,2560
                                 GetBlob 1000, 2048
   10 GB
                                              1536,2048
Shared Access Signatures
   Fine grain access rights to blobs and containers
   Sign URL with storage key – permit elevated rights
   Revocation
       Use short time periods and re-issue
       Use container level policy that can be deleted
   Two broad approaches
       Ad-hoc
       Policy based
Ad Hoc Signatures

   Create Short Dated Shared Access Signature
       Signedresource Blob or Container
       AccessPolicy Start, Expiry and Permissions
       Signature HMAC-SHA256 of above fields
                           http://...blob.../pics/image.jpg?
              sr=c&st=2009-02-09T08:20Z&se=2009-02-10T08:30Z&sp=w
         &sig= dD80ihBh5jfNpymO5Hg1IdiJIEvHcJpCMiCMnN%2fRnbI%3d

   Use case
       Single use URLs
       E.g. Provide URL to Silverlight client to upload to container
Policy Based Signatures
   Create Container Level Policy
       Specify StartTime, ExpiryTime, Permissions
   Create Shared Access Signature URL
       Signedresource Blob or Container
       Signedidentifier Optional pointer to container policy
       Signature HMAC-SHA256 of above fields
                         http://...blob.../pics/image.jpg?
                    sr=c&si=MyUploadPolicyForUserID12345
         &sig=dD80ihBh5jfNpymO5Hg1IdiJIEvHcJpCMiCMnN%2fRnbI%3d

   Use case
       Providing revocable permissions to certain users/groups
       To revoke: Delete or update container policy
Content Delivery Network (CDN)
    Scenario
        Frequently accessed blobs
        Accessed from around the world
    Windows Azure Content Delivery Network (CDN) provides high-
     bandwidth global blob content delivery
             20 locations globally (US, Europe, Asia, Australia and South America), and
              growing
             Same experience for users no matter how far they are from the geo-location
              where the storage account is hosted
    Blob service URL vs CDN URL:
        Windows Azure Blob URL: http://images.blob.core.windows.net/
        Windows Azure CDN URL: http://<id>.vo.msecnd.net/
        Custom Domain Name for CDN: http://cdn.contoso.com/
    Cost
        US located CDN nodes 15c/GB + 1c/10,000 txn
        Rest of World 20c/GB + 1c/10,000 txn
        Traffic from Storage node to edge node at standard rates
Windows Azure Content Delivery
Network
         http://guid01.vo.msecnd.net/images/pic.1jpg




             404


                              Edge Location            Edge Location
      TTL
            Edge Location
                            Content Delivery Network
                                  http://sally.blob.core.windows.net/
                                               
                                  http://guid01.vo.msecnd.net/



    To Enable CDN:                        pic1.j
                                         pic1.j
                                         pic1.j
                                          pg
                                          pg

        Register for CDN via Dev Portal     pg
                                 http://sally.blob.core.windows.net/images/pi
        Set container images to c1.jpg
                                 public
                                                Windows Azure Blob
                                                            Service
Queues
Queue Storage Concepts

    Account          Queue        Message


                                  customer ID
                                  order ID
                                  http://…
                       order
    adventureworks   processing
                                  customer ID
                                  order ID
                                  http://…
Loosely Coupled Workflow with
Queues
   Enables workflow between roles
        Load work in a queue
             Producer can forget about message once it is in queue
        Many workers consume the queue
        For extreme throughput (>500 tps)
             Use multiple queues
             Read messages in batches
             Multiple work items per message




                                       Input Queue (Work Items)

                                                   Queue
Queue Details
   Simple asynchronous dispatch queue
       No limit to queue length subject to storage limit
       8kb per message
       ListQueues - List queues in account
   Queue operations
       CreateQueue
       DeleteQueue
       Get/Set Metadata
       Clear Messages
   Message operations
       PutMessage– Reads message and hides for time period
       GetMessages – Reads one or more messages and hides them
       PeekMessages – Reads one or more messages w/o hiding them
       DeleteMessage – Permanently deletes messages from queue
Queue’s Reliable Delivery

                                                               Input Queue (Work Items)
                                                                     Queue
   Guarantee delivery/processing of messages
    (two-step consumption)

       Worker Dequeues message and it is marked as Invisible for a specified
        ‚Invisibility Time‛
       Worker Deletes message when finished processing
       If Worker role crashes, message becomes visible for another Worker to
        process

       More on this pattern in the Async Workloads session
Windows Azure Storage
Summary

   Fundamental data abstractions to build your applications
       Blobs – Files and large objects
       Tables – Massively scalable structured storage
       Queues – Reliable delivery of messages
   Easy to use via the Storage Client Library

Contenu connexe

Similaire à Nosql storage in windows azure

Developing For The Windows Azure Platform
Developing For The Windows Azure PlatformDeveloping For The Windows Azure Platform
Developing For The Windows Azure Platformdrmarcustillett
 
.NET Developer Days - So many Docker platforms, so little time...
.NET Developer Days - So many Docker platforms, so little time....NET Developer Days - So many Docker platforms, so little time...
.NET Developer Days - So many Docker platforms, so little time...Michele Leroux Bustamante
 
Usman Shakeel - Cloud Rendering at Scale :: AWS Rendering Seminar
Usman Shakeel - Cloud Rendering at Scale :: AWS Rendering SeminarUsman Shakeel - Cloud Rendering at Scale :: AWS Rendering Seminar
Usman Shakeel - Cloud Rendering at Scale :: AWS Rendering SeminarAmazon Web Services Korea
 
Games + Amazon = Love - Presentation quo vadis 2011
Games + Amazon = Love - Presentation quo vadis 2011Games + Amazon = Love - Presentation quo vadis 2011
Games + Amazon = Love - Presentation quo vadis 2011Thomas Lobinger
 
M|18 Running MariaDB TX on Containers
M|18 Running MariaDB TX on ContainersM|18 Running MariaDB TX on Containers
M|18 Running MariaDB TX on ContainersMariaDB plc
 
UKOUG 2011: MySQL Architectures for Oracle DBA's
UKOUG 2011: MySQL Architectures for Oracle DBA'sUKOUG 2011: MySQL Architectures for Oracle DBA's
UKOUG 2011: MySQL Architectures for Oracle DBA'sFromDual GmbH
 
Docker from basics to orchestration (PHPConfBr2015)
Docker from basics to orchestration (PHPConfBr2015)Docker from basics to orchestration (PHPConfBr2015)
Docker from basics to orchestration (PHPConfBr2015)Wellington Silva
 
Creative content storage in the AWS Cloud
Creative content storage in the AWS CloudCreative content storage in the AWS Cloud
Creative content storage in the AWS CloudAmazon Web Services
 
Containers Meetup (AWS+CNCF) Milano Jan 15th 2020
Containers Meetup (AWS+CNCF) Milano Jan 15th 2020Containers Meetup (AWS+CNCF) Milano Jan 15th 2020
Containers Meetup (AWS+CNCF) Milano Jan 15th 2020Massimo Ferre'
 
AWS Services for Content Production
AWS Services for Content ProductionAWS Services for Content Production
AWS Services for Content ProductionAmazon Web Services
 
MongoDB in the Cloud -- Mongo Boulder
MongoDB in the Cloud -- Mongo BoulderMongoDB in the Cloud -- Mongo Boulder
MongoDB in the Cloud -- Mongo BoulderJustin Smestad
 
Kafka MirrorMaker: Disaster Recovery, Scaling Reads, Isolate Mission Critical...
Kafka MirrorMaker: Disaster Recovery, Scaling Reads, Isolate Mission Critical...Kafka MirrorMaker: Disaster Recovery, Scaling Reads, Isolate Mission Critical...
Kafka MirrorMaker: Disaster Recovery, Scaling Reads, Isolate Mission Critical...Jean-Paul Azar
 
IPW2008 - my.opera.com scalability
IPW2008 - my.opera.com scalabilityIPW2008 - my.opera.com scalability
IPW2008 - my.opera.com scalabilityCosimo Streppone
 
AWS reinvent 2019 recap - Riyadh - Containers and Serverless - Paul Maddox
AWS reinvent 2019 recap - Riyadh - Containers and Serverless - Paul MaddoxAWS reinvent 2019 recap - Riyadh - Containers and Serverless - Paul Maddox
AWS reinvent 2019 recap - Riyadh - Containers and Serverless - Paul MaddoxAWS Riyadh User Group
 
데이터 마이그레이션 AWS와 같이하기 - 김일호 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
데이터 마이그레이션 AWS와 같이하기 - 김일호 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming데이터 마이그레이션 AWS와 같이하기 - 김일호 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
데이터 마이그레이션 AWS와 같이하기 - 김일호 솔루션즈 아키텍트:: AWS Cloud Track 3 GamingAmazon Web Services Korea
 
CloudFork
CloudForkCloudFork
CloudForkESUG
 
Docker and kubernetes
Docker and kubernetesDocker and kubernetes
Docker and kubernetesDongwon Kim
 
Ga cloud scaling 3 30-2012
Ga cloud scaling 3 30-2012Ga cloud scaling 3 30-2012
Ga cloud scaling 3 30-2012Andy Parsons
 

Similaire à Nosql storage in windows azure (20)

Developing For The Windows Azure Platform
Developing For The Windows Azure PlatformDeveloping For The Windows Azure Platform
Developing For The Windows Azure Platform
 
.NET Developer Days - So many Docker platforms, so little time...
.NET Developer Days - So many Docker platforms, so little time....NET Developer Days - So many Docker platforms, so little time...
.NET Developer Days - So many Docker platforms, so little time...
 
Usman Shakeel - Cloud Rendering at Scale :: AWS Rendering Seminar
Usman Shakeel - Cloud Rendering at Scale :: AWS Rendering SeminarUsman Shakeel - Cloud Rendering at Scale :: AWS Rendering Seminar
Usman Shakeel - Cloud Rendering at Scale :: AWS Rendering Seminar
 
Games + Amazon = Love - Presentation quo vadis 2011
Games + Amazon = Love - Presentation quo vadis 2011Games + Amazon = Love - Presentation quo vadis 2011
Games + Amazon = Love - Presentation quo vadis 2011
 
Data In Cloud
Data In CloudData In Cloud
Data In Cloud
 
M|18 Running MariaDB TX on Containers
M|18 Running MariaDB TX on ContainersM|18 Running MariaDB TX on Containers
M|18 Running MariaDB TX on Containers
 
UKOUG 2011: MySQL Architectures for Oracle DBA's
UKOUG 2011: MySQL Architectures for Oracle DBA'sUKOUG 2011: MySQL Architectures for Oracle DBA's
UKOUG 2011: MySQL Architectures for Oracle DBA's
 
Docker from basics to orchestration (PHPConfBr2015)
Docker from basics to orchestration (PHPConfBr2015)Docker from basics to orchestration (PHPConfBr2015)
Docker from basics to orchestration (PHPConfBr2015)
 
Creative content storage in the AWS Cloud
Creative content storage in the AWS CloudCreative content storage in the AWS Cloud
Creative content storage in the AWS Cloud
 
Containers Meetup (AWS+CNCF) Milano Jan 15th 2020
Containers Meetup (AWS+CNCF) Milano Jan 15th 2020Containers Meetup (AWS+CNCF) Milano Jan 15th 2020
Containers Meetup (AWS+CNCF) Milano Jan 15th 2020
 
AWS Services for Content Production
AWS Services for Content ProductionAWS Services for Content Production
AWS Services for Content Production
 
Intro to riak
Intro to riakIntro to riak
Intro to riak
 
MongoDB in the Cloud -- Mongo Boulder
MongoDB in the Cloud -- Mongo BoulderMongoDB in the Cloud -- Mongo Boulder
MongoDB in the Cloud -- Mongo Boulder
 
Kafka MirrorMaker: Disaster Recovery, Scaling Reads, Isolate Mission Critical...
Kafka MirrorMaker: Disaster Recovery, Scaling Reads, Isolate Mission Critical...Kafka MirrorMaker: Disaster Recovery, Scaling Reads, Isolate Mission Critical...
Kafka MirrorMaker: Disaster Recovery, Scaling Reads, Isolate Mission Critical...
 
IPW2008 - my.opera.com scalability
IPW2008 - my.opera.com scalabilityIPW2008 - my.opera.com scalability
IPW2008 - my.opera.com scalability
 
AWS reinvent 2019 recap - Riyadh - Containers and Serverless - Paul Maddox
AWS reinvent 2019 recap - Riyadh - Containers and Serverless - Paul MaddoxAWS reinvent 2019 recap - Riyadh - Containers and Serverless - Paul Maddox
AWS reinvent 2019 recap - Riyadh - Containers and Serverless - Paul Maddox
 
데이터 마이그레이션 AWS와 같이하기 - 김일호 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
데이터 마이그레이션 AWS와 같이하기 - 김일호 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming데이터 마이그레이션 AWS와 같이하기 - 김일호 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
데이터 마이그레이션 AWS와 같이하기 - 김일호 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
 
CloudFork
CloudForkCloudFork
CloudFork
 
Docker and kubernetes
Docker and kubernetesDocker and kubernetes
Docker and kubernetes
 
Ga cloud scaling 3 30-2012
Ga cloud scaling 3 30-2012Ga cloud scaling 3 30-2012
Ga cloud scaling 3 30-2012
 

Nosql storage in windows azure

  • 1. NOSQL Storage in Windows AZURE { Kogman Gal
  • 2. NOSQL  In computing, NoSQL is a broad class of database management systems that differ from the classic model of the relational database management system (RDBMS) in some significant ways. These data stores may not require fixed table schemas, usually avoid join operations, and typically scale horizontally. Wikipedia
  • 4. Windows Azure Storage  Storage in the Cloud  Scalable, durable, and available  Anywhere at anytime access  Only pay for what the service uses  Exposed via RESTful Web Services  Use from Windows Azure Compute  Use from anywhere on the internet  Various storage abstractions  Tables, Blobs, Queues, Drives
  • 5. Windows Azure Storage Account  User specified globally unique account name  Can choose geo-location to host storage account  US – ‚North Central‛ and ‚South Central‛  Europe – ‚North‛ and ‚West‛  Asia – ‚East‛ and ‚Southeast‛  Can CDN Enable Account  Blobs delivered via 18 global CDN nodes  Can co-locate storage account with compute account  Explicitly or using affinity groups  Accounts have two independent 512 bit shared secret keys  100TB per account
  • 6. Storage in the Development Fabric  Provides a local ‚Mock‛ storage  Emulates storage in cloud  Allows offline development  Requires SQL Express 2005/2008 or above There are some differences between Cloud and Dev Storage. http://msdn.microsoft.com/dd320275 A good approach for developers: To test pre-deployment, push storage to the cloud first Use Dev Fabric for compute connect to cloud hosted storage. Finally, move compute to the cloud.
  • 7. The Storage Client API  In this presentation we’ll cover the underlying RESTful API  Can call these from any HTTP client e.g. Flash, Silverlight, etc…  Client API from SDK Microsoft.WindowsAzure.StorageClient  Provides a strongly typed wrapper around REST services
  • 8. Storage Security  Windows Azure Storage provides simple security for calls to storage service  HTTPS endpoint  Digitally sign requests for privileged operations  Two 512bit symmetric keys per storage account  Can be regenerated independently  More granular security via Shared Access Signatures
  • 9. Windows Azure Storage Abstractions  Blobs – Simple named files along with metadata for the file  Drives – Durable NTFS volumes for Windows Azure applications to use. Based on Blobs.  Tables – Structured storage. A Table is a set of entities; an entity is a set of properties  Queues – Reliable storage and delivery of messages for an application
  • 10. Backend Processing Windows Azure Cloud Server Request Queue Backend Processing Web Server Backend Server FE Processing Web Server Server FE Blob Store Table Store
  • 12. Table Storage Concepts Account Table Entity Name =… Email = … customers Name =… EMailAdd= … contoso Photo ID =… Date =… photos Photo ID =… Date =…
  • 13. Table Details  Not an RDBMS! More on table modeling in Storage Strategies session  Table  Create, Query, Delete  Tables can have metadata  Entities  Insert  Update  Merge – Partial update  Replace – Update entire entity  Delete  Query  Entity Group Transactions  Multiple CUD Operations in a single atomic transaction
  • 14. Entity Properties  Entity can have up to 255 properties  Up to 1MB per entity  Mandatory Properties for every entity  PartitionKey & RowKey (only indexed properties)  Uniquely identifies an entity  Defines the sort order  Timestamp  Optimistic Concurrency. Exposed as an HTTP ETag  No fixed schema for other properties  Each property is stored as a <name, typed value> pair  No schema stored for a table  Properties can be the standard .NET types  String, binary, bool, DateTime, GUID, int, int64, and double
  • 15. First Last Birthdate Fav Sport Kim Akers 2/2/1981 Nancy Anderso 3/15/1965 Canoeing No Fixed Schema Mark n Hassall May 1, 1976
  • 16. ?$filter=Last eq ‘Akers’ First Last Birthdate Kim Akers 2/2/1981 Nancy Anderso 3/15/1965 Querying Mark n Hassall May 1, 1976
  • 17. Purpose of the PartitionKey  Entity Locality  Entities in the same partition will be stored together  Efficient querying and cache locality  Endeavour to include partition key in all queries  Entity Group Transactions  Atomic multiple Insert/Update/Delete in same partition in a single transaction  Table Scalability  Target throughput – 500 tps/partition, several thousand tps/account  Windows Azure monitors the usage patterns of partitions  Automatically load balance partitions  Each partition can be served by a different storage node  Scale to meet the traffic needs of your table
  • 18. Partitions and Partition Ranges PartitionKey PartitionKey (Category) RowKey RowKey (Title) Timestamp Timestamp ModelYear ModelYear (Category) (Title) Bikes Super Duper Cycle … 2009 Bikes Quick Cycle 200 Deluxe Quick Cycle 200 Deluxe … … 2007 2007 Bikes … … … … … … … … Canoes Whitewater … 2009 Canoes Whitewater … 2009 Canoes Flatwater … 2006 Canoes Flatwater … 2006 PartitionKey Rafts RowKey Tourer 14ft Super Timestamp … ModelYear 1999 (Category) (Title) … … 14ft Super Tourer … … … 1999 Rafts Skis … Fabrikam Back Trackers … … … 2009 … Skis Fabrikam Back Trackers … … … 2009 … … … … … … Tents Super Palace … 2008 Tents Super Palace … 2008
  • 20. Blob Storage Concepts http://<account>.blob.core.windows.net/<container>/<blobname> Acco Contai Pages/ Blob unt ner Blocks PIC01.JPG images Block/Page PIC02.JPG contoso Block/Page VID1.AV videos I
  • 21. Blob Details  Main Web Service Operations  PutBlob  GetBlob  DeleteBlob  CopyBlob  SnapshotBlob  LeaseBlob  Associate Metadata with Blob  Standard HTTP metadata/headers (Cache-Control, Content-Encoding, Content-Type, etc)  Metadata is <name, value> pairs, up to 8KB per blob  Either as part of PutBlob or independently  Blob always accessed by name  Can include ‘/‘ or other delimeter in name e.g. /<container>/myblobs/blob.jpg
  • 22. Blob Containers  Multiple Containers per Account  Special $root container  Blob Container  A container holds a set of blobs  Set access policies at the container level  Associate Metadata with Container  List the blobs in a container  Including Blob Metadata and MD5  NO search/query. i.e. no WHERE MetadataValue = ?  Blobs Throughput  Effectively in Partition of 1  Target of 60MB/s per Blob
  • 23. Enumerating Blobs  GET Blob operation takes parameters  Prefix  Delimiter  Include= (snapshots, metadata etc…) http://adventureworks.blob.core.windows.net/ Products/Bikes/SuperDuperCycle.jpg Products/Bikes/FastBike.jpg GET http://.../products?comp=list&delimiter=/ Products/Canoes/Whitewater.jpg http://.../products?comp=list&prefix=Tents&delimiter=/ Products/Canoes/Flatwater.jpg <BlobPrefix>Bikes</BlobPrefix> Products/Canoes/Hybrid.jpg <Blob>Tents/PalaceTent.wmv</Blob> <BlobPrefix>Canoes</BlobPrefix> Products/Tents/PalaceTent.jpg <Blob>Tents/ShedTent.wmv</Blob> <BlobPrefix>Tents</BlobPrefix> Products/Tents/ShedTent.jpg
  • 24. Pagination  Large lists of Blobs can be paginated  Either set maxresults or;  Exceed default value for maxresults (5000) http://.../products?comp=list&prefix=Canoes&maxresults=2 <Blob>Canoes/Whitewater.jpg</Blob> http://.../products?comp=list&prefix=Canoes&maxresults=2 <Blob>Canoes/Flatwater.jpg</Blob> &marker=MarkerValue <NextMarker>MarkerValue</NextMarker> <Blob>Canoes/Hybrid.jpg</Blob>
  • 25. Two Types of Blobs Under the Hood  Block Blob  Targeted at streaming workloads  Each blob consists of a sequence of blocks  Each block is identified by a Block ID  Size limit 200GB per blob  Optimistic Concurrency via ETags  Page Blob  Targeted at random read/write workloads  Each blob consists of an array of pages  Each page is identified by its offset from the start of the blob  Size limit 1TB per blob  Optimistic or Pessimistic (locking) concurrency via Leases
  • 26. Uploading a Block Blob blobName = “TheBlob.wmv”; PutBlock(blobName, blockId1, 10 GB Movie block1Bits); PutBlock(blobName, blockId2, Block Id N Block Id 2 Block Id 1 Block Id 3 block2Bits); ………… PutBlock(blobName, blockIdN, blockNBits); PutBlockList(blobName, blockId1,…,blockIdN); TheBlob.w TheBlob.wm mv v Windows Azure Storage
  • 27. Page Blob – Random Read/Write 0 512 1024 10 GB Address Space 1536 2048 2560 PutPage 512, 2048 PutPage 0, 1024 ClearPage 512, 1536 PutPage 2048,2560 GetPageRange 0, 4096 0,512 1536,2560 GetBlob 1000, 2048 10 GB 1536,2048
  • 28. Shared Access Signatures  Fine grain access rights to blobs and containers  Sign URL with storage key – permit elevated rights  Revocation  Use short time periods and re-issue  Use container level policy that can be deleted  Two broad approaches  Ad-hoc  Policy based
  • 29. Ad Hoc Signatures  Create Short Dated Shared Access Signature  Signedresource Blob or Container  AccessPolicy Start, Expiry and Permissions  Signature HMAC-SHA256 of above fields http://...blob.../pics/image.jpg? sr=c&st=2009-02-09T08:20Z&se=2009-02-10T08:30Z&sp=w &sig= dD80ihBh5jfNpymO5Hg1IdiJIEvHcJpCMiCMnN%2fRnbI%3d  Use case  Single use URLs  E.g. Provide URL to Silverlight client to upload to container
  • 30. Policy Based Signatures  Create Container Level Policy  Specify StartTime, ExpiryTime, Permissions  Create Shared Access Signature URL  Signedresource Blob or Container  Signedidentifier Optional pointer to container policy  Signature HMAC-SHA256 of above fields http://...blob.../pics/image.jpg? sr=c&si=MyUploadPolicyForUserID12345 &sig=dD80ihBh5jfNpymO5Hg1IdiJIEvHcJpCMiCMnN%2fRnbI%3d  Use case  Providing revocable permissions to certain users/groups  To revoke: Delete or update container policy
  • 31. Content Delivery Network (CDN)  Scenario  Frequently accessed blobs  Accessed from around the world  Windows Azure Content Delivery Network (CDN) provides high- bandwidth global blob content delivery  20 locations globally (US, Europe, Asia, Australia and South America), and growing  Same experience for users no matter how far they are from the geo-location where the storage account is hosted  Blob service URL vs CDN URL:  Windows Azure Blob URL: http://images.blob.core.windows.net/  Windows Azure CDN URL: http://<id>.vo.msecnd.net/  Custom Domain Name for CDN: http://cdn.contoso.com/  Cost  US located CDN nodes 15c/GB + 1c/10,000 txn  Rest of World 20c/GB + 1c/10,000 txn  Traffic from Storage node to edge node at standard rates
  • 32. Windows Azure Content Delivery Network http://guid01.vo.msecnd.net/images/pic.1jpg 404 Edge Location Edge Location TTL Edge Location Content Delivery Network http://sally.blob.core.windows.net/  http://guid01.vo.msecnd.net/ To Enable CDN: pic1.j pic1.j pic1.j pg pg  Register for CDN via Dev Portal pg http://sally.blob.core.windows.net/images/pi  Set container images to c1.jpg public Windows Azure Blob Service
  • 34. Queue Storage Concepts Account Queue Message customer ID order ID http://… order adventureworks processing customer ID order ID http://…
  • 35. Loosely Coupled Workflow with Queues  Enables workflow between roles  Load work in a queue  Producer can forget about message once it is in queue  Many workers consume the queue  For extreme throughput (>500 tps)  Use multiple queues  Read messages in batches  Multiple work items per message Input Queue (Work Items) Queue
  • 36. Queue Details  Simple asynchronous dispatch queue  No limit to queue length subject to storage limit  8kb per message  ListQueues - List queues in account  Queue operations  CreateQueue  DeleteQueue  Get/Set Metadata  Clear Messages  Message operations  PutMessage– Reads message and hides for time period  GetMessages – Reads one or more messages and hides them  PeekMessages – Reads one or more messages w/o hiding them  DeleteMessage – Permanently deletes messages from queue
  • 37. Queue’s Reliable Delivery Input Queue (Work Items) Queue  Guarantee delivery/processing of messages (two-step consumption)  Worker Dequeues message and it is marked as Invisible for a specified ‚Invisibility Time‛  Worker Deletes message when finished processing  If Worker role crashes, message becomes visible for another Worker to process  More on this pattern in the Async Workloads session
  • 38. Windows Azure Storage Summary  Fundamental data abstractions to build your applications  Blobs – Files and large objects  Tables – Massively scalable structured storage  Queues – Reliable delivery of messages  Easy to use via the Storage Client Library

Notes de l'éditeur

  1. This should be a recap as this session will dig deeper into the services.
  2. Slide ObjectiveUnderstand a Windows Azure storage accountSpeaking notesA Windows Azure subscription contains storage accountsCan explicitly geo-locate to a sub region or set affinity with other servicesCan enable CDN at the account level (means that public containers will be retrievable via the CDN URL)
  3. Slide ObjectiveUnderstand the Development Storage ServiceSpeaking notesClient side simulator of storage in the cloud. Allows completely disconnected (e.g. while travelling on a plane) development of Windows Azure appsCan consume just like Cloud storage- from Development Fabric, from another application running locallyIs locked down so that it cannot be called from off the boxIf you need this capability run a reverse proxy on the dev machineCan use CSRun to start and stop serviceMore on this in Day 3Uses a single fixed account. The account name and key are always the sameAnyone memorized the Account key yet? Eby8vd…..Noteshttp://msdn.microsoft.com/en-us/library/dd179339.aspxThe Windows® Azure™ SDK development environment includes development storage, a utility that simulates the Blob, Queue, and Table services available in the cloud. If you are building a hosted service that employs storage services or writing any external application that calls storage services, you can test locally against development storage.The development storage utility provides a user interface to view the status of the local storage services and to start, stop, and reset them.This topic contains the following subtopics:
  4. Slide ObjectiveDiscuss the underlying REST APIDiscuss the Client API in the SDK- that provides convenient way to call REST serviceSpeaking notesWindows Azure Storage is exposed as RESTdful web serviceCan be called from any HTTP clientFor .NET developers Microsoft ships a client SDKManaged code library for calling the RESTful servicesHides many of the complexities of the serviceAuto retriesAlso provide a lower level Protocol library with useful helper toolsImportant to understand the fundamentals of the REST APIs.This deck discusses the REST APIsHands on lab demonstrates the SDK
  5. Slide ObjectiveDescribe security principlesSpeaking notesSimple shared secret securityCan use HTTP or HTTPS to accessUse HTTP for public contentUse HTTPS for secure content (i.e. where using es or Shared Access Signatures)Two 512bit keysKeys used to sign priv requestsTwo keys supports rolling of keysE.g. if one key is compromised can use the second key while first is regeneratedMore on SAS’s soonNotesMore on Security on Day 3http://social.msdn.microsoft.com/Forums/en-US/windowsazure/thread/1e023e8d-0ff9-472e-bcc1-05400a41466c http://blogs.msdn.com/b/usisvde/archive/2010/05/21/best-practices-for-data-storage-security-on-windows-azure.aspx
  6. Slide ObjectivesUnderstand each of the storage types at a high levelSpeaker NotesThe Windows Azure storage services provide storage for binary and text data, messages, and structured data in Windows Azure. The storage services include:The Blob service, for storing binary and text dataThe Queue service, for storing messages that may be accessed by a clientThe Table service, for structured storage for non-relational dataWindows Azure drives, for mounting an NTFS volume accessible to code running in your Windows Azure serviceProgrammatic access to the Blob, Queue, and Table services is available via the Windows Azure Managed Library and the Windows Azure storage services REST APINoteshttp://blogs.msdn.com/b/windowsazurestorage/archive/2010/03/28/windows-azure-storage-resources.aspx
  7. Slide ObjectivesUnderstand TablesSpeaker NotesThe Table service provides structured storage in the form of tables. The Table service supports a REST API that is compliant with the ADO.NET Data Services REST API. Developers may also use the .NET Client Library for ADO.NET Data Services to access the Table service.Noteshttp://msdn.microsoft.com/en-us/library/dd573356.aspx
  8. Slide ObjectivesUnderstand TablesSpeaker NotesWithin a storage account, a developer may create named tables. Tables store data as entities. An entity is a collection of named properties and their values, similar to a row. Tables are partitioned to support load balancing across storage nodes. Each table has as its first property a partition key that specifies the partition an entity belongs to. The second property is a row key that identifies an entity within a given partition. The combination of the partition key and the row key forms a primary key that identifies each entity uniquely within the table.The Table service does not enforce any schema. A developer may choose to implement and enforce a schema on the client sideNoteshttp://msdn.microsoft.com/en-us/library/dd573356.aspx
  9. Slide ObjectivesUnderstand Tables and EntitiesSpeaker NotesTables store data as entities. An entity is a collection of named properties and their values, similar to a row- not an RDBMS thoughTables are partitioned to support load balancing across storage nodes. Each table has as its first property a partition key that specifies the partition an entity belongs to. The second property is a row key that identifies an entity within a given partition. The combination of the partition key and the row key forms a primary key that identifies each entity uniquely within the table.The Table service does not enforce any schema. A developer may choose to implement and enforce a schema on the client sideNoteshttp://msdn.microsoft.com/en-us/library/dd573356.aspxhttp://msdn.microsoft.com/en-us/library/dd179338.aspx
  10. Slide ObjectivesUnderstand Flexible EntitiesSpeaker NotesTables store data as entities. A table can contain entities of any shapeThere is no fixed schemaThere is no schema checkingThere is no strong typing- not that Birthdate is stored as both a datetime value and as a stringNot that we can add additional columnsNoteshttp://msdn.microsoft.com/en-us/library/dd573356.aspx
  11. Slide ObjectivesUnderstand The Basic Query SyntaxSpeaker NotesTables store data as entities. Querying is per the ADO.NET Data Services spechttp://msdn.microsoft.com/en-us/library/cc668784.aspxShould endeavour to always include the Partition key to limit scope of query- partitions always served by a single storage nodeNoteshttp://msdn.microsoft.com/en-us/library/dd573356.aspx
  12. Slide ObjectivesUnderstand The Partition KeySpeaker NotesTables are partitioned to support load balancing across storage nodes. A table&apos;s entities are organized by partition. A partition is a consecutive range of entities possessing the same partition key value. The partition key is a unique identifier for the partition within a given table, specified by the PartitionKey property. The partition key forms the first part of an entity&apos;s unique identifier within the table.The partition key may be a string value up to 1 KB in size.You must include the PartitionKey property in every insert, update, and delete operation.Noteshttp://msdn.microsoft.com/en-us/library/dd573356.aspxhttp://blogs.msdn.com/b/windowsazurestorage/archive/2010/05/07/understanding-the-scalability-availability-durability-and-billing-of-windows-azure-storage.aspx http://blogs.msdn.com/b/windowsazurestorage/archive/2010/05/10/windows-azure-storage-abstractions-and-their-scalability-targets.aspx
  13. Slide ObjectivesUnderstand The Partition KeySpeaker NotesTables are partitioned to support load balancing across storage nodes. A table&apos;s entities are organized by partition. A partition is a consecutive range of entities possessing the same partition key value. The partition key is a unique identifier for the partition within a given table, specified by the PartitionKey property. The partition key forms the first part of an entity&apos;s unique identifier within the table.The partition key may be a string value up to 1 KB in size.You must include the PartitionKey property in every insert, update, and delete operation.Noteshttp://msdn.microsoft.com/en-us/library/dd573356.aspxhttp://blogs.msdn.com/b/windowsazurestorage/archive/2010/05/07/understanding-the-scalability-availability-durability-and-billing-of-windows-azure-storage.aspx http://blogs.msdn.com/b/windowsazurestorage/archive/2010/05/10/windows-azure-storage-abstractions-and-their-scalability-targets.aspx
  14. Slide ObjectivesUnderstand the hierarchy of Blob storageSpeaker NotesThe Blob service provides storage for entities, such as binary files and text files. The REST API for the Blob service exposes two resources: Containers Blobs. A container is a set of blobs; every blob must belong to a container. The Blob service defines two types of blobs:Block blobs, which are optimized for streaming. Page blobs, which are optimized for random read/write operations and which provide the ability to write to a range of bytes in a blob. Blobs can be read by calling the Get Blob operation. A client may read the entire blob, or an arbitrary range of bytes. Block blobs less than or equal to 64 MB in size can be uploaded by calling the Put Blob operation. Block blobs larger than 64 MB must be uploaded as a set of blocks, each of which must be less than or equal to 4 MB in size. Page blobs are created and initialized with a maximum size with a call to Put Blob. To write content to a page blob, you call the Put Page operation. The maximum size currently supported for a page blob is 1 TB.Noteshttp://msdn.microsoft.com/en-us/library/dd573356.aspxUsing the REST API for the Blob service, developers can create a hierarchical namespace similar to a file system. Blob names may encode a hierarchy by using a configurable path separator. For example, the blob names MyGroup/MyBlob1 and MyGroup/MyBlob2 imply a virtual level of organization for blobs. The enumeration operation for blobs supports traversing the virtual hierarchy in a manner similar to that of a file system, so that you can return a set of blobs that are organized beneath a group. For example, you can enumerate all blobs organized under MyGroup/.
  15. Slide ObjectivesUnderstand the hierarchy of Blob storageSpeaker NotesPut Blob - Creates a new blob or replaces an existing blob within a container.Get Blob - Reads or downloads a blob from the system, including its metadata and properties.Delete Blob - Deletes a blobCopy Blob - Copies a source blob to a destination blob within the same storage account.SnapShot Blob - The Snapshot Blob operation creates a read-only snapshot of a blob.Lease Blob - Establishes an exclusive one-minute write lock on a blob. To write to a locked blob, a client must provide a lease ID.Using the REST API for the Blob service, developers can create a hierarchical namespace similar to a file system. Blob names may encode a hierarchy by using a configurable path separator. For example, the blob names MyGroup/MyBlob1 and MyGroup/MyBlob2 imply a virtual level of organization for blobs. The enumeration operation for blobs supports traversing the virtual hierarchy in a manner similar to that of a file system, so that you can return a set of blobs that are organized beneath a group. For example, you can enumerate all blobs organized under MyGroup/.NotesThe Blob service provides storage for entities, such as binary files and text files. The REST API for the Blob service exposes two resources: containers and blobs. A container is a set of blobs; every blob must belong to a container. The Blob service defines two types of blobs:Block blobs, which are optimized for streaming. This type of blob is the only blob type available with versions prior to 2009-09-19.Page blobs, which are optimized for random read/write operations and which provide the ability to write to a range of bytes in a blob. Page blobs are available only with version 2009-09-19.Containers and blobs support user-defined metadata in the form of name-value pairs specified as headers on a request operation.Using the REST API for the Blob service, developers can create a hierarchical namespace similar to a file system. Blob names may encode a hierarchy by using a configurable path separator. For example, the blob names MyGroup/MyBlob1 and MyGroup/MyBlob2 imply a virtual level of organization for blobs. The enumeration operation for blobs supports traversing the virtual hierarchy in a manner similar to that of a file system, so that you can return a set of blobs that are organized beneath a group. For example, you can enumerate all blobs organized under MyGroup/.A block blob may be created in one of two ways. Block blobs less than or equal to 64 MB in size can be uploaded by calling the Put Blob operation. Block blobs larger than 64 MB must be uploaded as a set of blocks, each of which must be less than or equal to 4 MB in size. A set of successfully uploaded blocks can be assembled in a specified order into a single contiguous blob by calling Put Block List. The maximum size currently supported for a block blob is 200 GB.Page blobs are created and initialized with a maximum size with a call to Put Blob. To write content to a page blob, you call the Put Page operation. The maximum size currently supported for a page blob is 1 TB.Blobs support conditional update operations that may be useful for concurrency control and efficient uploading. Blobs can be read by calling the Get Blob operation. A client may read the entire blob, or an arbitrary range of bytes. For the Blob service API reference, see Blob Service API.
  16. Slide ObjectiveUnderstand containersSpeaker NotesAccount can contain unlimited number of containersRoot container useful when serving Silverlight and flash out of Blob storage. May need to store Cross domain access policy files in root of the domainMetadata is up to 8KB of name value pairs per containerNoteshttp://msdn.microsoft.com/en-us/library/dd179361.aspxhttp://msdn.microsoft.com/en-us/library/ee395424.aspxA root container serves as a default container for your storage account. A storage account may have one root container. The root container must be explicitly created and must be named $root.A blob stored in the root container may be addressed without referencing the root container name, so that a blob can be addressed at the top level of the storage account hierarchy. For example, you can now reference a blob that resides in the root container in the following manner:
  17. Slide ObjectiveUnderstand basics of listing blobs in a containerSpeaker NotesThe List Blobs operation enumerates the list of blobs under the specified container.Can include uncommitted Blobs- see discussion on Blocks and Block ListsCan include snapshotsNoteshttp://msdn.microsoft.com/en-us/library/dd135734.aspx
  18. Slide ObjectiveUnderstand pagination when listing blobsSpeaker NotesReponses over multiple pages return a marker valueThis marker is sent to get subsequent pageNoteshttp://msdn.microsoft.com/en-us/library/dd135734.aspx
  19. Slide ObjectiveUnderstand different blob typesSpeaker NotesBlock blobs are comprised of blocks, each of which is identified by a block ID. You create or modify a block blob by uploading a set of blocks and committing them by their block IDs. If you are uploading a block blob that is no more than 64 MB in size, you can also upload it in its entirety with a single Put Blob operation.When you upload a block to Windows Azure using the Put Block operation, it is associated with the specified block blob, but it does not become part of the blob until you call the Put Block List operation and include the block&apos;s ID. The block remains in an uncommitted state until it is specifically committed. Writing to a block blob is thus always a two-step process.Each block can be a maximum of 4 MB in size. The maximum size for a block blob in version 2009-09-19 is 200 GB, or up to 50,000 blocks.Page blobs are a collection of pages. A page is a range of data that is identified by its offset from the start of the blob. To create a page blob, you initialize the page blob by calling Put Blob and specifying its maximum size. To add content to or update a page blob, you call the Put Page operation to modify a page or range of pages by specifying an offset and range. All pages must align 512-byte page boundaries.Unlike writes to block blobs, writes to page blobs happen in-place and are immediately committed to the blob.The maximum size for a page blob is 1 TB. A page written to a page blob may be up to 1 TB in size but will typically be much smallerNoteshttp://msdn.microsoft.com/en-us/library/dd135734.aspx
  20. Slide ObjectiveIntroduce Shared Access SignaturesSpeaker NotesShared Access Signatures provide access rights to containers and blobs at a more granular level than by simply setting a container’s permissionsGrant users access to a specific blob or to any blob within a specified container for a specified period of time. Specify what operations a user may perform on a blob that&apos;s accessible via a Shared Access Signature. Use HTTPS to protect the signature (it is like a short dated password)Two approachesAd-hocUse for very short dated single use scenariosPolicy basedUse for longer dated revocable permission setsAlways endeavour to use Least Permission set possibleNoteshttp://msdn.microsoft.com/en-us/library/ee395415.aspx
  21. Slide ObjectiveUnderstand Ad-Hoc Shared Access signaturesSpeaker NotesAd-hocUse for very short dated single use scenariosInclude all permissions and expiry in the signed URLCan only revoke by deleting the blob or waiting for expiryUse very short dated URLsNoteshttp://msdn.microsoft.com/en-us/library/ee395415.aspx
  22. Slide ObjectiveUnderstand Ad-Hoc Shared Access signaturesSpeaker NotesPolicy BasedPoints to a Container level policyUser where want a longer dated permission with ability to revokeInclude all permissions and expiry in the signed URLCan only revoke by deleting the blob or waiting for expiryUse very short dated URLsNoteshttp://msdn.microsoft.com/en-us/library/ee395415.aspx
  23. Slide ObjectivesUnderstand basic concept of a CDNUnderstand at a high level how Windows Azure CDN worksSpeaker NotesThe Windows Azure CDN provides edge nodes around the worldData stored in CDN enabled storage accounts is retrieved from the origin storage container and cached at each edge node in a lazy load fashionWindows Azure Customers have control over how long data is cached for.Windows Azure CDN has 18 locations globally (United States, Europe, Asia, Australia and South America) and continues to expandThe benefit of using a CDN is better performance and user experience for users who are farther from the source of the content stored in the Windows Azure Blob service. Windows Azure CDN provides worldwide high-bandwidth access to serve content for popular events.Noteshttp://blogs.msdn.com/b/windowsazure/archive/2009/11/05/introducing-the-windows-azure-content-delivery-network.aspx
  24. Slide ObjectivesUnderstand QueuesSpeaker NotesThe Queue service provides reliable, persistent messaging within and between services. The REST API for the Queue service exposes two resources: queues and messages.Noteshttp://msdn.microsoft.com/en-us/library/dd573356.aspx
  25. Slide ObjectivesUnderstand the Value of QueuesSpeaker NotesQueues allow the apparent perf of app to be improvedWork can be buffered in queue and performed laterAllows simple async comms between rolesMore on this Day 2Noteshttp://blogs.msdn.com/b/eugeniop/archive/2010/05/11/windows-azure-guidance-the-get-delete-pattern-for-reading-messages-from-queues.aspx
  26. Slide ObjectivesUnderstand Queues in DetailSpeaker NotesThe Queue service provides reliable, persistent messaging within and between services. The REST API for the Queue service exposes two resources: Queuesmessages.Queues support user-defined metadata in the form of name-value pairs specified as headers on a request operation.Each storage account may have an unlimited number of message queues that are named uniquely within the account. Each message queue may contain an unlimited number of messages. The maximum size for a message is limited to 8 KB. When a message is read from the queue, the consumer is expected to process the message and then delete it. After the message is read, it is made invisible to other consumers for a specified interval. If the message has not yet been deleted at the time the interval expires, its visibility is restored, so that another consumer may process itNoteshttp://msdn.microsoft.com/en-us/library/dd573356.aspx
  27. Slide ObjectivesUnderstand the Value of QueuesSpeaker NotesQueues allow the apparent perf of app to be improvedWork can be buffered in queue and performed laterAllows simple async comms between rolesMore on this Day 2Noteshttp://blogs.msdn.com/b/eugeniop/archive/2010/05/11/windows-azure-guidance-the-get-delete-pattern-for-reading-messages-from-queues.aspx