SQL Azure ou SQL Server: Qual é o mais adequado para sua empresa?

SQL Azure ou SQL Server? qual é a melhor opção para sua empresa? Quais a vantagens e desvantagens de cada um?

Ao longo dos últimos anos, a Microsoft tem se concentrado mais na computação e armazenamento em nuvem, em uma tentativa de ter uma participação de mercado substancial dentro de um comércio competitivo e lucrativo.

Para este fim, ela veio com muitos produtos projetados para a nuvem, e um desses produtos é o Azure SQL.

O Azure SQL é um serviço baseado em nuvem construído ao longo das linhas do SQL Server, e por isso compartilha muitos recursos com o SQL Server.

Vamos analisar detalhadamente como esses dois sistemas de banco de dados se comparam e qual dos dois é o melhor em situações diferentes.

Diferenças entre o SQL Server e o Azure SQL

Como o SQL do Azure é baseado no SQL Server, eles compartilham muitas semelhanças em funcionalidade e compatibilidade.

Mas isso não significa que eles são iguais.

De fato, ao contrário do que muitos pensam, o SQL do Azure não é exatamente a versão em nuvem do SQL Server porque existem muitas diferenças fundamentais entre os dois.

Antes de passar para as diferenças exatas, é imperativo entender um aspecto fundamental.

No SQL Server, os bancos de dados são a única entidade no servidor de banco de dados, mas no SQL Azure, um único banco de dados pode hospedar bancos de dados de diferentes clientes.

Em outras palavras, o Azure SQL é multi locatário e compartilha seus recursos físicos com todos os clientes que usam esse serviço.

Agora que compreendemos esta diferença fundamental, vamos passar para as outras.

Arquitetura 

O Azure SQL foi projetado para que os desenvolvedores do SQL possam usá-lo facilmente para comunicação e autenticação.

É por isso que não há muita diferença em termos de programação.

Em muitos casos, você terá que simplesmente alterar o valor de um parâmetro na corda de conexão para acessar o Azure SQL. É muito simples.

Dito isto, há uma grande diferença na comunicação. No Servidor SQL, seu aplicativo conversa diretamente com o servidor pela LAN e usa o protocolo Tabular Data Stream (TDS) sobre TCP/IP ou HTTP.

Além disso, ele pode se comunicar em qualquer porta configurável e realmente não requer segurança de transporte.

Porém, no SQL Azure, seu aplicativo deve fazer uma chamada explícita, de preferência através do firewall da sua rede, e essa chamada pode acessar o Gateway do Azure apenas pela Internet.

Portanto, o SQL do Azure usa apenas o protocolo TCP / IP para comunicação.

No Gateway, há outro firewall chamado firewall SQL Azure que permite apenas os endereços IP que você definiu explicitamente para obter acesso.

Depois de passar por esse firewall, sua chamada faz a conexão com o nó de dados backend usando gateway como proxy.

Para cobri-lo, todas as comunicações acontecem apenas através de SSL e passa apenas pela porta 1433.

Se você comparar os dois, saberá que o SQL do Azure tem uma arquitetura mais complicada e é porque aceita conexões pela Internet e também atende a vários clientes.

Linguagem de definição de dados – SQL Azure ou SQL Server?

Linguagem de definição de dados, ou DDL em suma, é uma sintaxe usada para criar e alterar a estrutura dos objetos de banco de dados.

O Azure SQL não fornece suporte para determinados recursos por causa de sua arquitetura e pelo fato de não ter acesso a uma plataforma de hardware subjacente.

Ambos os bancos de dados diferem das seguintes maneiras:

Tempo de execução da linguagem comum – SQL Azure ou SQL Server

O SQL Azure não suporta tempo de execução de linguagem comum (CLR). Isso significa que visualizações do sistema, procedimentos armazenados, gatilhos e funções definidas pelo usuário não estão disponíveis no Azure.

Esta limitação é por causa da natureza multilocatária do Azure.

Ele tem como objetivo proteger um usuário de usar acidentalmente ou intencionalmente os objetos CLR de outras pessoas no mesmo servidor.

Procedimentos armazenados alargados e partição de tabelas

Os procedimentos armazenados estendidos são rotinas armazenadas em DLLs.

Escritas em idiomas C ou C++, esses procedimentos armazenados usam a API de Serviços de Dados Abertos para obter parâmetros e retornar resultados.

A partição de tabela é outro recurso no SQL Server que espalha dados de tabela ou índice em vários grupos de arquivos dentro do mesmo banco de dados para melhorar o desempenho.

O SQL Azure não suporta esses dois recursos.

Índices agrupados

Os índices agrupados alteram a ordem em que os registros são armazenados em um banco de dados físico. Isso significa que uma tabela pode ter apenas um índice agrupado.

No SQL Server, ter um índice agrupado é opcional.

No SQL Azure, todas as tabelas devem ter um índice agrupado. Se não, as operações de INSERT falham.

Mais uma vez, isso se resume à arquitetura do Azure e sua falta de apoio para mesas de pilha.

Se você tiver que migrar seus dados do SQL Server para o SQL Azure, planeje criar índices agrupados para tabelas que não os tenham.

Tipos de dados

O SQL Azure suporta todos os tipos de dados suportados pelo SQL Server, incluindo os especializados, como tipos de dados espaciais. No entanto, o Azure não suporta a indexação XML.

Espelho de banco de dados e clustering de falhas

O SQL Azure não suporta espelhamento de banco de dados e clustering de falhas.

Se você está se perguntando o porquê, é porque o SQL Azure é construído na plataforma Windows Azure que oferece alta disponibilidade! Assim, cada banco de dados de usuários é replicado duas vezes em dois nós diferentes. Quando o primeiro nó cai, uma das duas réplicas assume.

É por isso que ele não precisa de um clustering de falha explícita como o SQL Server.

Linguagem de manipulação de dados

Linguagem de manipulação de dados (DML) é uma linguagem usada para a realização de operações básicas (criar, atualizar e excluir) em qualquer aplicativo.

O SQL Azure não suporta certos comandos que estão disponíveis no servidor SQL Server, e eles são:

  • MAXDOP é sempre 1
  • PAGLOCK
  • REMOTE
  • Não há suporte para pesquisa de texto completo usando CONTAINS e FREETEXT
  • Não apoia BULK INSERT
  • Não há suporte para ROW definir funções como CONTAINSTABLE, FREETEXTTABLE, OPENQUERY e OPENXML.

Implantação

Como o SQL Azure é uma entidade lógica e não física, a arquitetura de implantação é diferente quando comparada ao servidor SQL. Neste banco de dados em nuvem, existem três entidades – assinatura, servidor e banco de dados.

  • A assinatura é a sua plataforma Windows Azure e os serviços que fazem parte dela. Esta entidade determina o contexto para faturamento
  • Servidor significa um agrupamento lógico de bancos de dados que compartilham um datacenter comum.
  • O banco de dados é uma representação lógica de um banco de dados, que existe como uma partição dentro de um banco de dados do servidor SQL.

Recursos não suportados

Há também muitos recursos do SQL Server que não são suportados pelo SQL Azure, e eles são:

  1. Serviços de dados mestres
  2. Anexar um banco de dados
  3. Alterar a captura de dados
  4. Auditoria de dados
  5. Governador de recursos
  6. Serviço de qualidade de dados (DQS)
  7. Snapshots de dados
  8. Compressão de dados
  9. Navegador do servidor SQL
  10. Transações distribuídas
  11. Procedimentos armazenados estendidos
  12. Filestream
  13. Registro mínimo na importação em massa
  14. Polybase
  15. Gestão baseada em políticas
  16. Busca semântica
  17. Serviços de relatórios de servidores SQL
  18. Sinalizadores de rastreamento

A partir da discussão acima, é claro que o SQL Azure é um subconjunto de SQL Server, e vem com muitas limitações por causa de sua arquitetura.

Então, por que no alguém no mundo iria usá-lo em vez do SQL Server totalmente caracterizado?

Muito mais do que um banco de dados

A Microsoft tem grandes ambições para o Azure em geral e para o SQL Azure em particular. Eles querem criar não apenas um banco de dados em nuvem, mas uma infraestrutura para dados em escala petabyte.

Isso significa que o SQL Azure não é apenas para hoje, mas é mais voltado para o futuro quando a nuvem será onipresente.

Então, se você está planejando uma infraestrutura a longo prazo, SQL Azure é uma boa escolha.

Fácil gestão e administração

Se você já usou o SQL Server, você já sabe como é difícil configurá-lo e administrá-lo.

Repartir bancos de dados e trabalhar em torno de sistemas físicos é um aborrecimento, para dizer o mínimo.

Quando este trabalho é feito por alguma outra pessoa, você pode se concentrar em outro trabalho produtivo e é muito menos dor de cabeça para você.

Alta disponibilidade

Outra razão importante para usar o SQL Azure é a sua alta disponibilidade.

A plataforma Azure, em geral, é conhecida por este aspecto. Como o SQL Azure se baseia nisso, a alta disponibilidade é garantida.

Continuidade dos negócios

O SQL do Azure faz backup automaticamente do banco de dados e do log de transações periodicamente, como parte de sua estratégia de continuidade de negócios.

Ele usa acesso geo-redundante (RA-GRS) para fornecer redundância geográfica. Esta opção de backup oferece durabilidade inter-geográfica, para que não haja perda de dados.

Além disso, você pode restaurar o banco de dados a qualquer momento, em caso de exclusões acidentais.

Também durante interrupções regionais, você pode restaurar o banco de dados de uma região diferente. Essa facilidade de backup e restauração é mais um motivo para usar o SQL do Azure.

Escalabilidade fácil

A Microsoft empreendeu esforços consideráveis para tornar o SQL Azure atraente para pequenas e grandes empresas.

Eles a criaram de tal maneira que a arquitetura pode ser escalada para atender às diferentes necessidades de negócios.

Além disso, a estrutura de preços é baseada no uso, para que as empresas possam escolher seu nível de uso e pagar de acordo.

Além disso, os aplicativos escritos para qualquer banco de dados podem ser dimensionados com o SQL Azure, já que a Microsoft fornece uma infraestrutura de federações para tornar esse processo de dimensionamento menos impactante nos usuários.

Agora, isso não significa que o SQL Azure seja ideal em todas as situações.

Muitos recursos do SQL não são implementados nesta versão em nuvem e por boas razões.

Portanto, se esses recursos são importantes para você, o SQL Server é sua melhor escolha.

Então agora você sabe: o SQL Azure é um serviço de banco de dados baseado em nuvem que é um subconjunto do servidor SQL.

As diferenças na arquitetura desses dois bancos de dados os tornam ideais para diferentes cenários e configurações.

Como usuário,  se você quiser um banco de dados altamente disponível e escalável e não planeja usar todos os recursos abrangentes do SQL server, sua opção é o SQL Azure.

Por outro lado, se o conjunto massivo de recursos do SQL Server for necessário para sua organização, escolha a versão completa de todos os modos.

Artigo retirado da techgenix e traduzido para o português de acordo com as normas da linguagem, Confira o artigo original(em inglês) neste link: http://techgenix.com/azure-sql-or-sql-server-which-one-is-right-for-you/