SQL Azure Database – Um banco de dados relacional na nuvem

Olá pessoal, tudo certo?

A computação em nuvem (ou cloud computing) tem sido um assunto importante no mundo da tecnologia da informação, seja pela oportunidade de redução de custos em TI, para cenários corporativos, ou pelo poder de computação e alta disponibilidade via internet que oferece para usuários finais e empresas.

Neste contexto, a Microsoft apresentou para o mercado um novo sistema operacional chamado Windows Azure (em outubro de 2008) que oferece uma plataforma (PaaS – Platform as a Service) como serviço, a partir de datacenters da Microsoft espalhados pelo mundo. Além dos recursos nativos do Windows Azure, a plataforma oferece ainda uma série de serviços que capacitam as aplicações com bancos de dados, barramentos de serviços, mecanismos para controle de acesso, suporte ao modelo de software como serviço (SaaS – Software as a Service), entre outros recursos.

Dentro da plataforma Azure, o SQL Azure é um conjunto de serviços que implementa as capacidades de processamento e armazenamento de dados na nuvem. Através das capacidades do SQL Azure, as aplicações podem aproveitar recursos como persistência de dados, business intelligence (BI), sincronização, replicação de dados, relatórios, data mining, etc., a partir de uma infraestrutura de alta escalabilidade e provisionamento dinâmico, características nativas de um ambiente em nuvem.

Entre os benefícios do SQL Azure podemos destacar seu modelo de programação simétrico, que permite ao desenvolvedor trabalhar com o ambiente SQL Server 2008 local (on-premise) e o ambiente de dados na nuvem da mesma forma, aproveitando os mesmo recursos do .NET Framework. Outro benefício do SQL Azure é permitir o foco na aplicação, uma vez que o administrador de dados ou DBA não precisará se preocupar com atividades relacionadas diretamente à infraestrutura do ambiente, como:

  • Compra de repositório e espaço de armazenamento de dados para seu datacenter;
  • Configuração física e lógica de repositórios;
  • Dimensionamento de servidores;
  • Instalação e atualização de software de bancos de dados;
  • Diagnóstico e resolução de falhas de hardware, etc.;

O principal serviço do SQL Azure é o SQL Azure Database (SAD), responsável pela persistência de dados com suporte relacional. O suporte relacional foi um dos principais pedidos do mercado para os times de produto da Microsoft, ao longo do desenvolvimento do serviço. Além do suporte ao modelo relacional, o serviço SQL Azure Database suporta o acesso direto via ADO.NET, da mesma forma como ocorre em aplicações locais acessando dados em um banco SQL Server 2008, ou seja, de forma transparente para o desenvolvedor.

Devido sua importância para a construção de aplicações locais e na nuvem, selecionei aqui alguns tópicos para esse artigo. Veremos aqui alguns detalhes sobre:

  • Provisionamento
  • Administração
  • Compatibilidade
  • Segurança
  • Conexão
  • Migração
  • Subscrição

Provisionamento
O SAD suporta um modelo de provisionamento baseado em contas, servidores e bases de dados, que permite ao usuário do serviço a criação de bases de dados de 1GB ou 10GB para armazenamento de dados. Podemos utilizar um servidor (SQL Azure Server) como nosso container principal para a construção de bases de dados (myDatabase), para nossas aplicações.

De modo simplificado, temos a seguinte organização para provisionamento de dados:

– Cada “Account” ou “Conta de Plataforma” possui zero ou mais servidores SQL Azure, permitindo a administração do ambiente via portal online. Uma conta de plataforma também funciona como instrumento para “billing” (cobrança) e controle de contabilidade e subscrição, lembrando que o serviço é contratado pelo usuário, sendo cobrado pelo uso.

– Cada “Servidor SQL Azure” tem um ou mais bancos de dados gerados pelo usuário. Isso significa que uma aplicação pode utilizar diversas bases de dados de um mesmo servidor SQL Azure, criadas pelo administrador da conta. O servidor SQL Azure ainda contém a base de metadados sobre as base de dados em uso, assim como os recursos de autenticação e geo-localização. Também é através dele que é feita a geração de nomes baseados em DNS para nossas bases de dados na nuvem.

– Finalmente, cada “Base de Dados” guarda os objetos SQL padrão, sendo a unidade de consistência e multi-tenancy da plataforma. Também contém Users, Tables, Views, Indices, etc, sendo a maior unidade em granularidade para cobrança sobre o serviço. Com o lançamento da plataforma em Novembro de 2009, durante o evento PDC – Professional Developers Conference, o SQL Azure trouxe ainda o suporte para a definição de faixas de endereços IP, oferecendo um nível de segurança adicional via firewall, para aplicações remotas consumindo os dados persistidos no SQL Azure. Desse modo, é possível definir faixas de endereços habilitados para o acesso ao banco no Azure.

Administração
A principal ferramenta de administração do SQL Azure Database é o portal online, disponível através do link:

Ref.: https://sql.azure.com/

O portal permite a criação de novas bases de dados, (botão Create Database), a eliminação de uma base desejada (botão Drop Database) e a definição das strings de conexão para as bases de dados (botão Connection Strings). Através deste portal, é possível a criação de uma nova base de dados a partir de duas edições disponívels:

  • SQL Azure Database Web Edition – com tamanho de 1 GB;
  • SQL Azure Database Business Edition – com tamanho de 10 GB;

Note que uma aplicação pode contratar um banco de dados SQL Azure Database de 1 GB ou de 10 GB, para persistência de dados relacionais. Pode ainda combinar diversas instâncias dessas bases conforme a necessidade, composição comum em cenários de soluções multi-inquilino.

A partir da criação das bases de dados na nuvem, teremos dois cenários possíveis de acesso aos dados:

  • a aplicação pode estar hospedada no Windows Azure, consumindo os dados diretamente do SQL Azure Database (cenário conhecido como Code Near);
  • ou a aplicação pode estar hospedada no ambiente local da empresa, fora do Windows Azure, consumindo os dados do SQL Azure Database via internet (cenário conhecido como Code Far).

O SQL Azure Database suporta os principais recursos de um banco de dados relacional como o SQL Server. Entre os principais benefícios temos o suporte ao protocolo TDS – Tabular Data Stream, que é o protocolo nativo de comunicação entre o cliente local e o próprio SQL Server. Atualmente o TDS é um protocolo bem documentado, usado por clientes Microsoft para a troca de dados com o SQL Server.

Além do supote ao TDS, o SQL Azure Database suporta os principais comandos T-SQL (Transact-SQL) de um ambiente de dados. Isso permite uma integração transparente de aplicações com o banco na nuvem.

Considerando cenários de acesso remoto, torna-se necessária a definição de faixas de endereços IP liberados para a conexão ao banco na plataforma Azure, para maior segurança dos dados. A partir da versão CTP 2 de Outubro de 2009, essa configuração de endereços IPs clientes é feita através do portal de administração online da plataforma. Ainda sobre o modelo de administração do serviço SQL Azure, durante o período de CTP, o portal de administração permitiu que vários usuários e empresas criassem bancos de dados para testes e exercícios sobre a plataforma.

Compatibilidade
Um dos grandes pontos de atenção para aplicações sobre o SQL Azure Database é a compatibilidade com comandos e objetos padrão do SQL, facilitando a migração de soluções e bases de dados para a nuvem. Nem todos os objetos SQL e comandos T-SQL são suportados. Os seguintes recursos T-SQL estão disponíveis com a versão 1.0 do SDK da plataforma:

  • Tables, indexes e views
  • Stored Procedures
  • Triggers
  • Constraints
  • Constants
  • Table variables, session temp tables, entre outros.

Da mesma forma, os seguintes recursos não são suportados, sendo previstos para versões futuras:

  • Distributed Transactions entre bases do SQL Azure;
  • Distributed Query;
  • CLR – Commun Language Runtime integrado ao banco de dados;
  • Mensageria com o Service Broker;
  • Tipos de dados Spatial;
  • System tables (tabelas de sistemas)
  • Trace Flags, entre os principais.

Você pode encontrar uma lista completa de recursos e compatibilidade para o serviço no link MSDN:

Ref.: http://msdn.microsoft.com/en-us/library/ms189826(SQL.90).aspx

Segurança
O modelo de segurança suportado pelo SQL Azure Database é baseado no padrão SQL Server Authentication, onde o usuário deve fornecer Username + Password para toda conexão com o SQL Azure.

O serviço também suporta a configuração de uma lista de endereços IP’s que podem acessar o servidor do SQL Azure Database de forma remota. Nesse contexto, dois aspectos são importantes para o serviço:

  • O SQL Azure está acessível apenas através da porta TCP 1433;
  • Antes do primeiro acesso, precisamos definir a lista de endereços IP’s através do portal de administração do SQL Azure.

Conexão
As aplicações cliente podem se conectar às bases de dados do SQL Azure Database utilizando os seguintes provedores suportados:

  • .NET Framework Data Provider for SQL Server (System.Data.SqlClient) do .NET 3.5 SP 1
  • SQL2008 Native Client ODBC driver.
  • SQL2008 Driver for PHP version 1.1.
  • TDS (tabular data stream) v7.3 ou superior.

Essa lista de provedores amplia o número de cenários de aplicações que podem aproveitar os recursos do SAD, oferecendo uma grande flexibilidade para desenvolvedores software. Vale destacar ainda que na atual versão do SQL Azure Database, o OLE DB não é suportado para conexão de clientes.

Podemos manipular nossa base de dados no SQL Azure Database via ADO.NET, de forma transparente e a partir de nossas aplicações em .NET. Esse recurso permite a máxima integração de aplicações locais, executadas em nossa infraestrutura, persistindo dados no ambiente da nuvem, sobre o SQL Azure Database. Veja que cenários semelhantes podem ser obtidos a partir de aplicações hospedadas no próprio Windows Azure, como sites ASP.NET com AJAX (WEB ROLES) ou mesmo processos (WORKER ROLES) que façam parte de nossas aplicações hospedadas na nuvem.

Migração
A migração de soluções locais (on-premise) para o ambiente do SQL Azure Database passa pela criação da base na nuvem, assim como seus objetos SQL e upload de dados. A partir do Hands-on Lab do training kit de outubro para a plataforma Windows Azure, temos um laboratório que ilustra o processo de migração de bases e dados de forma manual, através da ferramenta SQL Server Management Studio.

Você encontra esse laboratório na pasta:

C:Azure Training Kit – CTP November 2009LabsMigratingDatabasesToSQLAzure

Outra ferramenta interessante para o processo de migração de bases locais para o SQL Azure Database é o projeto SQL Azure Migration Wizard, disponível para download a partir do CodePlex:

Ref.: http://sqlazuremw.codeplex.com/

Essa ferramenta implementa os principais ajustes necessários num script SQL para a subida automática de uma base de dados local para o SQL Azure Database.

Subscrição
O modelo de subscrição do serviço SQL Azure Database é baseado na contratação de bancos de 1 GB ou 10 GB, com os seguintes valores previstos:

  • Para a versão Web Editions: Banco de 1 GB = US$ 9.99 / mês
  • Para a versão Business Editions: Banco de 10 GB = US$ 99.99 / mês

O custo para o consumo de banda (Bandwidth) nas duas versões é o mesmo, sendo:

  • US$ 0.10 / GB inbound
  • US$ 0.15 / GB outbound

Ainda, podemos especificar o tamanho da base de dados através do atributo MAXSIZE do comando CREATE DATABASE, também via o portal. Uma vez contratado o tamanho da base, não podemos chaver entre Web e Business Editions, não sendo possível mudar o tamanho contratado.

Finalmente, as cobranças serão feitas mensalmente, consolidando todos os custos demandados pelo usuário e aplicações. Para maiores informações sobre licenciamento e subscrição de serviços da plataforma Azure, confira o link a seguir.

Ref.: http://www.microsoft.com/windowsazure/pricing/

Considerações Finais
Fizemos aqui apenas uma rápida visão sobre alguns dos tópicos sobre o SQL Azure Database. Nossas aplicações locais e na nuvem poderão aproveitar esse banco de dados relacional na nuvem conforme a necessidade, com os benefícios do provisionamento dinâmico e pagamento pelo uso, também para dados na nuvem (ou Database as a Service).

Podemos afirmar que a TI do futuro será cada vez mais híbrida, combinando recursos e dados locais com serviços e dados remotos, aproveitando a infraestrutura com provisionamento dinâmico e de alta escalabilidade oferecida por datacenters de útlima geração pelo mundo. Na plataforma Azure, por exemplo, todos os serviços publicados e consumidos deverão gerar informações estatísticas sobre utilização, logs de operação, acessos, que podem ser recuperados e monitorados como uma aplicação local. Por isso, as oportunidades serão enormes para as empresas, arquitetos, desenvolvedores e profissionais de TI.

Como apresentado durante o PDC09, a plataforma Windows Azure entrará em produção em 1 de janeiro e começará suas cobranças a partir de 1 de fevereiro de 2010. Até lá, vamos aproveitar para conhecer mais seus recursos e impacto para nossas soluções.

Referências e Links Importantes

Windows Azure Software Development Kit (November 2009)
Ref.: http://www.microsoft.com/downloads/details.aspx?familyid=772990DA-8926-4DB0-958F-95C1DA572C84&displaylang=en

Windows Azure Tools for Microsoft Visual Studio (November 2009)
Ref.: http://www.microsoft.com/downloads/details.aspx?familyid=6967FF37-813E-47C7-B987-889124B43ABD&displaylang=en

Windows Azure Platform Training Kit – November Update
Ref.: http://www.microsoft.com/downloads/details.aspx?familyid=413E88F8-5966-4A83-B309-53B7B77EDF78&displaylang=en

SQL Azure Migration Wizard v1.9.1
Ref.: http://sqlazuremw.codeplex.com/

SQL Azure Team Blog
Ref.: http://blogs.msdn.com/ssds

Webcast de Arquitetura sobre o SQL Azure Database
Ref.: http://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?culture=pt-BR&EventID=1032429365&CountryCode=BR

Posts sobre SQL Azure Database no blog WCAMB
Ref.: http://blogs.msdn.com/wcamb/archive/tags/SQL+Azure+Database/default.aspx

Por enquanto é só! Até a próxima!

Waldemir Cambiucci
Blog: http://blogs.msdn.com/wcamb/
Twitter: http://twitter.com/wcamb/

Waldemir Cambiucci

Mais artigos deste autor »

Waldemir Cambiucci ([email protected]) trabalha na Microsoft Brasil como arquiteto de soluções, com foco na comunidade de arquitetura e clientes corporativos. É graduado em Engenharia de Computação, mestre em Engenharia Elétrica e Pós-Graduado em Finanças e Administração. Com mais de 14 anos de experiência em TI, atua na Microsoft há 8 anos, tendo participado de projetos importantes no Brasil e no exterior. Waldemir tem sido palestrante em diversos eventos como Tech-Ed Brasil 2007/2008/2009/2010 e Conferências como Software+Service Day 2008/2009, Regional Architect Forum Brasil 2007/2008/2010, SOA Conference Brasil 2008/2009 e muitos outros. É ainda autor de diversos artigos publicados em revistas técnicas e conferências nacionais e internacionais. Seu blog é o http://blogs.msdn.com/wcamb e seu Twitter é http://twitter.com/wcamb/.


Deixe seu comentário

Seu endereço de e-mail não será publicado. Campos com * são obrigatórios!