1. Storing data in the cloud Eric Nelson Microsoft UK Email: eric.nelson@microsoft.com Blog: http://geekswithblogs.net/iupdateable Twitter: http://twitter.com/ericnel and http://twitter.com/ukmsdn Podcast: http://bit.ly/msdnpodcast Newsletter: http://msdn.microsoft.com/en-gb/flash
8. Storage in the Cloud… Windows Azure Storage and SQL Azure
9. Solve using the Cloud aka Windows Azure Platform Browser p1 p2 p3 Web Role N L B Worker Role N L B Browser AzureStorage Web Role Browser Worker Role Worker Role Browser Web Role Browser You don’t see this bit You don’t see this bit You don’t see this bit or… Maybe you do
10. Solve using the Cloud aka Windows Azure Platform SQLAzure Browser p1 p2 p3 Web Role N L B Worker Role N L B Browser AzureStorage Web Role Browser Worker Role Worker Role Browser Web Role Browser You don’t see this bit You don’t see this bit You don’t see this bit Ok, you definitely do
11. 3 Important Services 3 Critical Concepts Windows Azure Compute and Storage SQL Azure Storage .NET Services Connecting Computation Web and Worker Storage Table, Blob, Relational Messaging Queues, Service Bus
16. Provides structured storage Massively scalable tables (TBs of data) Self scaling Highly available Durable Familiar and easy-to-use API, layered .NET classes and LINQ ADO.NET Data Services – .NET 3.5 SP1 REST – with any platform or language Introduction to Tables
17. No join No group by No order by “No Schema” Not a Relational Database
18. Table A Table is a set of Entities (rows) An Entity is a set of Properties (columns) Entity Two “key” properties form unique ID PartitionKey – enables scale RowKey – uniquely ID within a partition Data Model
19. Key Example – Blog Posts Partition 1 Partition 2 Getting all of dunnry’s blog posts is fast Single partition Getting all posts after 2008-03-27 is slow Traverse all partitions
20. Query a Table REST: GET http://account.table.core.windows.net/Customer?$filter=%20PartitionKey%20eq%20value LINQ: var customers = from o in context.CreateQuery<customer>(“Customer”) where o.PartitionKey == value select o; Azure Table Storage Worker Role http://account.table.core.windows.net
22. Lessons LearnedAzure Storage – Entity Group Transactions Different Entity types in the same table E.g. PK = CustomerId Customer, Order and OrderDetails in the same table
33. Lessons LearnedSQL Azure From the database “down” it’s just SQL Server Well, almost … Many tools don’t work today System catalog is different Above the database is taken care of for you You can’t really change anything
34. Lessons LearnedSQL Azure Tooling SSMS partially works – “good enough” Can not create connection using Visual Studio designer Other tools may work better No BCP (currently) DDL Must be a clustered index on every table No physical file placement No indexed views No “not for replication” constraint allowed No Extended properties Some index options missing (e.g. allow_row_locks, sort_in_tempdb ..) No set ansi_nulls on
35. Lessons LearnedSQL Azure Types No spatial or hierarchy id No Text/images support. Use nvarchar(max) XML datatype and schema allowed but no XML index or schema collection. Security No integrated security
36. Lessons LearnedSQL Azure Development No CLR Local temp tables are allowed Global temp tables are not allowed Cannot alter database inside a connection No UDDT’s No ROWGUIDCOL column property
37. Lessons LearnedSQL Azure vs Windows Azure Tables SQL Server is very familiar SQL Azure *is* SQL Server in the cloud Windows Azure Storage is…very different Make the right choice Understand Azure storage Understand SQL Azure Understand they are totally different You can use both
38. Lessons Learned SQL Azure vs Windows Azure Tables SQL Azure is not always the best storage option SQL Azure costs more Delivers a *lot* more functionality SQL Azure is more limited on scale
39. Lessons Learned SQL Azure and Sharding Can be done Many 10GB databases Not fun
41. Resources Slides, links and more http://geekswithblogs.net/iupdateable Azure Training Kit (August update) www.azure.com Sign up, links to resources etc http://www.cerebrata.com
Notes de l'éditeur
Partition Key – how data is partitionedRow Key – unique in partition, defines sortGoalsKeep partitions small (increased scalability)Specify partition key in common queriesQuery/sort on row key
Each Table: PartitionKey (e.g. DocumentName) to ensure scalabilityRowKey (e.g. version number)[fields] for data