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.
Basic | Standard | Premium | |
---|---|---|---|
Carga de trabalho de destino | Desenvolvimento e produção | Desenvolvimento e produção | Desenvolvimento e produção |
SLA de tempo de atividade | 99,99% | 99,99% | 99,99% |
Retenção de backup | 7 dias | 35 dias | 35 dias |
CPU | Baixo | Baixo, Médio, Alto | Médio, Alto |
Taxa de transferência de IO (aproximada) | 2.5 IOPS por DTU | 2.5 IOPS por DTU | 48 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 ColumnStore | N/D | S3 e acima | Com suporte |
OLTP In-memory | N/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 geral | Uso Critico | |
---|---|---|
Mais adequado para | A 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. |
CPU | 1 a 80 vCores, Gerações 4 e 5 | 1 a 80 vCores, Gerações 4 e 5 |
Memória | 7 GB por núcleo | 7 GB por núcleo |
Armazenamento | Armazenamento remoto Premium, 5 GB – 4 TB | Armazenamento SSD local, 5 GB – 4 TB |
Taxa de transferência de IO (aproximada) | 500 IOPS por vCore com máximo de 7.000 IOPS | 5.000 IOPS por núcleo com máximo de 200.000 IOPS |
Disponibilidade | 1 réplica, sem escala de leitura | 3 réplica, 1 escala de leitura, HA com redundância de zona |
Backups | RA-GRS, 7-35 dias (7 dias por padrão) | RA-GRS, 7-35 dias (7 dias por padrão)* |
In-Memory | N/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.
- Status da database;
- Localização;
- Porcentagem de utilização dos DTUs contratados;
- Espaço utilizado;
- Features habilitadas na database;
- Tier da database;
- 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