[AzurePT] SQL Azure Federations

1.102 visualizações

Publicada em

Publicada em: Tecnologia
0 comentários
1 gostou
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
1.102
No SlideShare
0
A partir de incorporações
0
Número de incorporações
3
Ações
Compartilhamentos
0
Downloads
0
Comentários
0
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide
  • Slide ObjectiveUse this slide to transition into an explanation of SQL Azure Database (Reporting and Data Sync will be covered later)Explain at a high level how SQL Azure worksSpeaker NotesDesign Principle of SQL Azure: Focus on combining the best features of SQL Server running at scale with low frictionSQL Azure is a high availability databaseAlways three transaction consistent replicas of the databaseOne primary replica; two slave replicasFailure of a replica will result in another replica being spun up immediately by the fabricFailure of the primary replica means a slave replica will become the primary and a new slave will spin upMinimal down timeTypically just a few dropped connectionsEasy to code for the failover scenario- if you are ding god connection management and error handling will be fineClustered index required on all tables to allow replicationNotesUseful article from SQL Azure teamhttp://msdn.microsoft.com/en-us/magazine/ee321567.aspx
  • What about this? Draw answer on slide, highlight all storage points & internal endpointsALSO talk about other tricks such as putting static content into blob storage.Note we don’t talk about CDN here – we’ll cover that in thinking globally
  • [AzurePT] SQL Azure Federations

    1. 1. SQL Azure Federations Vítor Tomaz
    2. 2. About MeVítor TomazConsultor IndependenteEmail: vitorbstomaz@gmail.comTwitter: @vitortomaz
    3. 3. Patrocinadores
    4. 4. AgendaSQL Azure Database OverviewEscalabilidadeConceitosUtilização nas aplicações
    5. 5. SQL Azure Database OverviewAccount Cada conta tem 0 ou mais servidores lógicos Criada através do portal Cada servidor lógico tem uma ou mais bases de dados Contém informações aceca das base de dados e consumos Server Unidade de autenticação, geo-localização, billing, e reporting Nome gerado automáticamente Uma base de dados tem objectos SQLDatabase Utilizadores, Tabelas, Views, Indices, etc Unidade de consistência
    6. 6. SQL Azure Database OverviewWeb Edition Business Edition1Gb 5Gb 10Gb 20,30,40,50,100 150Gb
    7. 7. SQL Azure Database Overview Três Uma Base de DadosBase de Dados Físicas Lógica Primary Secondary 1 DB Secondary 2
    8. 8. EscalabilidadeEscalabilidadeElasticidadeBaixo Investimento InicialPago o que UsoNão há (demasiados) recursos desperdiçados
    9. 9. EscalabilidadeScale Out 150Gb SQL Compute SQL Azure Azure Scale Up Scale Out
    10. 10. SQL Azure Architecture Client Layer Infrastructure Layer
    11. 11. SQL Azure ArchitecturePlatform Layer Node 14 SQL Server Instance SQL Server DBUser User User UserDB1 DB2 DB3 DB4 SQL Azure Fabric Node 15 SQL Server Instance SQL Server DBUser User User UserDB1 DB2 DB3 DB4 SQL Azure Fabric
    12. 12. Multi-tenantUma base de dados por tenant Custo mínimo por tenant 9.99$Tudo numa base de dados Limite de capacidade de processamento Limitado a 150Gb
    13. 13. ShardingPartitionKeyPartitionKey RowKey RowKey Timestamp Timestamp ModelYear ModelYear(Category)(Category) (Title) (Title)Bikes Super Duper Cycle … 2009Bikes Quick Cycle 200 Deluxe … 2007…… … … … … … …CanoesCanoes Whitewater Whitewater … … 2009 2009Canoes Flatwater … 2006Canoes Flatwater … 2006PartitionKeyRafts RowKey 14ft Super Tourer …Timestamp ModelYear 1999(Category) (Title)…Rafts … 14ft Super Tourer … … … 1999Skis… Fabrikam Back Trackers … …… 2009 ……Skis … Fabrikam Back Trackers …… … 2009…Tents … Super Palace …… … 2008Tents Super Palace … 2008
    14. 14. ShardingSharding de uma base de dadosSharding numa aplicação multi-tenant
    15. 15. Distribuição dos dadosCentralizados Disponíveis num único local Centralizados Particionados Poucas leituras e escritasParticionados Configs Dados1 Dados2 Dados3 Cada “pedaço” reside apenas CP CP CP numa base de dados ReplicadosReplicados Leituras Escritas são raras
    16. 16. ArquitecturaFederation Root contêm todas as Federation Root informações sobre o particionamento dos Federations dados Federation Members AppDBFederations objectos que suportam a funcionalidade de ClientesFed distribuição dos dados entre as várias partições
    17. 17. ArquitecturaFederation Member Instância de SQL AzureFederation Key Federation Key Member : Range [100,300] campo que identifica univocamente ID=110 ID=210 cada partição Unidades ID=120 ID=220 AtómicasUnidades Atómicas ID=130 ID=230 conjunto de dados com a mesma federation key ficam garantidamente no mesmo federation member
    18. 18. DEMOCriação de uma Federação
    19. 19. RegrasCREATE FEDERATION nome_federacao (nome_distribuicao <tipo> RANGE) Nome da federação têm que ser único dentro de uma base de dados Tipo de dados terá que ser INT, BIGINT, UNIQUEIDENTIFIER ou VARBINARY(n) onde o n poderá ir até 900
    20. 20. RegrasDados Centralizados Criados na root databaseDados Particionados (federados) Criados no federation member Com o atributo FEDERATED ON ()Dados Replicados Criados no federation member Sem o atributo FEDERATED ON ()
    21. 21. RegrasCREATE TABLE Produto(…) FEDERATED ON (ID=ProdutoID) O tipo de dados desta coluna tem que ser obrigatoriamente igual ao tipo de dados da chave da federação. Não pode ter valor nulo. Não pode ser actualizada para valores fora do range do membro actual. Não pode ser uma computed column. Tem que fazer parte de todas as unique e clustered indexes. Tem que fazer parte de todas as chaves estrangeiras para outras federated tables.
    22. 22. RegrasSchema Todas as chaves estrangeiras entre federated tables têm que conter a chave da federação Não podem existir reference tables com chaves estrangeiras para uma federated table Uma federated table pode ter chaves estrangeiras para reference tables sem restrições Só poderão ser realizadas alteração ao esquema de um membro através de ligações sem filtro (FILTERING=OFF)
    23. 23. RegrasOs membros da federação não suportam: Index Views Colunas Identity Tipo de dados timestamp e rowversion
    24. 24. DEMO SPLIT
    25. 25. SPLIT – 1ª Fase Member : Range [100,300)São instanciadas duas novas bases de ID=110 ID=210dados ID=120 ID=220 ID=130 ID=230São criadas as entradas nas tabelas demetadata que irão suportar oprogresso da operação Member : Member : Range [100,200) Range [200,300)(sys.dm_federation_operation*) epreparadas as operações de cópia dosdados
    26. 26. SPLIT – 2ª Fase Member : Range [100,300) ID=110 ID=210Criação do Schema ID=120 ID=130 ID=220 ID=230Cópia integral dos dados replicadosCópia filtrada dos dados particionadosOperações acontecem sobre as novasbases de dados e respectivas réplicas Member : Range [100,200) Member : Range [200,300)Original passa a offline e novas a online ID=110 ID=120 ID=210 ID=220Alteração transparente para o utilizador ID=130 ID=230 alteração na metadata retry logic
    27. 27. DEMOUSE FEDERATION
    28. 28. Use FederationUSE FEDERATION ROOT WITH RESETUSE FEDERATION federation_name (distribution_name =value) WITH FILTERING={ON|OFF}, RESET [;] RESET é obrigatório FILTERING OFF – Acede a todos os dados do federation member ON – Acede apenas a dados da unidade atómica definida
    29. 29. Root Database a Bottleneck ? Client Layer Infrastructure Layer
    30. 30. Root Database a Bottleneck ? TDS Client Layer Services Layer GatewaySessão TDSInfrastructure Layer
    31. 31. Root Database a Bottleneck ?
    32. 32. DEMOUTILIZAÇÃO NAS APLICAÇÕES
    33. 33. LINQusing (DataClasses1DataContext db = new DataClasses1DataContext()){ db.Connection.Open(); db.ExecuteCommand("USE FEDERATION ProdutosFed(ID = 110)WITH RESET, FILTERING=OFF"); (…)}
    34. 34. Entity Frameworkusing (DemoEntities db = new DemoEntities()){ db.Connection.Open(); db.ExecuteStoreCommand(“USE FEDERATION ProdutosFed(ID = 110)WITH RESET, FILTERING=OFF”);(…)}
    35. 35. Entity Framework – Code Firstusing (DemoEntities db = new DemoEntities()){ ((IObjectContextAdapter)db).ObjectContext.Connection.Open(); db.ExecuteStoreCommand(“USE FEDERATION ProdutosFed (ID = 110)WITH RESET, FILTERING=OFF”);(…)}
    36. 36. Transacçõesusing (DemoEntities db = new DemoEntities()){ db.Connection.Open(); db.ExecuteStoreCommand(“USE FEDERATION ProdutosFed(ID = 110) WITHRESET, FILTERING=OFF”); using (TransactionScope scope = newTransactionScope(TransactionScopeOption.RequiresNew)) { (...) }}
    37. 37. Multiple Active Result Sets (MARS)Ainda não existe suporte para MARS em SQL Azure FederationsNão pudemos usar Lazy Loading, LoadProperty() e Load()Temos que fazer Eager Loading Inicializar os objectos no momento da criação
    38. 38. Multiple Active Result Sets (MARS)LINQDataLoadOptions dataLoadOptions = new DataLoadOptions();dataLoadOptions.LoadWith<Produto>(c => c.Categoria);db.LoadOptions = dataLoadOptions;Entity Framework O eager loading é realizado através do método Include:var produtos = from p in db.Produto.Include("Categoria1") select p;
    39. 39. RecapCentralizados Particionados Configs Dados1 Dados2 Dados3 CP CP CP Replicados
    40. 40. RecapFederation Root Federations Federation Members AppDB ClientesFed
    41. 41. Questões?
    42. 42. Patrocinadores
    43. 43. Obrigado!

    ×