Criando um banco de dados Azure SQL Database

Olá pessoal, tudo certo?

Depois de um tempo sumido, estamos de volta…

Este tempo sumido é justificado por que estava tratando de novas oportunidades, mas agora estamos de volta e pra valer.

No SQL Saturday em BH, eu palestrei sobre a Plataforma de Dados no Azure, e fiquei devendo como criar um banco de dados SQL Database no Azure. Então o objetivo deste post é demonstrar como criar um banco de dados no Azure SQL Database.

O primeiro passo é criar uma conta no Azure, você pode criar uma conta e gratuita com R$ 670,00 reais e testar por 30 dias, para saber mais basta clicar aqui.

Depois da conta criada você precisa ter conhecimento da tabela de preços do SQL Database. Até o mês (05/2018) ele era comercializado somente em DTUs (unidade de transação de banco de dados), mas este calculo é muito complexo e sofre várias criticas dos usuários. Com isso a partir do mês (06/2018) você pode contratar o serviço utilizando o modelo baseado em vCore que ainda está em preview.

Diferenças entre DTU e vCore

O modelo baseado em DTU, representa a combinação de memória, cpu, leituras e gravação. Esse modelo oferece um conjunto de pacotes pré-configurados para impulsionar os diferentes tipos de necessidades do seu negocio.

Quando um cliente optar por contratar o serviço utilizando DTU, ele tem que ter em mente que ele não vai conseguir fazer customizações do tipo “Preciso de mais memória” ou “Preciso de mais CPU”, o pacote é personalizado, ou seja, se ele sentir que precisa de mais memória ele terá que aumentar a quantidade de DTU do seu SQLDatabase.

Outro ponto relacionado ao DTU, é que não existe uma métrica de equivalência de DTU, ou seja, você não consegue informar ao cliente quanto de CPU e Memória tem 1 DTU, essa é uma das grandes “criticas” que esse modelo sofre.

Quanto ao modelo de compra o modelo usando DTUs, os clientes tem três camadas se serviço para escolher: Basic, Standard e Premium, além da possibilidade de criar pools elásticos.

BasicStandardPremium
Carga de trabalho de destino Desenvolvimento e produçãoDesenvolvimento e produçãoDesenvolvimento e produção
SLA de tempo de atividade 99,99%99,99%99,99%
Retenção de backup 7 dias35 dias 35 dias
CPUBaixoBaixo, Médio, AltoMédio, Alto
Taxa de transferência de IO (aproximada) 2.5 IOPS por DTU2.5 IOPS por DTU48 IOPS por DTU
Latência de IO (aproximada)5 ms (leitura), 10 ms (gravação)5 ms (leitura), 10 ms (gravação)2 ms (leitura/gravação)
Indexação ColumnStoreN/DS3 e acima Com suporte
OLTP In-memoryN/D N/D Com suporte

Cada camada de serviço tem suas sub-camadas e limitações. Para saber mais informações sobre os limites de cada camada basta veja aqui.

Já o modelo baseado em vCore, foi disponibilizado no mês de Maio de 2018. Até o presente momento (03/07/2018) ele ainda está como preview (“como no Azure tudo muda muito rápido, pode ser que quando vocês estiverem lendo este post o modelo de comercialização já tenha sido lançado oficialmente”).

Um núcleo virtual representa a CPU lógica oferecida com uma opção para escolher entre gerações de hardware. Este modelo fornece flexibilidade, controle e transparência ao cliente, pois ele sabe exatamente o que ele está contratando em relação ao que ele está pagando. O modelo vCore permite ao cliente escalar cpu, memória e armazenamento com base nas necessidades de carga de trabalho. Você também pode criar pools estatístico utilizando o modelo vCore.

No modelo de compra baseado em vCore, os clientes pagam por:

  • CPU (camada de serviço + número de vCores + geração de hardware)*
  • Armazenamento
  • Números de IO
  • Armazenamento de backup (RA-GRS)

O modelo vCore basicamente se divide em duas camadas: a de Uso Geral e Uso Critico.

Uso geralUso Critico
Mais adequado paraA maioria das cargas de trabalho comerciais. Oferece opções de armazenamento e computação escalonáveis e equilibradas orientadas a orçamento.Aplicativos de negócios com altos requisitos de IO. Oferece maior resiliência a falhas usando várias réplicas isoladas.
CPU1 a 80 vCores, Gerações 4 e 51 a 80 vCores, Gerações 4 e 5
Memória7 GB por núcleo7 GB por núcleo
ArmazenamentoArmazenamento remoto Premium, 5 GB – 4 TBArmazenamento SSD local, 5 GB – 4 TB
Taxa de transferência de IO (aproximada)500 IOPS por vCore com máximo de 7.000 IOPS5.000 IOPS por núcleo com máximo de 200.000 IOPS
Disponibilidade1 réplica, sem escala de leitura3 réplica, 1 escala de leitura, HA com redundância de zona
BackupsRA-GRS, 7-35 dias (7 dias por padrão)RA-GRS, 7-35 dias (7 dias por padrão)*
In-MemoryN/D Com suporte

* Durante a versão prévia, o período de retenção de backups não é configurável e é fixado em 7 dias.

Existem algumas considerações relacionadas ao armazenamento:

  • O armazenamento alocado é usado por arquivos de dados (MDF) e arquivos de log (LDF).
  • Cada nível de desempenho dá suporte a um tamanho máximo de banco de dados, com um tamanho máximo padrão de 32 GB.
  • Ao configurar o tamanho do banco de dados necessário (tamanho do MDF), será adicionado automaticamente 30% do tamanho do MDF para dar suporte ao LDF.
  • É possível selecionar qualquer tamanho de banco de dados entre 10 GB e o máximo com suporte
    • Para armazenamento Standard, aumente ou diminua o tamanho em incrementos de 10 GB
    • Para armazenamento Premium, aumente ou diminua o tamanho em incrementos de 250 GB
  • Na camada de serviço de Uso Geral, o tempdb usa um SSD anexado e esse custo de armazenamento é incluído no preço do vCore.
  • Na camada de serviço Uso Crítico, o tempdb compartilha o SSD anexado com os arquivos MDF e LDF e o custo de armazenamento tempDB é incluído no preço vCore.

Para conhecer mais sobre o modelo vCore, acesse a documentação oficial clicando aqui.

Criando um banco SQL Database

Depois de conhecermos os modelos de comercialização do SQL Database, agora vamos criar um banco e depois fazer a replicação do mesmo em outra região.

OBS: Um ponto de atenção para o SQL Database é que ele é comercializado por database e não por servidor. Então se você contratar 100 DTUs ou 4 vCore esses recursos estarão sendo utilizados por apenas um banco.

O que você pode fazer é se tiver bancos com comportamento que se encaixem em um pool elástico, você pode contratar esse pool e ter mais de uma database. Porém, os recursos serão compartilhados entre todas as databases que fazem parte desse pool.

Para criar uma base SQL Database é muito simples, primeiro você precisa criar uma conta no Azure, lembrando que você pode criar uma conta de demonstração e ganhar com R$ 670,00 reais de crédito.

Após criar a conta precisamos acessar o portal do Azure no http://portal.azure.com .

No painel esquerdo, vamos selecionar o SQL Databases.

No painel de gerenciamento você deverá clicar “Add”.

Agora precisamos preencher as informações do nosso banco.

  • Nome da database: DBA
  • Subscription: (no meu caso utilizo a do visual studio)
  • Resource group: SQLServer_Sevendb (nome do grupo de recursos)
  • Select Source: Em branco – (O Azure disponibiliza a database AdventureWorks para você testar.)
  • Server: O nome do servidor que você terá que criar.
  • Elastic Pool: Se deseja criar um pool elástico.
  • Tier: Qual tier (camada) de serviço o seu banco utilizará.
  • Collation: SQL_Latin1_General_CP1_CI_AS (collation do banco).

Agora vamos configurar o servidor. Aqui criamos um servidor virtual, onde vamos informar o usuário, senha e em qual região vamos alocar o servidor.

Se você já possui um servidor configurado, você pode alocar a base em um servidor já existente, mas para este post vamos criar um novo.

Precisamos informar as configurações do servidor.

  • Server Name: sqlserversevendb
  • SA Login: tiagoneves
  • Password: Senha do usuário
  • Location: East US

A minha subscrição permite criar o servidor somente nos EUA. Se você escolher o Sul do Brasil terá uma latência menor.

Agora vamos configurar o tier de serviço que vamos utilizar. Basicamente vamos escolher o modelo de DTU ou vCore. Se for DTU qual nível vamos utilizar: Basic, Standard ou Premium.

Inicialmente vou simular o valor para criar essa base utilizando o nível Premium e depois fazer uma nova simulação utilizando o modelo vCore.

Para criar uma base de dados SQL Database, utilizando o tier Premium, alocando 250 DTUs e 300 GB, vamos ter um custo mensal de R$ 3.087,60. Essa configuração está utilizando o nível P2.

Agora vamos fazer uma simulação utilizando o modelo vCore.

Configurando a base utilizando 4 vCore, 300 GB utilizando a camada de Uso Geral e o hardware da 5º Geração, vamos pagar R$ 2.640,55″. Lembrando que o hardware da 5º Geração configura 440 GB de memória.”

Voltando para a realidade, vou criar a base utilizando o tier Basic de 5 DTU e 2 GB, pagando uma bagatela de R$ 16,57 reais.

Pronto agora basta clicar em “Create” e o nosso banco será criado.

Uma coisa que vale a pena reforçar é que todo banco de dados criado no Azure é cobrado individualmente. Como podemos observar nos exemplos acima, se eu criar uma base no tier Premium, vou pagar R$ 3.087,60 reais por database.

Agora a nossa database já esta disponibilizada no Painel.

Para obter informações da database, basta clicar no nome dela que será exibido um dashboard com informações da database.

  1. Status da database;
  2. Localização;
  3. Porcentagem de utilização dos DTUs contratados;
  4. Espaço utilizado;
  5. Features habilitadas na database;
  6. Tier da database;
  7. String de conexão para conectar utilizando o SSMS.

No Painel esquerdo é possível alterar algumas configurações, como por exemplo: Geo-Replication e várias outras opções.

Conectando para fazer uma query

Para fazer uma query podemos utilizar o painel de gerenciamento ou o “SQL Server Management Studio (SSMS)”.

No Painel esquerdo você vai ver a opção “Query Editor“, você deverá efetuar o login com o seu usuário e senha.

Para utilizar o Management Studio, precisamos do nome do servidor (“Server Name”) que está disponível no dashboard.

No Management Studio devemos informar o nome do servidor, o usuário e a senha.

Ao tentar conectar o Azure vai solicitar que seja criado uma regra no firewall. Nesse caso, será necessário fazer login com a sua conta de administração do Painel de gerenciamento.

Após criar a regra do firewall, agora conseguimos conectar normalmente na nossa base.

Como podemos ver, a base de dados está criada e os dados também estão lá.

Bom pessoal o intuito deste post é demonstrar como criar um banco no SQL Database e também tentar esclarecer um pouco a diferença entre DTU e vCore, espero que tenha conseguido atender o objetivo.

No próximo post vou escrever sobre como fazer uma replicação da sua base em outro servidor e região.

Um grande abraço a todos.

Tiago Neves

3 Comments

Deixe uma resposta