Módulo 6. Um banco de dados relacional na nuvem.
-
Upload
ryley-spicer -
Category
Documents
-
view
222 -
download
2
Transcript of Módulo 6. Um banco de dados relacional na nuvem.
![Page 1: Módulo 6. Um banco de dados relacional na nuvem.](https://reader038.fdocument.pub/reader038/viewer/2022102814/551923f755034626428b4c0f/html5/thumbnails/1.jpg)
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.](https://reader038.fdocument.pub/reader038/viewer/2022102814/551923f755034626428b4c0f/html5/thumbnails/2.jpg)
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.](https://reader038.fdocument.pub/reader038/viewer/2022102814/551923f755034626428b4c0f/html5/thumbnails/3.jpg)
RECURSOS DO SQL AZURE
Um banco de dados relacional na nuvem
![Page 4: Módulo 6. Um banco de dados relacional na nuvem.](https://reader038.fdocument.pub/reader038/viewer/2022102814/551923f755034626428b4c0f/html5/thumbnails/4.jpg)
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.](https://reader038.fdocument.pub/reader038/viewer/2022102814/551923f755034626428b4c0f/html5/thumbnails/5.jpg)
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.](https://reader038.fdocument.pub/reader038/viewer/2022102814/551923f755034626428b4c0f/html5/thumbnails/6.jpg)
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.](https://reader038.fdocument.pub/reader038/viewer/2022102814/551923f755034626428b4c0f/html5/thumbnails/7.jpg)
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.](https://reader038.fdocument.pub/reader038/viewer/2022102814/551923f755034626428b4c0f/html5/thumbnails/8.jpg)
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.](https://reader038.fdocument.pub/reader038/viewer/2022102814/551923f755034626428b4c0f/html5/thumbnails/9.jpg)
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.](https://reader038.fdocument.pub/reader038/viewer/2022102814/551923f755034626428b4c0f/html5/thumbnails/10.jpg)
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.](https://reader038.fdocument.pub/reader038/viewer/2022102814/551923f755034626428b4c0f/html5/thumbnails/11.jpg)
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.](https://reader038.fdocument.pub/reader038/viewer/2022102814/551923f755034626428b4c0f/html5/thumbnails/12.jpg)
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.](https://reader038.fdocument.pub/reader038/viewer/2022102814/551923f755034626428b4c0f/html5/thumbnails/13.jpg)
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.](https://reader038.fdocument.pub/reader038/viewer/2022102814/551923f755034626428b4c0f/html5/thumbnails/14.jpg)
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.](https://reader038.fdocument.pub/reader038/viewer/2022102814/551923f755034626428b4c0f/html5/thumbnails/15.jpg)
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.](https://reader038.fdocument.pub/reader038/viewer/2022102814/551923f755034626428b4c0f/html5/thumbnails/16.jpg)
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.](https://reader038.fdocument.pub/reader038/viewer/2022102814/551923f755034626428b4c0f/html5/thumbnails/17.jpg)
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.](https://reader038.fdocument.pub/reader038/viewer/2022102814/551923f755034626428b4c0f/html5/thumbnails/18.jpg)
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.](https://reader038.fdocument.pub/reader038/viewer/2022102814/551923f755034626428b4c0f/html5/thumbnails/19.jpg)
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.](https://reader038.fdocument.pub/reader038/viewer/2022102814/551923f755034626428b4c0f/html5/thumbnails/20.jpg)
Recomendações para desenvolvimento
SQL Azure
![Page 21: Módulo 6. Um banco de dados relacional na nuvem.](https://reader038.fdocument.pub/reader038/viewer/2022102814/551923f755034626428b4c0f/html5/thumbnails/21.jpg)
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.](https://reader038.fdocument.pub/reader038/viewer/2022102814/551923f755034626428b4c0f/html5/thumbnails/22.jpg)
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.](https://reader038.fdocument.pub/reader038/viewer/2022102814/551923f755034626428b4c0f/html5/thumbnails/23.jpg)
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.](https://reader038.fdocument.pub/reader038/viewer/2022102814/551923f755034626428b4c0f/html5/thumbnails/24.jpg)
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.](https://reader038.fdocument.pub/reader038/viewer/2022102814/551923f755034626428b4c0f/html5/thumbnails/25.jpg)
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.](https://reader038.fdocument.pub/reader038/viewer/2022102814/551923f755034626428b4c0f/html5/thumbnails/26.jpg)
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.](https://reader038.fdocument.pub/reader038/viewer/2022102814/551923f755034626428b4c0f/html5/thumbnails/27.jpg)
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.](https://reader038.fdocument.pub/reader038/viewer/2022102814/551923f755034626428b4c0f/html5/thumbnails/28.jpg)
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.](https://reader038.fdocument.pub/reader038/viewer/2022102814/551923f755034626428b4c0f/html5/thumbnails/29.jpg)
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.](https://reader038.fdocument.pub/reader038/viewer/2022102814/551923f755034626428b4c0f/html5/thumbnails/30.jpg)
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.](https://reader038.fdocument.pub/reader038/viewer/2022102814/551923f755034626428b4c0f/html5/thumbnails/31.jpg)
Criando uma conexãocom o SQL Azure
![Page 32: Módulo 6. Um banco de dados relacional na nuvem.](https://reader038.fdocument.pub/reader038/viewer/2022102814/551923f755034626428b4c0f/html5/thumbnails/32.jpg)
ASP.NET Web Role acessando SQL Azure
![Page 33: Módulo 6. Um banco de dados relacional na nuvem.](https://reader038.fdocument.pub/reader038/viewer/2022102814/551923f755034626428b4c0f/html5/thumbnails/33.jpg)
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.](https://reader038.fdocument.pub/reader038/viewer/2022102814/551923f755034626428b4c0f/html5/thumbnails/34.jpg)
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.](https://reader038.fdocument.pub/reader038/viewer/2022102814/551923f755034626428b4c0f/html5/thumbnails/35.jpg)
© 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.