Você está na página 1de 9

Como escolher o melhor

banco de dados em
nuvem?

Com o aumento constante da complexidade de do volume de dados das


aplicações nos últimos anos houve muita inovação e muitas novas opções
de banco de dados foram surgindo, ou se tornando mais populares e
acessíveis do que eram antes. Em meio a tantas opções de bancos de dados
é difícil escolher o melhor banco de dados para cada de uso. O objetivo
desse post é te ajudar desse desafio.

No White Paper Melhores Práticas para Arquitetura em Nuvem, a AWS


sugere algumas perguntas importantes que depois te respondidas podem te
ajudar a entende melhor os requisitos da sua aplicação e então servirão
como um guia para você escolher o melhor banco de dados.
Sua aplicação requer mais leitura, mais escrita ou é equilibrada?
Quantas leituras e gravações por segundo você vai precisar?

Como esses o volume de leitura e gravação pode mudar se o número de


usuários aumentar?
Qual volume de dados você precisará armazenar e por quanto tempo?

Com que rapidez o volume de dados deverá crescer?


Existe um limite superior no futuro próximo?

Qual é o tamanho de cada objeto (média, mínimo e máximo)?


Como esses objetos serão acessados?
Quais são os requisitos em termos de durabilidade dos dados?
Esse armazenamento de dados será sua “fonte de verdade”? Ou é um
dado replicado de outra fonte de origem?

Quais são os seus requisitos de latência?


Quantos usuários simultâneos você precisa suportar?
Qual é o seu modelo de dados e como você vai consultar os dados?
Suas consultas são de natureza relacional (por exemplo, JOINs entre
várias tabelas)?
Você pode desnormalizar seu esquema para criar estruturas de dados
mais planas e mais fáceis de dimensionar?
Precisa de controles de integridade fortes ou está procurando mais
flexibilidade (por exemplo, armazenamentos de dados sem esquema)?
Você precisa de relatórios sofisticados ou recursos de pesquisa?
Seus desenvolvedores estão mais familiarizados com bancos de dados
relacionais do que o NoSQL?
Bancos de Dados Relacionais

Os bancos de dados relacionais (RDBS/SQL) normalizam os dados em


tabelas, que consistem em linhas e colunas.

Fornecem uma poderosa linguagem de consulta, recursos de indexação


flexíveis, controles de integridade fortes e a capacidade de combinar dados
de várias tabelas de maneira rápida e eficiente.

Na AWS você pode instalar seus bancos de dados em servidores EC2,


porém, o modelo mais indicado é utilizar o RDS que é um serviço
gerenciado que facilita a configuração, operação e dimensionamento de um
banco de dados relacional na nuvem. Com o RDS você não vai precisar se
preocupar com backups, patches, sistemas operacionais e replicação, tudo
isso pode ser automatizado pelo serviço.

Como Escalar Bancos de Dados


Relacionais

Os bancos de dados relacionais podem ser dimensionados verticalmente,


atualizando para uma instância maior ou adicionando mais e mais rápido
armazenamento.

Alguns bancos relacionais como o Amazon Aurora permite que você


também dimensione horizontalmente criando uma ou mais réplicas de
leitura.

As réplicas de leitura são instâncias de banco de dados separadas que são


replicadas de forma assíncrona. Como resultado, eles estão sujeitos a
atrasos de replicação e podem estar faltando algumas das transações mais
recentes.

Nesse caso para utilizar as réplicas de leitura o aplicativo precisa considerar


quais consultas têm tolerância a usar dados que podem estar um pouco
desatualizados.
As réplicas de leitura também não podem aceitar alterações de dados.

Ao usar um banco de dados relacional e dimensionar sua capacidade de


gravação além das restrições de uma única instância será preciso usar uma
abordagem diferente chamada particionamento de dados ou fragmentação.

Nesse modelo, os dados são divididos em vários esquemas de banco de


dados executando em sua própria instância. Embora o RDS torne mais fácil
executar essas instâncias, o particionamento aumenta a complexidade da
aplicação.

A camada de acesso a dados da aplicação precisa entender como os dados


são divididos, de modo que possam direcionar as consultas para a instância
correta.

Além disso, as alterações de esquema devem ser executadas em vários


banco de dados, portanto, vale a pena investir para automatizar esse
processo.

Alta disponibilidade com Bancos


Relacionais

Para qualquer banco de dados relacional de produção, é importante ter


redundância para se ser alta disponibilidade. Para isso a no RDS é possível
usar o MultiAZ, que cria uma instância em espera replicada em sincronia
em uma Zona de disponibilidade diferente.

Se a instância principal falhar, o RDS executa um failoverautomático para a


outra instância sem a necessidade de intervenção manual.

Já o Amazon Aurora oferece recursos de várias instâncias mestres para


permitir que as leituras e gravações sejam dimensionadas em zonas de
disponibilidade diferentes e também oferece suporte à replicação entre
regiões diferentes.

Bancos de Dados para DW (Data Warehouse)


Um Data Warehouse é um tipo de banco de dados relacional otimizado
para análise e geração de relatórios com grandes quantidades de dados.

Geralmente é usado para combinar dados transacionais de diferentes fontes


de dados (ERP, CRM, WMS, Clickstreams, e-commerce, etc.) para
disponibilizá-los para análise e tomada de decisões.

Tradicionalmente, configurar, executar e dimensionar é data warehouse um


trabalho complicado e muito caro. O Redshift é um serviço gerenciado de
data warehouse que permite que você tenha seu DW de forma mais rápida e
com menor custo.

Escalando seu DW

O Amazon Redshift oferece alto desempenho para consultas de grandes


volumes de dados por meio de uma combinação de processamento paralelo
(MPP), armazenamento de dados colunar e compactação de dados.

É possível escalhar aumentando o número de nós em seu cluster de


data warehouse.

Outra solução muito interessante é Amazon Redshift Spectrum que permite


consultas SQL do Amazon Redshift em exabytes de dados armazenados no
Amazon S3 que permite extender os dados armazenados em discos locais
no data warehouse para dados não estruturados, sem a necessidade de
carregar ou transformar dados.

O Redshift monitora continuamente a integridade do clustere


automaticamente reproduz dados de unidades com falha e substitui os nós
conforme necessário para garantir disponibilidade e segurança.

Bancos de Dados NoSQL

Os bancos de dados NoSQL ou Não Relacionais usam modelos de dados


mais flexíveis e geralmente permitem escalabilidade horizontal de maneira
mais simples do que os relacionais.
Alguns modelos de dados comuns usados nos bancos NoSQL são grafos,
chave-valor e documentos JSON.

Alguns bancos NoSQL como é o caso do DynamoDB permitem níveis de


desempenho, escalabilidade, e disponibilidade muito altos, de forma
simples.

Por outro, se for necessário, fazer análise dos dados e consultas ad-hoc será
preciso posteriormente extrair os dados para um banco de dados relacional
como o Redshift, por exemplo.

Para a grande maioria das aplicações que precisam escalar muito os bancos
de dados não relacionais se tornam ferramentas fundamentais, porém, é
natural que eles não resolvam o problema de ponta a ponta e que seja
preciso aliar outros bancos de dados como bancos em memória para cache
(Memcached, Redis), e bancos de dados relacionais para Analytics (Oracle,
Redshift).

O Amazon DynamoDB é um serviço de banco de dados NoSQL rápido e


flexível para aplicativos que precisam de latência consistente de um dígito e
milissegundo em qualquer escala. É um banco de dados em nuvem
totalmente gerenciado e suporta modelos de armazenamento de
documentos e chave-valor. Confira esse post completo sobre
DynamoDB para saber mais.

A escalabilidade horizontal em bancos NoSQL geralmente acontece de


maneira transparente e não precisam da lógica de particionamento de
dados implementada na camada de acesso a dados da sua aplicação
(diferente do que acontece com bancos relacionais).

Bancos de Dados para Pesquisas

Muitas aplicações precisam de funcionalidades que permitem que os


usuários façam buscar textuais, ou encontrem elementos por contexto,
levando tem conta a intenção do usuário e não necessariamente uma
combinação exata do que foi buscado com o que está sendo encontrado.
Assim como quando você faz uma busca no Google, ou no Facebook, por
exemplo.
Um serviço de pesquisa pode ser usado para indexar e pesquisar o formato
de texto livre e estruturado e geralmente suporta funcionalidades que não
estão disponíveis em outros bancos de dados, como classificação de
resultados (rankings), buscas facetadas, sinônimos, interpretação de
linguagem, dentre outras.

Para te ajudar a criar soluções de pesquisa, a AWS, oferece o Amazon


CloudSearch e o Amazon Elasticsearch Service (Amazon ES).

Dentre os dois o CloudSearch é um serviço gerenciado que requer pouca


configuração e é dimensionado automaticamente, é proprietário da AWS.

Já Amazon ES é um serviço gerenciado do Elasticsearch que é uma solução


open source e permite que você tenha mais autonomia sobre a
configuração.

O Elasticsearch vai além de uma simples solução de pesquisa e também


pode ser para análises de log, monitoramento de aplicações em tempo real
e análise de fluxo de cliques.

O Kibana e ELK que estão dentre as ferramentas de log e monitoramento


mais conhecidas no mundo DevOps utiliza Elasticsearch, por exemplo.

Ambos, o CloudSearch e o Elasticsearch usam particionamento e replicação


de dados para escalar horizontalmente. A vantagem do CloudSearch, é que
você não precisa se preocupar com partições e réplicas porque o serviço lida
com isso automaticamente.

Em se tratando de Alta Disponibilidade, ambos incluem recursos que


armazenam dados de forma redundante em diferentes AZs.

Bancos de Dados de Grafos

Um banco de dados baseado em grafos (também chamado de banco de


dados orientado a grafos) usa estruturas de nós interconectados entre si.
Exemplo de Grafo – Fonte: AWS

Os bancos de dados de gráficos são propositadamente criados para


armazenar e navegar por relacionamentos e são normalmente usados em
casos de uso como redes sociais, mecanismos de recomendação e detecção
de fraude, nos quais você precisa criar relações entre dados e consultar
esses relacionamentos rapidamente.

O Amazon Neptune é um serviço de banco de dados gráfico totalmente


gerenciado.

Palestras sobre como escolher o melhor banco de dados


Conclusão

Dê preferência aos bancos de dados gerenciados, em vez de fazer suas


próprias instalações manualmente. Os bancos de dados gerenciados vão
permitir que sua equipe tenha menos dores de cabeça para garantir
escalabilidade, disponibilidade, segurança e desempenho.

Se sua aplicação indexa e consulta dados sem necessidade de joins ou


transações complexas ou se você precisa de uma taxa de gravação que
supera as restrições de uma única instância – considere um banco de
dados NoSQL.

Você também pode gostar