35
Introdução ao SQL Azure Waldemir Cambiucci Arquiteto de Soluções Microsoft Brasil http://twitter.com/wcamb/ http://blogs.msdn.com/wcamb/ Módulo 6

Módulo 6. Um banco de dados relacional na nuvem

Embed Size (px)

Citation preview

Page 1: Módulo 6. Um banco de dados relacional na nuvem

Introdução ao SQL Azure

Waldemir CambiucciArquiteto de SoluçõesMicrosoft Brasilhttp://twitter.com/wcamb/ http://blogs.msdn.com/wcamb/

Módulo 6

Page 2: Módulo 6. Um banco de dados relacional na nuvem

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.

Page 3: Módulo 6. Um banco de dados relacional na nuvem

RECURSOS DO SQL AZURE

Um banco de dados relacional na nuvem

Page 4: Módulo 6. 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

Page 5: Módulo 6. Um banco de dados relacional na nuvem

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

Page 6: Módulo 6. Um banco de dados relacional na nuvem

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.

Page 7: Módulo 6. Um banco de dados relacional na nuvem

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)

Page 8: Módulo 6. Um banco de dados relacional na nuvem

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

Page 9: Módulo 6. Um banco de dados relacional na nuvem

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

Page 10: Módulo 6. Um banco de dados relacional na nuvem

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

Page 11: Módulo 6. Um banco de dados relacional na nuvem

Alterando o tamanho da base SQL Azure

http://msdn.microsoft.com/en-us/library/ff394109.aspx

Page 12: Módulo 6. Um banco de dados relacional na nuvem

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.

Page 13: Módulo 6. Um banco de dados relacional na nuvem

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

Page 14: Módulo 6. Um banco de dados relacional na nuvem

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.

Page 15: Módulo 6. Um banco de dados relacional na nuvem

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.

Page 16: Módulo 6. Um banco de dados relacional na nuvem

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

Page 17: Módulo 6. Um banco de dados relacional na nuvem

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

Page 18: Módulo 6. Um banco de dados relacional na nuvem

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.

Page 19: Módulo 6. Um banco de dados relacional na nuvem

Demo de Particionamento – Sharding − Scaling Out SQL Azure with Database

Sharding− C:\WindowsAzureTrainingKit - Sep2010\

Demos\SQLAzureScalingOutWithDbShardingVS2010

Page 20: Módulo 6. Um banco de dados relacional na nuvem

Recomendações para desenvolvimento

SQL Azure

Page 21: Módulo 6. Um banco de dados relacional na nuvem

Recomendações para Desenvolvimento− Não deixe de checar sua conectividade

antes de começar o desenvolvimento ou administração do SQL Azure.

Page 22: Módulo 6. Um banco de dados relacional na nuvem

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

Page 23: Módulo 6. Um banco de dados relacional na nuvem

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

Page 24: Módulo 6. Um banco de dados relacional na nuvem

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); }}

Page 25: Módulo 6. Um banco de dados relacional na nuvem

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);?>

Page 26: Módulo 6. Um banco de dados relacional na nuvem

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();

Page 27: Módulo 6. Um banco de dados relacional na nuvem

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/

Page 28: Módulo 6. Um banco de dados relacional na nuvem

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

Page 29: Módulo 6. Um banco de dados relacional na nuvem

Configurando SSMS 2008 R2 para geração de scripts do SQL Azure

Tipo de Engine para SQL Azure

Page 30: Módulo 6. Um banco de dados relacional na nuvem

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/

Page 31: Módulo 6. Um banco de dados relacional na nuvem

Criando uma conexãocom o SQL Azure

Page 32: Módulo 6. Um banco de dados relacional na nuvem

ASP.NET Web Role acessando SQL Azure

Page 33: Módulo 6. Um banco de dados relacional na nuvem

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.

Page 34: Módulo 6. Um banco de dados relacional na nuvem

Introdução ao SQL Azure

Waldemir CambiucciArquiteto de Soluções

Microsoft Brasilhttp://twitter.com/wcamb/

http://blogs.msdn.com/wcamb/

lab #05

Page 35: Módulo 6. Um banco de dados relacional na nuvem

© 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.