Entendendo o Amazon DynamoDB
Published: 2024-05-22 18:15:18




![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bcihmwdwvkc59x0waat6.png)

**Introdução:**

O Amazon DynamoDB é um serviço de banco de dados NoSQL totalmente gerenciado, oferecido pela Amazon Web Services (AWS). Ele é projetado para lidar com grandes quantidades de tráfego de dados, proporcionando uma latência consistente.

**Tabelas, Itens e Atributos:**


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zbzgd95sgqw3orie5l27.png)


- 
Tabelas: O DynamoDB armazena dados em tabelas, que são coleções de itens.

- 
Itens: Cada tabela contém zero ou mais itens. Um item é uma coleção de atributos.

- 
Atributos: Cada atributo tem um nome e um valor. O valor pode ser um escalar (string, número, binário), um conjunto (conjunto de strings, números ou binários), ou um mapa (estrutura de dados aninhada).

**Chaves Primárias:**
_Chave de Partição (Hash Key):_
Uma chave de partição é usada para distribuir itens entre partições de armazenamento e e obrigatória para todas as tabelas.

_Chave de Partição e Chave de Classificação (Range Key):_
Além da chave de partição, uma chave de classificação é usada para ordenar os itens com a mesma chave de partição. É opcional.



![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/x98al23bd4o7qvgxj8k8.png)

**Particionamento e Escalabilidade**
DynamoDB distribui automaticamente dados entre várias partições físicas para gerenciar a carga de leitura e escrita, e também armazenar grandes volumes de dados. Cada partição é responsável por um subconjunto dos dados da tabela.

A chave de partição (hash key) é usada para determinar em qual partição física um item específico será armazenado. Isso garante uma distribuição uniforme dos dados.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/uzrvgss1h0sn2r2z693f.png)

Conforme os dados da sua tabela aumentam, o DynamoDB automaticamente adiciona mais partições.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9mcgflpqdw0d2vprsdl7.png)

**Replicação e Disponibilidade:**
As Global Tables permitem replicar dados entre várias regiões da AWS. Ao criar uma tabela global, o DynamoDB cria réplicas da tabela original em cada região especificada.

DynamoDB Streams captura todas as alterações de dados na tabela (inserções, atualizações, exclusões). Os eventos nas streams são ordenados, garantindo que as mudanças sejam aplicadas na mesma ordem em todas as réplicas, o que ajuda a manter a consistência dos dados.

Quando um item é atualizado em uma região, o DynamoDB propaga essa alteração para todas as outras réplicas de maneira assíncrona.

Se houver conflitos de escrita (por exemplo, quando o mesmo item é atualizado simultaneamente em diferentes regiões), o DynamoDB resolve esses conflitos usando uma abordagem de “Last Writer Wins”, onde a atualização mais recente (com base no timestamp) prevalece.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7twk918axjlqnx8kh8ez.png)

**Conclusão**
O DynamoDB fornece um mecanismo robusto para replicação e consistência de dados em múltiplas regiões AWS. Através do uso de streams e políticas de resolução de conflitos, ele mantém os dados sincronizados e atualizados, prevenindo a maioria dos problemas de dados desatualizados.

**fontes:**

- 
https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.CoreComponents.html


- https://www.alexdebrie.com/posts/dynamodb-partitions/


- https://stackoverflow.com/questions/27329461/what-is-hash-and-range-primary-key