O DynamoDB é uma base de dados NoSQL to­tal­mente gerida e sem servidor de­sen­vol­vida pela Amazon. As suas prin­ci­pais vantagens são a es­ca­la­bi­li­dade fluida, tempos de resposta de apenas mi­lis­se­gun­dos, ma­nu­ten­ção mínima e in­te­gra­ção simples com a AWS. As suas apli­ca­ções abrangem desde o de­sen­vol­vi­mento de software e a expansão de pla­ta­for­mas de vi­de­o­jo­gos até à trans­mis­sã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 apli­ca­ções modernas de qualquer tamanho, dis­po­ní­vel desde 2012 através da AWS (Amazon Web Services). Ao contrário de muitos produtos con­cor­ren­tes, o DynamoDB é uma solução to­tal­mente gerida. Isto significa que não é ne­ces­sá­rio ocupar-se de tarefas como atu­a­li­za­ções, patches ou es­ca­la­bi­li­dade. O sistema de gestão de bases de dados também inclui inúmeras funções de segurança e cumpre normas de con­for­mi­dade rigorosas. Além disso, o DynamoDB integra-se na­ti­va­mente com outros serviços da AWS, como o Lambda ou o Amazon Open­Se­arch Service.

A estrutura do DynamoDB

A estrutura do DynamoDB baseia-se numa hi­e­rar­quia clara, com tabelas como entidades prin­ci­pais, sem relações rígidas entre elas, ao contrário das bases de dados re­la­ci­o­nais. Os dados são ar­ma­ze­na­dos em partições que são re­pli­ca­das au­to­ma­ti­ca­mente. Cada partição consiste em três nós com uma cópia dos dados, o que permite uma es­ca­la­bi­li­dade simples e garante re­dun­dân­cia em caso de falha de um nó. Os pro­gra­ma­do­res 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 ori­en­ta­dos para do­cu­men­tos.

Tipos de tabelas no AWS DynamoDB

Através das classes de tabelas, é possível otimizar o de­sem­pe­nho e os custos do DynamoDB. Os uti­li­za­do­res podem escolher entre duas classes e alternar entre elas duas vezes em 30 dias sem tempo de ina­ti­vi­dade, ajustando assim os custos aos padrões de uti­li­za­ção:

  • DynamoDB Standard: a classe padrão, projetada para cargas de trabalho de alto de­sem­pe­nho e im­pre­vi­sí­veis. Em com­pa­ra­ção, essas tabelas têm custos de leitura e gravação mais baixos.
  • DynamoDB Standard In­fre­quent Access: otimizada para tabelas em que o ar­ma­ze­na­mento é o principal custo. Esta classe reduz os custos de ar­ma­ze­na­mento e é ideal para dados com acesso pouco frequente.

Quais são as fun­ci­o­na­li­da­des ofe­re­ci­das pelo DynamoDB?

O DynamoDB oferece uma ampla gama de funções que permitem criar apli­ca­ções es­ca­lá­veis, de alta dis­po­ni­bi­li­dade e grande ca­pa­ci­dade de resposta. As suas prin­ci­pais ca­rac­te­rís­ti­cas são:

  • Modelos de dados chave-valor e do­cu­men­tos: a base de dados tem um esquema flexível que permite atribuir vários atributos a cada elemento.
  • Tran­sa­ções ACID: o DynamoDB suporta tran­sa­ções com ato­mi­ci­dade, con­sis­tên­cia, iso­la­mento e du­ra­bi­li­dade (ACID), o que amplia o uso do banco de dados para processos em­pre­sa­ri­ais críticos sem perder de­sem­pe­nho ou es­ca­la­bi­li­dade.
  • Tabelas globais com re­pli­ca­ção ativa-ativa: permitem ler e escrever a partir de qualquer réplica, ajustando au­to­ma­ti­ca­mente a ca­pa­ci­dade à carga de trabalho regional.
  • DynamoDB Streams: regista as al­te­ra­ções nos elementos (criação, edição ou eli­mi­na­ção) e mantém-nas dis­po­ní­veis durante 24 horas.
  • Índices se­cun­dá­rios: suporta índices se­cun­dá­rios locais e globais para realizar consultas usando chaves al­ter­na­ti­vas. Podem ser con­fi­gu­ra­dos como índices dispersos (sparse indexes) para indexar apenas sub­con­jun­tos de dados.
  • Par­ti­ci­o­na­mento au­to­má­tico: os dados são dis­tri­buí­dos au­to­ma­ti­ca­mente em várias partições, escalando de acordo com as ne­ces­si­da­des.
  • Funções de segurança: controlos de acesso avançados, en­crip­ta­ção em repouso, re­cu­pe­ra­ção pontual, cópias de segurança sob demanda e co­nec­ti­vi­dade de rede privada.
  • Modelos de ca­pa­ci­dade: permite escolher entre o modo de ca­pa­ci­dade sob demanda ou ca­pa­ci­dade pro­vi­si­o­nada.
  • DynamoDB Ac­ce­le­ra­tor (DAX): um serviço opcional de cache que mul­ti­plica por dez o de­sem­pe­nho.

Vantagens e des­van­ta­gens do Amazon DynamoDB

O serviço NoSQL da Amazon, DynamoDB, destaca-se prin­ci­pal­mente por estas vantagens:

  • Es­ca­lo­na­mento au­to­má­tico: o AWS DynamoDB ajusta di­na­mi­ca­mente a ca­pa­ci­dade e a partição ao nível de de­sem­pe­nho ne­ces­sá­rio, per­mi­tindo um cres­ci­mento ho­ri­zon­tal ilimitado.
  • Ar­qui­te­tura sem servidor: o sistema de ge­ren­ci­a­mento de bancos de dados é to­tal­mente ge­ren­ci­ado, per­mi­tindo que os usuários se con­cen­trem no de­sen­vol­vi­mento de suas apli­ca­ções sem ter que se preocupar com a in­fra­es­tru­tura sub­ja­cente.
  • Alta dis­po­ni­bi­li­dade: as bases de dados mul­tir­re­gi­o­nais e a re­pli­ca­ção au­to­má­tica garantem uma dis­po­ni­bi­li­dade de até 99,999%.
  • Baixa latência: por pre­de­fi­ni­ção, esta base de dados NoSQL oferece operações de leitura e escrita com latências de um único dígito em mi­lis­se­gun­dos. Com o DynamoDB Ac­ce­le­ra­tor (DAX), os tempos de resposta podem ser reduzidos até mesmo para mi­cros­se­gun­dos.
  • In­te­gra­ção simples com a AWS: a in­te­gra­çã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 li­mi­ta­ções. Por um lado, as suas opções de consulta são mais limitadas em com­pa­ra­ção com outras bases de dados. Por outro lado, a estreita ligação com o ecos­sis­tema da AWS dificulta a migração para outras pla­ta­for­mas. Além disso, com o modelo de ca­pa­ci­dade sob demanda, existe o risco de incorrer em custos im­pre­vi­sí­veis em caso de picos de tráfego.

Para que casos de uso o DynamoDB é adequado?

O DynamoDB foi projetado es­pe­ci­fi­ca­mente para cargas de trabalho que exigem o manuseio de grandes volumes de dados com baixa latência, alta dis­po­ni­bi­li­dade e es­ca­la­bi­li­dade. Entre os seus prin­ci­pais casos de uso, destacam-se:

  • Apli­ca­ções web sem servidor e backends móveis, nas quais é ne­ces­sá­rio gerir dados de contas, sessões e con­fi­gu­ra­ções com uma latência mínima
  • Pla­ta­for­mas de jogos com centenas de milhares ou milhões de uti­li­za­do­res si­mul­tâ­neos
  • Streaming de conteúdo di­re­ci­o­nado a au­di­ên­cias globais com tráfego desigual ou com picos muito acen­tu­a­dos
  • Entidades bancárias e de serviços fi­nan­cei­ros, que processam um grande número de tran­sa­ções em tempo real com elevados re­qui­si­tos de segurança e con­sis­tên­cia
  • Apli­ca­ções de IoT, que capturam e armazenam dados de sensores em grande escala

Prin­ci­pais al­ter­na­ti­vas ao DynamoDB

Além do DynamoDB, existem outros sistemas de bases de dados que podem ser in­te­res­san­tes, de­pen­dendo das ne­ces­si­da­des, do modelo de dados, da es­ca­la­bi­li­dade e da in­fra­es­tru­tura. Entre eles estão:

  • MongoDB: grande fle­xi­bi­li­dade e es­ca­la­bi­li­dade pra­ti­ca­mente ilimitada
  • MySQL: base de dados re­la­ci­o­nal com alta dis­po­ni­bi­li­dade
  • MariaDB: al­ter­na­tiva de código aberto ao DynamoDB
  • Post­greSQL: solução re­la­ci­o­nal com suporte para tipos de dados não re­la­ci­o­nais
  • Firebase da Google: es­pe­ci­al­mente adequado para apli­ca­ções móveis e web
  • Apache Cassandra: ideal para gerir grandes volumes de dados
Ir para o menu principal