Amazon DynamoDB: tudo o que precisa saber
O DynamoDB é uma base de dados NoSQL totalmente gerida e sem servidor desenvolvida pela Amazon. As suas principais vantagens são a escalabilidade fluida, tempos de resposta de apenas milissegundos, manutenção mínima e integração simples com a AWS. As suas aplicações abrangem desde o desenvolvimento de software e a expansão de plataformas de videojogos até à transmissão de vídeo em tempo real.
O que é o DynamoDB?
O Amazon DynamoDB é um serviço de base de dados NoSQL sem servidor para aplicações modernas de qualquer tamanho, disponível desde 2012 através da AWS (Amazon Web Services). Ao contrário de muitos produtos concorrentes, o DynamoDB é uma solução totalmente gerida. Isto significa que não é necessário ocupar-se de tarefas como atualizações, patches ou escalabilidade. O sistema de gestão de bases de dados também inclui inúmeras funções de segurança e cumpre normas de conformidade rigorosas. Além disso, o DynamoDB integra-se nativamente com outros serviços da AWS, como o Lambda ou o Amazon OpenSearch Service.
A estrutura do DynamoDB
A estrutura do DynamoDB baseia-se numa hierarquia clara, com tabelas como entidades principais, sem relações rígidas entre elas, ao contrário das bases de dados relacionais. Os dados são armazenados em partições que são replicadas automaticamente. Cada partição consiste em três nós com uma cópia dos dados, o que permite uma escalabilidade simples e garante redundância em caso de falha de um nó. Os programadores guardam os dados na forma de atributos e atribuem-lhes uma chave primária única. A base de dados suporta tanto modelos de dados chave-valor como modelos orientados para documentos.
Tipos de tabelas no AWS DynamoDB
Através das classes de tabelas, é possível otimizar o desempenho e os custos do DynamoDB. Os utilizadores podem escolher entre duas classes e alternar entre elas duas vezes em 30 dias sem tempo de inatividade, ajustando assim os custos aos padrões de utilização:
- DynamoDB Standard: a classe padrão, projetada para cargas de trabalho de alto desempenho e imprevisíveis. Em comparação, essas tabelas têm custos de leitura e gravação mais baixos.
- DynamoDB Standard Infrequent Access: otimizada para tabelas em que o armazenamento é o principal custo. Esta classe reduz os custos de armazenamento e é ideal para dados com acesso pouco frequente.
Quais são as funcionalidades oferecidas pelo DynamoDB?
O DynamoDB oferece uma ampla gama de funções que permitem criar aplicações escaláveis, de alta disponibilidade e grande capacidade de resposta. As suas principais características são:
- Modelos de dados chave-valor e documentos: a base de dados tem um esquema flexível que permite atribuir vários atributos a cada elemento.
- Transações ACID: o DynamoDB suporta transações com atomicidade, consistência, isolamento e durabilidade (ACID), o que amplia o uso do banco de dados para processos empresariais críticos sem perder desempenho ou escalabilidade.
- Tabelas globais com replicação ativa-ativa: permitem ler e escrever a partir de qualquer réplica, ajustando automaticamente a capacidade à carga de trabalho regional.
- DynamoDB Streams: regista as alterações nos elementos (criação, edição ou eliminação) e mantém-nas disponíveis durante 24 horas.
- Índices secundários: suporta índices secundários locais e globais para realizar consultas usando chaves alternativas. Podem ser configurados como índices dispersos (sparse indexes) para indexar apenas subconjuntos de dados.
- Particionamento automático: os dados são distribuídos automaticamente em várias partições, escalando de acordo com as necessidades.
- Funções de segurança: controlos de acesso avançados, encriptação em repouso, recuperação pontual, cópias de segurança sob demanda e conectividade de rede privada.
- Modelos de capacidade: permite escolher entre o modo de capacidade sob demanda ou capacidade provisionada.
- DynamoDB Accelerator (DAX): um serviço opcional de cache que multiplica por dez o desempenho.
Vantagens e desvantagens do Amazon DynamoDB
O serviço NoSQL da Amazon, DynamoDB, destaca-se principalmente por estas vantagens:
- Escalonamento automático: o AWS DynamoDB ajusta dinamicamente a capacidade e a partição ao nível de desempenho necessário, permitindo um crescimento horizontal ilimitado.
- Arquitetura sem servidor: o sistema de gerenciamento de bancos de dados é totalmente gerenciado, permitindo que os usuários se concentrem no desenvolvimento de suas aplicações sem ter que se preocupar com a infraestrutura subjacente.
- Alta disponibilidade: as bases de dados multirregionais e a replicação automática garantem uma disponibilidade de até 99,999%.
- Baixa latência: por predefinição, esta base de dados NoSQL oferece operações de leitura e escrita com latências de um único dígito em milissegundos. Com o DynamoDB Accelerator (DAX), os tempos de resposta podem ser reduzidos até mesmo para microssegundos.
- Integração simples com a AWS: a integração nativa com serviços da AWS, como CloudWatch ou Kinesis, amplia os recursos do DynamoDB e facilita a análise avançada de dados.
No entanto, o DynamoDB também apresenta algumas limitações. Por um lado, as suas opções de consulta são mais limitadas em comparação com outras bases de dados. Por outro lado, a estreita ligação com o ecossistema da AWS dificulta a migração para outras plataformas. Além disso, com o modelo de capacidade sob demanda, existe o risco de incorrer em custos imprevisíveis em caso de picos de tráfego.
Para que casos de uso o DynamoDB é adequado?
O DynamoDB foi projetado especificamente para cargas de trabalho que exigem o manuseio de grandes volumes de dados com baixa latência, alta disponibilidade e escalabilidade. Entre os seus principais casos de uso, destacam-se:
- Aplicações web sem servidor e backends móveis, nas quais é necessário gerir dados de contas, sessões e configurações com uma latência mínima
- Plataformas de jogos com centenas de milhares ou milhões de utilizadores simultâneos
- Streaming de conteúdo direcionado a audiências globais com tráfego desigual ou com picos muito acentuados
- Entidades bancárias e de serviços financeiros, que processam um grande número de transações em tempo real com elevados requisitos de segurança e consistência
- Aplicações de IoT, que capturam e armazenam dados de sensores em grande escala
Principais alternativas ao DynamoDB
Além do DynamoDB, existem outros sistemas de bases de dados que podem ser interessantes, dependendo das necessidades, do modelo de dados, da escalabilidade e da infraestrutura. Entre eles estão:
- MongoDB: grande flexibilidade e escalabilidade praticamente ilimitada
- MySQL: base de dados relacional com alta disponibilidade
- MariaDB: alternativa de código aberto ao DynamoDB
- PostgreSQL: solução relacional com suporte para tipos de dados não relacionais
- Firebase da Google: especialmente adequado para aplicações móveis e web
- Apache Cassandra: ideal para gerir grandes volumes de dados