Introdução ao SQL Azure
Waldemir CambiucciArquiteto de SoluçõesMicrosoft Brasilhttp://twitter.com/wcamb/ http://blogs.msdn.com/wcamb/
Módulo 6
Agenda
− Apresentar uma introdução aos recursos do SQL Azure na plataforma Windows Azure, fornecendo um banco de dados relacional para aplicações na nuvem.
RECURSOS DO SQL AZURE
Um banco de dados relacional na nuvem
Plataforma Windows Azure
Experiência do DesenvolvedorUsa as mesmas ferramentas e conhecimento
atual
Compute
Storage
Management Connectivity Access controlFlexible
APIsInformation Marketplac
e
Reporting
Relational data
Management
Data SyncReporting &
BI
Billing & Payments
Flexible APIs
Information
Marketplace
SQL Azure
− Um banco de dados relacional na nuvem.− Modelo de programação simétrico− Acesso via ADO.NET, ODBC, TDS v7.3+− Administração via SQL Server Management
Studio ou pelo portal SQL Azure
Data Sync
Database Reporting
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
Server− Suporte 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.
Cenários de uso do SQL Azure
SQL Azure acessado de dentro do Datacenter MS
(Azure Compute)
Application/ Browser
SOAP/RESTHTTP/S
Astoria/REST - EDMHTTP/S
App Code
(ASP.NET)
App Code(ASP.NET)
T-SQL (TDS) WindowsAzure
Code Near
SQL Azure acessado de fora de um datacenter
MS (on-premise)
App code/ Tools
T-SQ
L (T
DS)
WindowsAzure
Code Far
SQL Azure acessado de dentro e de fora de um datacenter MS
(on-premise & Azure Compute)
HybridSQ
L A
zure
Data
Syn
c WindowsAzure
SQL Serve
rApp code/ Tools
App Code
(ASP.NET)
App Code(ASP.NET)
T-SQL (TDS)
Modelo de Provisionamento
− Cada account tem zero ou mais servers− Conta Azure provisionado via portal online− Instrumento para Billing
− Cada server tem um ou mais databases− Contém metadados sobre a base e o uso− Unidade de autenticação− Unidade de Geo-localização− Nome gerado baseado em DNS
− Cada database tem objetos SQL padrão− Unidade de consistência− Unidade de multi-tenancy− Contém usuários, tabelas, views, índices,
etc.− Unidade granular básica para cobrança
Account
Server
Database
Modelo de Compatibilidade
Dentro do escopo v1
Fora do escopo v1
Tables, indexes, viewsStored ProceduresTriggersConstraintsTable variables, session temp tables (#t)Spatial (desde junho)…
Distributed TransactionsDistributed QueryCLRService BrokerPhysical server, catalog DDLTrace Flags
http://msdn.microsoft.com/en-us/library/ff394115.aspx
50GB
Modelo de Cobrança− 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
5GB
1GB
10GB
40GB
30GB
20GB
Alterando o tamanho da base SQL Azure
http://msdn.microsoft.com/en-us/library/ff394109.aspx
No portal https://sql.azure.com/
− Verificar as bases presentes e deletar qualquer base não usada.
− Entrar na pasta de firewall settings e configurar IP Range:− Para testes, usar 0.0.0.0 –
255.255.255.255
− Conferir informações de billing.
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 Services (“AD FS v2.0”), LiveID, etc. assim como protocolos de autenticação alternativos.− Windows Identity Foundation (WIF), Claim-based
Authentication
Modelo de Conexão
− Utiliza 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.
Modelo de Administração do SQL Azure− Utilizando o
SQL Server Management Studio 2008 R2 (SSMS)
− Para versões anteriores ao SSMS R2, um workaround deve ser aplicado.
Limitações de conexão
− As conexões com o serviço SQL Azure serão derrubadas quando:− Long-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
Réplica 1
Réplica 2
Réplica 3
DB
Single Database Múltiplas Réplicas
Single Primary
Réplica 4
!Réplica de dados automática
Modelo de Particionamento – Sharding
Hardware Boundary
Hardware Boundary
Hardware Boundary
Hardware Boundary
BC
D
A A
B
B
C
C
D
D
A
− Particionamento controlado pela aplicação.
Demo de Particionamento – Sharding − Scaling Out SQL Azure with Database
Sharding− C:\WindowsAzureTrainingKit - Sep2010\
Demos\SQLAzureScalingOutWithDbShardingVS2010
Recomendações para desenvolvimento
SQL Azure
Recomendações para Desenvolvimento− Não deixe de checar sua conectividade
antes de começar o desenvolvimento ou administração do SQL Azure.
Recomendações para Desenvolvimento− Management Studio
− Você 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
Bibliotecas clientes para conexão− É possível conectar ao SQL Azure
através de diversas bibliotecas clientes:−ODBC−ADO.NET−OLEDB−LINQ TO SQL−PHP−JAVA
Conectando via LINQ to SQL
using System; using System.Linq;public void ConnectToSQLAzureDemo(){ AdventureWorksSqlAzureDataContext context = new AdventureWorksSqlAzureDataContext();
// get all company names IQueryable<string> companyNames = from customer in context.Customers
select customer.CompanyName;
// display these all on the console foreach (string company in companyNames) { Console.WriteLine(company); }}
Conectando via PHP
<?php $host = "server.database.windows.net"; $dbname = "database"; $dbuser = "user@server"; $dbpwd = "password"; $driver = "{SQL Server Native Client 10.0}";
// Build connection string $dsn="Driver=$driver;Server=$host;Database=$dbname;Encrypt=true;TrustServerCertificate=true"; if (!($conn = @odbc_connect($dsn, $dbuser, $dbpwd))) { die("Connection error: " . odbc_errormsg()); } // Got a connection, do what you will // Free the connection @odbc_close($conn);?>
Conectando via JAVA/JDBC
// Build a connection stringString connectionUrl= "jdbc:sqlserver://server.database.windows.net;" + "database=mydatabase;encrypt=true;user=user@server;password=*****";
// Next, make the sure the SQL Server Driver is loaded.Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); // Then attempt to get a connection. This will null or throw if we can't get a connection.
Connection sqlConn = DriverManager.getConnection(connectionUrl);if (sqlConn == null){ System.out.println("Unable to obtain connection. exiting"); System.exit(1);}
// Got a connection, do what you will
// Free the connection sqlConn.close();
Diversos mecanismos de migração de dados para o SQL Azure− SQL Server BCP Utility− SQL Server Integration Services (SSIS)− Import and Export Data− SQL Server Management Studio
(SSMS). − Bulk Copy API (exemplo, SQL Azure
Migration Wizard)− Server Migration Assistant (SSMA)
− http://blogs.msdn.com/ssma/
bcp AdventureWorksLTAZ2008R2.SalesLT.Customer in C:\load\MoveDataToSQLAzure.txt -b100 -c -U username@servername -S tcp:servername.database.windows.net -P password
Usando o BCP Utility− Usar opção –b (número de rows)
menor, para migração de tabelas com linhas muito grandes.
− BCP Utility Upload in SQL Azure− http://blogs.msdn.com/b/sqlazure/archive/
2010/06/04/bcp-utility-upload-errors-in-sql-azure.aspx
Configurando SSMS 2008 R2 para geração de scripts do SQL Azure
Tipo de Engine para SQL Azure
SQL Azure Migration Wizard
− Cenário− Migração de schema e/ou dados com controle
fino.− Prós
− SQL Azure Compatibility Analysis− Usa APIs SMO e BCP performáticas− Trabalha com clustered index creation− Cria batch scripts (ótimo para Testes & QA)
− Contras− Dados BCP armazenados num arquivo local− SQL Engine TSQL Parser incompleto
−Não é suportado pela Microsoft
http://sqlazuremw.codeplex.com/
Criando uma conexãocom o SQL Azure
ASP.NET Web Role acessando SQL Azure
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).
− Verificar se as conexões estão válidas antes de retornar para a aplicação.
− Fechar conexões manualmente em sua aplicação.
Introdução ao SQL Azure
Waldemir CambiucciArquiteto de Soluções
Microsoft Brasilhttp://twitter.com/wcamb/
http://blogs.msdn.com/wcamb/
lab #05
© 2010 Microsoft Corporation. All rights reserved. Microsoft, MSDN, the MSDN logo, and [list other trademarks referenced] are trademarks of the Microsoft group of companies. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond
to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation.
MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED, OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
Top Related