SQL Azure Federations       Vítor Tomaz
About MeVítor TomazConsultor IndependenteEmail: vitorbstomaz@gmail.comTwitter: @vitortomaz
Patrocinadores
AgendaSQL Azure Database OverviewEscalabilidadeConceitosUtilização nas aplicações
SQL Azure Database OverviewAccount           Cada conta tem 0 ou mais servidores lógicos             Criada através do por...
SQL Azure Database OverviewWeb Edition       Business Edition1Gb      5Gb   10Gb   20,30,40,50,100   150Gb
SQL Azure Database Overview            Três     Uma        Base de DadosBase de Dados      Físicas    Lógica              ...
EscalabilidadeEscalabilidadeElasticidadeBaixo Investimento InicialPago o que UsoNão há (demasiados) recursos desperdiçados
EscalabilidadeScale Out                                        150Gb                              SQL       Compute       ...
SQL Azure Architecture         Client Layer     Infrastructure Layer
SQL Azure ArchitecturePlatform Layer            Node 14       SQL Server Instance         SQL Server DBUser      User     ...
Multi-tenantUma base de dados por tenant  Custo mínimo por tenant 9.99$Tudo numa base de dados  Limite de capacidade de pr...
ShardingPartitionKeyPartitionKey   RowKey               RowKey                   Timestamp                                ...
ShardingSharding de uma base de dadosSharding numa aplicação multi-tenant
Distribuição dos dadosCentralizados  Disponíveis num único local   Centralizados            Particionados  Poucas leituras...
ArquitecturaFederation Root  contêm todas as                              Federation Root  informações sobre o  particiona...
ArquitecturaFederation Member  Instância de SQL AzureFederation Key                        Federation Key   Member : Range...
DEMOCriação de uma Federação
RegrasCREATE FEDERATION nome_federacao (nome_distribuicao <tipo> RANGE)  Nome da federação têm que ser único dentro de uma...
RegrasDados Centralizados  Criados na root databaseDados Particionados (federados)  Criados no federation member  Com o at...
RegrasCREATE TABLE Produto(…) FEDERATED ON (ID=ProdutoID)  O tipo de dados desta coluna tem que ser obrigatoriamente igual...
RegrasSchema Todas as chaves estrangeiras entre federated tables têm que conter a chave da federação Não podem existir ref...
RegrasOs membros da federação não suportam:  Index Views  Colunas Identity  Tipo de dados timestamp e rowversion
DEMO SPLIT
SPLIT – 1ª Fase                                           Member : Range [100,300)São instanciadas duas novas bases de    ...
SPLIT – 2ª Fase                 Member : Range [100,300)                                                ID=110          ID...
DEMOUSE FEDERATION
Use FederationUSE FEDERATION ROOT WITH RESETUSE FEDERATION federation_name (distribution_name =value) WITH FILTERING={ON|O...
Root Database a Bottleneck ?            Client Layer        Infrastructure Layer
Root Database a Bottleneck ? TDS     Client Layer       Services Layer             GatewaySessão TDSInfrastructure Layer
Root Database a Bottleneck ?
DEMOUTILIZAÇÃO NAS APLICAÇÕES
LINQusing (DataClasses1DataContext db = new DataClasses1DataContext()){   db.Connection.Open();   db.ExecuteCommand("USE F...
Entity Frameworkusing (DemoEntities db = new DemoEntities()){  db.Connection.Open();  db.ExecuteStoreCommand(“USE FEDERATI...
Entity Framework – Code Firstusing (DemoEntities db = new DemoEntities()){  ((IObjectContextAdapter)db).ObjectContext.Conn...
Transacçõesusing (DemoEntities db = new DemoEntities()){  db.Connection.Open();  db.ExecuteStoreCommand(“USE FEDERATION Pr...
Multiple Active Result Sets (MARS)Ainda não existe suporte para MARS em SQL Azure FederationsNão pudemos usar Lazy Loading...
Multiple Active Result Sets (MARS)LINQDataLoadOptions dataLoadOptions = new DataLoadOptions();dataLoadOptions.LoadWith<Pro...
RecapCentralizados            Particionados   Configs      Dados1      Dados2       Dados3                  CP          CP...
RecapFederation Root                  Federations                                 Federation Members   AppDB              ...
Questões?
Patrocinadores
Obrigado!
Upcoming SlideShare
Loading in …5
×

[AzurePT] SQL Azure Federations

1,094 views
1,020 views

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,094
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

No notes for 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 &amp; 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!

    ×