SETEMBRO, 2010 | SÃO PAULO
Waldemir CambiucciArquiteto de SoluçõesMicrosoft
[email protected]/wcamb twitter.com/wcamb
SQL Azure - Cenários de Uso, Migração e Operação
CÓDIGO DA SESSÃO: COS302
3
Agenda
Cenários de Uso para Dados na Nuvem
Visão Geral sobre o SQL Azure
Recomendações Gerais paraOperação, Deployment,Desenvolvimento, Segurança, etc…
4
CENÁRIOS DE USO PARA DADOS NA NUVEM
SQL Azure
5
Novos datacenters…
Uma infraestrutura de datacenters
6
4o Geração de Datacenter
Quincy, WA
7
A plataforma Windows Azure
Experiência do DesenvolvedorUtilizando ferramentas e conhecimento
existentes
platformAppFabric
Compute Storage Management Relational data Management Connectivity Access control Reporting & BI
Billing & Payments
Flexible APIs
Information Marketplac
e
8
Cenários de uso para dados na nuvemColaboração de Aplicações
Aplicações que necessitam colaborar cruzando fronteiras
Data Hubs
Data hubs que consolidam múltiplas fontes de dados e
oferecem acesso de múltiplas localidades e dispositivos
Pacotes de aplicações LOB
ISVs extendendo ofertas ou vendendo software hospedado na
nuvem (SaaS)
Aplicações Web Customizadas
Aplicações Web de vários tamanhos que necessitam banco de dados
9
Cenários de integração de dados
On-Premises Applications
Sync
SyncSync
Offline-Capable Cached ModeApplications
Sync
Sync
Sync Sync
Browser Clients
Business-to-
Business
Windows Azure Platform
10
VISÃO GERAL SOBRE O SQL AZUREIntrodução
11
O que é o SQL Azure?
Um repositório de dados relacional na nuvem, acessado através da Web
Suporte a interfaces REST e TDS – Tabular Data Stream.Modelo relacional já conhecido do SQL ServerSuporte ao Transact-SQL (T-SQL).Utiliza as APIs e ferramentas existentes.Provisionamento facilitado e gerenciamento reduzido.Construído para a nuvem com disponibilidade e escalabilidade.
12
Modelo de Provisionamento
Cada account tem zero ou mais serversConta Azure provisionado via portal onlineInstrumento para Billing
Cada server tem um ou mais databasesContém metadados sobre a base e o usoUnidade de autenticaçãoUnidade de Geo-localizaçãoNome gerado baseado em DNS
Cada database tem objetos SQL padrãoUnidade de consistênciaUnidade de multi-tenancyContém usuários, tabelas, views, índices, etc.Unidade granular básica para cobrança
Account
Server
Database
13
Topologia de Aplicações
SQL Azure acessado de dentro do Datacenter MS (Azure
Compute)
SQL Azure acessado de fora de um datacenter MS (on-
premise)
SQL Azure acessado de dentro e de fora de um datacenter MS (on-premise
& Azure Compute)
Application/ Browser
SOAP/RESTHTTP/S
Astoria/REST - EDMHTTP/S
App Code
(ASP.NET)
App Code(ASP.NET)
T-SQL (TDS)
SQL Azure
WindowsAzure
Code Near
App code/ Tools
T-S
QL (
TD
S)
SQL Azure
Windows
Azure
Code Far HybridS
QL A
zu
re
Data
Syn
c Windows
Azure
SQL Azure
SQL Serve
rApp code/ Tools
App Code
(ASP.NET)
App Code(ASP.NET)
T-SQL (TDS)
14
Modelo de Compatibilidade
Tables, indexes e viewsStored ProceduresTriggersConstraintsConstantesTable variablesSpatial (desde junho)…
Dentro do escopo v1 Fora do escopo v1
Distributed TransactionsDistributed QueryCLRService BrokerPhysical server or catalog DDL and viewsSystem tables (algumas já suportadas) Trace Flags
15
50GB
Web Edition (junho/2010)5GB de tamanho máximo, com unidades de cobrança de 1 GB.Custos:
$9.99 até 1GB $49.95 até 5GB
Business Edition (junho/2010)50GB de tamanho máximo, com unidades de cobrança de 10 GB. Custos:
$99.99/mês até 10GB$199.98/mês até 20GB$299.97/mês até 30GB$399.96/mês até 40GB$499.95/mês até 50GB
Modelo de Cobrança
5GB
1GB
10GB
40GB
30GB
20GB
16
Modelo de Cobrança – Ofertashttp://www.microsoft.com/windowsazure/offers/
17
Modelo de Cobrança – Contratando a oferta Introductory Special
18
Administração de Servidor via Portal WebCreate/Drop SQL Azure ServerCreate/Modify server admin password
Administração da Base de DadosCreate/Drop database(s)Database(s) e sua utilização
Gerenciamento do Firewall do SQL AzureInformações de cobrança (billing)Informações de projetosAccount Administrator/Server Administrator
Modelo de Administração Online
19
Modelo de Administração Online
20
Navegando pelo portal de administração do SQL Azure
Waldemir CambiucciArquiteto de Soluções | Microsoft
https://sql.azure.com/
21
Modelo de Segurança
Windows Authentication – Não Suportado!SQL Server Authentication – Suportado!
O usuário deve fornecer Username + Password para toda conexão com o SQL Azure.Autorização de usuários e papéis para objetvos SQL
No futuro, suporte para AD Federation(“Geneva”), LiveID, etc. assim como protocolos de autenticação alternativos.
22
Modelo de ConexãoUtiliza bibliotecas clientes existentes
ADO.NET, ODBC, PHP
Clientes conectam diretamente para o banco de dados
Não pode chavear entre bancos (sem “USE”)
Conexão via sqlcmd.exe e ADO.NET.SQL Server Management Studio 2008 R2 é suportado.
23
Modelo de Administração do SQL Azure
Utilizando o SQL Server Management Studio 2008 R2 (SSMS)
24
Conectando ao SQL Azure via SSMS 2008 R2
Waldemir CambiucciArquiteto de Soluções | Microsoft
25
Limitações de conexão durante o CTP
As conexões com o serviço SQL Azure serão derrubadas quando:
Uso excessivo de recursosLong-running queries / Consultas de longa duração Long-running single transactions, entre as declarações “BEGIN TRAN” e “END TRAN”Idle connections / Conexões osciosas
Administração Lógica vs. FísicaO SQL Azure foca a administração lógica
Criação de schemas e gerenciamentoOtimização de consultasGerenciamento de segurança (Logins, Users, Roles)
O serviço trata o gerenciamento físicoReplicação automática com HA (High Availability) Balanceamento de carga para garantir o SLA (Service Level Agreement)
Modelo de Particionamento – Sharding
Diversas opções de particionamento possíveis (manual)
1 x 10GB database10 x 1GB databases5 x 50GB databasesEtc…
28
DESENVOLVIMENTORecomendações gerais para
29
Recomendações para Desenvolvimento
Não deixe de checar sua conectividade antes de começar o desenvolvimento ou administração do SQL Azure.
30
Recomendações para Desenvolvimento
Management StudioVocê pode usar qualquer versão do SSMS para desenvolvimento local.Versões antigas (pre SQL 2008 R2) necessitam de workaround para conectar no SQL Azure
31
DEPLOYMENTRecomendações gerais para
32
Recomendações para Deployment
Scripts gerados de versões antigas (pré SQL 2008 R2) exigem modificações para compatibilidade com o SQL Azure
Utilize o SQL 2008 R2 Management StudioSuporta scripting para SQL Azure sem qualquer modificaçãoObject explorer; Import/Export Wizard etc.
33
Recomendações para Deployment
Option available under “Advanced“
button
34
MIGRAÇÃORecomendações gerais
35
Recomendações para Migração
BCPUse smaller batch size.
Por default, TODAS as linhas do arquivo de dados são importadas no batch
Usar as opções –F (first row), -L (last row) para melhor gerenciamento de “retry”
Username no login@servername formato [from servername.database.windows.net]
36
Recomendações para Migração
SSISUse ADO.NET provider. OLEDB ainda não é suportado.Distribuir suas tabaleas em múltiplas tarefas ou ainda múltiplos pacotes para migração de dados em paralelo.Username no formato login@servernameChecar a opção “Use Bulk Insert where possible”
37
SQL Azure Migration Wizard
CenárioMigração de schema e/ou dats com controle fino.
PrósSQL Azure Compatibility AnalysisUsa APIs SMO e BCP performáticasImplementa retry/chunkingTrabalha com clustered index creationCria batch scripts (ótimo para Testes & QA)
ContrasDatos BCP armazenados num arquivo localSQL Engine TSQL Parser incompletoNão é suportado pela Microsoft
http://sqlazuremw.codeplex.com/
38
Migrando dados para o SQL Azure com o SQL Azure Migration Wizard v3.3.5
Waldemir CambiucciArquiteto de Soluções | Microsoft
39
SEGURANÇARecomendações gerais para
40
Recomendações de SegurançaConfigurar o firewall
Permitir saída pela porta TCP 1433SQL Azure não possui IP estático
Configurar o SQL Azure firewall para permitir IP’s dos clientes – pode ser feito via portal ou via stored procs na master DB
sp_set_firewall_rule | sp_delete_firewall_rule
Standard SQL AuthenticationStandard SQL roles, logins, users para gerenciar permissões
Encrypt=True (SSMS & Connection string)
41
TROUBLESHOOTINGRecomendações gerais para
42
Troubleshooting – Erros de Acesso
Para habilitar acesso, no portal do SQL Azure configurar a faixa de endereços IP no firewall, ou utilizar a procedure sp_set_firewall_rule na master database.
Pode levar até 5 minutos para que as mudanças sejam efetivadas.
43
Troubleshooting – Erros de limites
Tamanho da Base de Dados
Long running transactionError Severity Description
40549 20 Session is terminated because you have a long-running transaction. Try shortening your transaction.
Error Severity Description
40544 20 The database has reached its size quota. Partition or delete data, drop indexes, or consult the documentation for possible resolutions.
44
Troubleshooting – Uso de CPU, I/O
CPU , I/O, Conexões correntes
Identificar as principais stored procedures consumindo CPU e/ou I/O.
Usando dynamic management views (DMV) e functions (DMF)
Error Severity Description40501 20 The service is currently busy. Retry the request after 10
seconds. Code: %d.
45
Troubleshooting – Erros de ConectividadeA transport-level error has occurred when receiving results from the server. (Provider: TCP Provider, error: 0 - An existing connection was forcibly closed by the remote host.)
System.Data.SqlClient.SqlException: Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding. The statement has been terminated.
An error has occurred while establishing a connection to the server. When connecting to SQL Server 2005, this failure may be caused by the fact that under the default settings SQL Server does not allow remote connections
Error: Microsoft SQL Native Client: Unable to complete login process due to delay in opening server connection.
A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.
46
Troubleshooting – Erros de Conectividade
Checar a disponibilidade do serviços via Azure Dashboard
http://www.microsoft.com/windowsazure/support/status/servicedashboard.aspx
Portal –“Test Connectivity" verifica se seus servidores e bases de dados estão disponíveis na porta 80
47
Azure Dashboard – Disponibilidade de Serviços
48
APLICAÇÕESRecomendações gerais para
49
Melhores Práticas para Aplicações
Abrir as conexões o mais tarde possível e fechá-las o mais rapidamente possível. Implementar lógica de repetição para recuperar erros conexão ou transação (RETRY).Pool de conexão ADO.NET não verifica se as conexões estão válidas antes de retornar para a aplicação.
Testar a conexão para ver se ela é válida. Fechar conexões manualmente em sua aplicação.Escalar com o particionamento do banco de dados.
50
Melhores Práticas para Aplicações - Retry
51
Melhores Práticas para Aplicações -Retry
52
Melhores Práticas para AplicaçõesPara reduzir o número de processos:
Utilize mecanismos de caching em sua aplicação.Implementar particionamento para distribuir a carga em múltiplas bases de dados.
Conexões osciosas (Idle connections)Conexões osciosas por mais de 30 minutos são disconectadas pelo SQL Azure.
DoS (Denial of Service) GuardConexões são reiniciadas em caso de tentativas de login falhas, a partir de um endereço IP específico.
Failover e Load BalancingConexões podem ser disconectadas em eventos de load balacing ou failover.
53
SINCRONIZAÇÃO DE DADOS NA NUVEM
SQL Azure Data Sync
54
Opções para Data Sync
Cenário simplesSolução customizada com SSIS, BCP, etc., pode ser suficiente!
Porque usar uma abordagem syncIncremental changes / bandwidthGerenciamento de conflitos e resoluçãoFlexibilidadeRedes indisponíveis
SQL Azure Data Sync potencializa o movimento dos dados:
On-premises para a Cloud Cloud to CloudCloud to Offline web applications
55
SQL Azure Data Sync
On-Premises Applications
Sync
SyncSync
Offline-Capable Cached ModeApplications
Sync
Sync
Sync Sync
Browser Clients
Business-to-
Business
SQL Azure DatabaseSy
nc Sync
Sync
SQL Azure Data Sync
http://azure.com
SQL Azure Data Sync
http://azure.com
SQL Azure Data Sync
http://azure.com
SQL Azure Data Sync
http://azure.com
SQL Azure Data Sync Service
http://sqlazurelabs.com
Microsoft Sync Framework v3
(lab - coming soon)
Microsoft Sync Framework v3
(lab - coming soon)
Microsoft Sync Framework v3
(em breve…)
Para saber mais, confira a sessão!!!
DBP308Palestrante: Luciano Condé
Sincronizando dados com a nuvem através do SQL Azure Data Sync e Sync Framework 2.0
Data: 14/09 Horário: 17:15 - 18:30
57
Conclusões
58
Conclusões
O SQL Azure é uma base de dados relacional na nuvem, pronta para uso!
Diversos cenários são suportados!Descubra qual cenário sua aplicação exige.
Novas funcionalidades e serviços serão oferecidos sobre o SQL Azure, como:
BI, Reporting Services, Analysis, etc… aguarde!
59
60
Conteúdo relacionado
DBP308 - Sincronizando dados com a nuvem através do SQL Azure Data Sync e Sync Framework 2.0. Palestrante: Luciano Condé
COS201 - Plataforma Azure AppFabric - utilizando o Service Bus e o Access Control Services. Palestrante: Rafael Godinho
COS301 - Desenvolvendo para Azure. Palestrante: Otavio Pecego Coelho
COS203 - Como se preparar para BPOS. Melhores práticas antes da migração. Palestrante: Alberto Tolentino
61
Referências
Team Blog – http://blogs.msdn.com/sqlazure
Cihan’s Blog- Your Data in the Cloud - http://blogs.msdn.com/cbiyikoglu
MSDN Dev Center – http://msdn.microsoft.com/azure/sqlazure
SQL Azure Labs – http://www.sqlazurelabs.com
Windows Azure Platform Training Kit - http://bit.ly/dgvMv0
SQLAzureMW – http://sqlazuremw.codeplex.com
© 2008 Microsoft Corporation. Todos os direitos reservados. Microsoft, Windows, Windows Vista e outros nomes de produtos são ou podem ser marcas registradas e/ou marcas comerciais nos EUA e/ou outros países.Este documento é meramente informativo e representa a visão atual da Microsoft Corporation a partir da data desta apresentação. Como a Microsoft deve atender a condições de mercado em constante alteração, este
documento não deve ser interpretado como um compromisso por parte da Microsoft, e a Microsoft não pode garantir a precisão de qualquer informação fornecida após a data desta apresentação. A MICROSOFT NÃO DÁ QUALQUER GARANTIA, SEJA ELA EXPRESSA, IMPLÍCITA OU ESTATUTÁRIA, REFERENTE ÀS INFORMAÇÕES DESTA APRESENTAÇÃO.
Por favor preencha a avaliação