módulo 6. um banco de dados relacional na nuvem

Post on 30-Mar-2015

223 Views

Category:

Documents

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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