Artigo do tipo Tutorial
Recursos especiais neste artigo:
Artigo no estilo Solução Completa
Porque esse artigo é útil
O Windows Azure SQL Database conta com as principais funcionalidades do SQL Server convencional, oferecendo o acesso a bancos de dados na nuvem em um ambiente que prima pela estabilidade e segurança. Além de contribuir para uma maior agilidade na implementação de novos projetos de software (já que a infraestrutura deixa de ser uma grande preocupação ao contratar este serviço), a opção em prol do Windows Azure SQL Database pode ainda resultar numa redução significativa de gastos associados à aquisição de novos equipamentos, licenças e ao pagamento de mão de obra especializada.

Bancos de dados relacionais representam, sem sombra de dúvidas, um elemento de fundamental importância no processamento dos mais variados tipos de informações. Utilizados em larga escala ao longo das três últimas décadas, sistemas gerenciadores de bancos de dados (SGBDs) revolucionaram a maneira como os dados são manipulados por companhias de diferentes portes e segmentos. A ampla aceitação desta tecnologia foi possível graças à possibilidade de controlar grandes volumes de informações, bem como por ter viabilizado a realização de análises gerenciais outrora impensáveis (como no caso de aplicações de Business Intelligence – BOX 1).

Apesar de todos os benefícios mencionados, o uso de SGBDs relacionais está costumeiramente associado a investimentos constantes (e crescentes) em suporte e infraestrutura de hardware. Tais esforços buscam garantir a continuidade das operações cotidianas, sobretudo diante do papel-chave que as informações adquiriram nas mais diversas organizações.

Contudo, esse tipo de cenário não é exclusividade da área de bancos de dados. Servidores de aplicações, dispositivos de armazenamento (tanto de arquivos, quanto de grandes volumes de dados) e mecanismos para gerenciamento de conteúdo são alguns exemplos de serviços que costumam consumir parcelas significativas do orçamento estipulado para a área de tecnologia em empresas e órgãos governamentais.

O conceito conhecido como “cloud computing” (algo equivalente em português a “computação nas nuvens”) vem ganhando força nos últimos anos. Em termos práticos, cloud computing corresponde a um padrão arquitetural em que recursos são oferecidos por provedores especializados, com a cobrança de tais serviços se fazendo mediante contratos que regulam o preço e o nível de utilização dos mesmos.

A própria Microsoft também não ficou alheia a esta tendência: no segundo semestre de 2008 seria lançado o Windows Azure, atualmente uma das mais completas plataformas de cloud computing disponíveis no mercado.

A meta deste artigo é descrever, em termos gerais, as características do serviço de cloud computing do Windows Azure que possibilita a manipulação de bases de dados relacionais: trata-se do Windows Azure SQL Database. Após isto, será demonstrado como este recurso pode ser utilizado, considerando para isto a construção de uma aplicação MVC de exemplo que acessará uma base de dados na nuvem.

BOX 1. Business Intelligence

BI é um conjunto de técnicas que envolvem a coleta, o processamento e a geração de informações a partir de dados gerados em operações cotidianas de uma organização. Este tipo de procedimento busca, a partir de tais práticas, prover análises que auxiliem profissionais de gestão em atividades relacionadas à tomada de decisões.

Visão geral sobre Cloud Computing

Conforme já mencionado anteriormente, cloud computing é um modelo arquitetural em que serviços de software e infraestrutura são oferecidos remotamente, com o acesso a tais funcionalidades acontecendo por meio da Internet. A cobrança pelos recursos disponibilizados na nuvem por um fornecedor costuma envolver um acordo em que estabelecem os níveis de uso: o cliente pagará então pela utilização daquilo que escolher e, na eventualidade de estourar limites pré-estabelecidos, valores adicionais muito provavelmente serão cobrados.

Tomando como parâmetro o fato de estarem ou não situadas na nuvem, aplicações computacionais podem ser classificadas em dois grupos principais:

· On-premise: soluções mantidas dentro de uma organização, por meio de recursos de infraestrutura próprios;

· Off-premise: softwares e serviços localizados na nuvem, em data centers controlados pelos fornecedores de tais funcionalidades.

São diversos os motivos que contribuem para que as mais variadas organizações optem por soluções de cloud computing:

· A necessidade constante em reduzir os pesados e crescentes custos atrelados à infraestrutura básica de TI (equipamentos, licenças, além dos gastos comumente associados a instalações, energia elétrica e pessoal qualificado);

· Uma maior agilidade na implementação de novos projetos de software, já que aspectos relacionados à infraestrutura podem ser relegados a um segundo plano;

· A busca por um ambiente que assegure uma alta disponibilidade. Na eventualidade de um servidor falhar, por exemplo, espera-se que o provedor de um serviço de cloud computing conte com alternativas (como um servidor redundante) que prontamente solucionem problemas deste tipo;

· A questão conhecida como escalabilidade, a qual se refere à capacidade da infraestrutura empregada ser capaz de se comportar de forma satisfatória mediante níveis crescentes de utilização de um serviço. É bastante comum que soluções de cloud computing ofereçam alternativas bastante flexíveis neste sentido, fazendo uso para isto de novos servidores, garantindo um maior espaço de armazenamento ou ainda, empregando mecanismos para balanceamento de carga (load balancing);

· O pagamento por aquilo que realmente se utiliza, com a possibilidade de reduzir a estrutura empregada em períodos com uma menor demanda.

O Windows Azure SQL Database

O Windows Azure SQL Database foi implementado com base nas mesmas tecnologias que compõem a versão on-premise do SQL Server, muito embora possua algumas limitações em relação a esta última (uma discussão a respeito disto acontecerá na próxima seção).

A Microsoft disponibiliza duas versões para uso do Azure SQL Database:

· Web Edition Database: voltada a aplicações que façam uso de menores volumes de dados, com suporte para a criação de bancos de dados com tamanhos de 1 ou 5 GB;

· Business Edition Database: indicada para soluções corporativas que manipulem maiores volumes de informação. Esta versão contempla bases de dados com 10, 20, 30, 40, 50, 100 ou até 150 GB de tamanho.

O acordo de uso pelos serviços do Windows Azure SQL Database prevê o pagamento de uma taxa mensal. Em se tratando de aplicações on-premise (externas) acessando bancos relacionais na nuvem, está prevista ainda a cobrança de uma taxa adicional com base no volume dos dados transferidos para fora da plataforma Azure.

Sendo uma solução de cloud computing, o Azure SQL Database foi projetado de forma a apresentar garantias de um comportamento adequado no que se refere a aspectos como alta disponibilidade e escalabilidade. Conceitos típicos de produtos em conformidade com o modelo relacional como o armazenamento de dados sob a forma de tabelas, mecanismos de controle transacional e as propriedades ACID (BOX 2) também são válidos dentro da plataforma Windows Azure.

BOX 2. ACID

Todo banco de dados relacional que possibilite o uso de transações deve ser implementado seguindo um conjunto de características conhecido como ACID, com este termo sendo uma sigla do inglês “Atomicity, Consistency, Isolation, Durability”.

O conceito de Atomicidade determina que um conjunto de ações seja processado como uma unidade: se executado com sucesso, todas as modificações deverão ser persistidas no banco de dados; caso contrário, os resultados de todas as instruções já processadas e anteriores a um possível erro serão descartados.

Já a ideia de Consistência estipula que o resultado das diferentes instruções contidas em uma transação somente será efetivado em um banco de dados caso não sejam detectadas inconsistências (como a violação de chaves primárias e/ou estrangeiras ou, mesmo, condições que não estejam em conformidade com restrições definidas na base em questão).

O princípio do Isolamento estabelece que as ações desencadeadas por uma transação ainda ativa não estejam disponíveis para outras transações num estado de execução em paralelo.

Por fim, o conceito de Durabilidade prevê que tão logo uma transação tenha sido efetivada, o resultado da mesma esteja disponível para a realização de ações subsequentes sobre a base de dados.

Assim como acontece no SQL Server, o Azure SQL Database baseia-se na linguagem conhecida como Transact-SQL (ou simplesmente “T-SQL”) para a manipulação de dados e objetos armazenados em um banco de dados. É importante destacar que T-SQL nada mais é do que uma extensão do padrão SQL, englobando tanto os diversos comandos que compõem esta linguagem (como SELECT, INSERT, UPDATE e DELETE), quanto mecanismos específicos criados pela Microsoft e voltados à programação procedural (como estruturas condicionais e laços de repetição, por exemplo).

Elementos como stored procedures, triggers, funções, views, tabelas temporárias locais e transações podem ser utilizados em bancos de dados criados na plataforma Azure sem grandes dificuldades. Logo, toda a experiência acumulada na implementação de projetos baseados no SQL Server não será perdida ao migrar para a nuvem.

Do ponto de vista prático, servidores e bases criados na nuvem são apenas abstrações, não correspondendo à estrutura física presente nos data centers sob controle da Microsoft.

A administração de bancos de dados criados a partir do Azure SQL Database continua a contemplar tarefas tradicionais como a análise de índices, estatísticas relativas à utilização de uma base, a criação e manutenção de usuários e seus respectivos direitos de acesso, dentre outras ações. Tais procedimentos podem ser realizados a partir das seguintes ferramentas:

· Por meio do aplicativo SQL Server Management Studio das versões 2008 R2 e 2012 do SQL Server;

· Através do aplicativo de linha de comando SQLCMD;

· Dentro do Visual Studio 2010 ou 2012, a partir da janela Server Explorer;

· Acessando as funcionalidades do site de gerenciamento do Windows Azure.

No entanto, atividades como a alocação de recursos de hardware, configurações de servidores e questões envolvendo armazenamento são competências exclusivas da Microsoft como fornecedora do Windows Azure SQL Database.

O acesso a dados armazenados em bases do Windows Azure SQL Database segue o mesmo padrão do SQL Server. Isto acontece através de um protocolo chamado Tabular Data Stream (TDS), característica esta que garante que bancos de dados na nuvem sejam compatíveis com mecanismos como o ADO.NET e ODBC. Esse processo de comunicação também faz uso do padrão de segurança SSL (Security Sockets Layer), como medida de que visa garantir a integridade e confidencialidade dos dados trafegados.

Soluções ORM (BOX 3) como o Entity Framework, o Enterprise Library e o NHibernate também podem ser empregadas em projetos que consumam dados disponibilizados pelo serviço Azure SQL Database. Isto se deve ao fato de que tais frameworks foram implementados a partir de recursos disponibilizados pela tecnologia ADO.NET. É possível ainda que sistemas construídos nas plataformas Java (através de um driver JDBC) e PHP acessem bases relacionais criadas dentro do Windows Azure.

Atualmente, aplicações que utilizem o Windows Azure SQL Database podem fazer uso das seguintes versões de drivers, frameworks e bibliotecas de acesso a dados:

· O .NET Framework Data Provider for SQL Server (classes da plataforma .NET que se encontram no namespace System.Data.SqlClient) a partir do .NET Framework 3.5 Service Pack 1;

· O Entity Framework a partir do .NET Framework 3.5 Service Pack 1;

· Os drivers SQL Server 2008 R2 Native Client ODBC e SQL Server 2008 Native Client ODBC (este último com algumas restrições);

· Versões atualizadas do SQL Server JDBC Driver 3.0 que suportem o Azure SQL Database;

· O SQL Server 2008 Driver for PHP a partir da versão 1.1.

BOX 3. ORM

Frameworks ORM (“Object-relational mapping” ou “Mapeamento objeto relacional”) permitem que estruturas de bancos de dados (como tabelas e views) sejam representadas como classes em um software. Alguns exemplos de mecanismos ORM de larga utilização são o Entity Framework (que também integra a plataforma .NET) e o NHibernate (ferramenta gratuita baseada no Hibernate da plataforma Java).

...

Quer ler esse conteúdo completo? Tenha acesso completo