Introdução ao Amazon DynamoDB

Usando Armazenamentos de Dados na AWS

Dunieski Otano

AWS Solutions Architect

O problema da hot partition

  • Imagine um restaurante com um caixa lotado e três ociosos
  • Isso ocorre com um partition key mal projetado
  • Hot partition = uma partição recebe tráfego desproporcional enquanto outras ficam ociosas.
  • Solução: Partition keys de alta cardinalidade: atributos com muitos valores únicos que distribuem os dados

partição

Usando Armazenamentos de Dados na AWS

O que faz um bom partition key

  • Alta cardinalidade: Muitos valores únicos
    • userId, orderId, sessionId - Sim
    • country, status, category - Não
  • Distribuição uniforme: Acessos balanceados
  • Previsível: Conhecido na consulta

cardinalidade

Usando Armazenamentos de Dados na AWS

Estrutura de tabela no DynamoDB

  • Partition key (obrigatória): Define a distribuição dos dados
  • Sort key (opcional): Permite consultas por intervalo (ex.: userId + orderDate)
  • Atributos: Campos adicionais
  • Chave primária = Partition key OU Partition key + Sort key

tabela

Usando Armazenamentos de Dados na AWS

Criando sua primeira tabela

  • Console da AWS: Configuração rápida para testes
  • boto3 (Python): Criação programática de tabelas
  • Decisões-chave: Partition key, sort key, modo de cobrança

primeira

Usando Armazenamentos de Dados na AWS

Chaves compostas e consultas por sort key

  • Chave composta: Partition key + Sort key
  • Consultas por intervalo: Datas, números
  • Operadores: =, <, >, <=, >=, BETWEEN, begins_with
  • Exemplo: Pedidos do usuário nos últimos 30 dias > $100

código

Usando Armazenamentos de Dados na AWS

Modos de capacidade: on-demand vs provisionado

  • On-Demand: Pague por requisição, autoescalável
    • Melhor para: Tráfego imprevisível, apps novas
  • Provisionado: Define RCU/WCU, menor custo em escala
    • Melhor para: Tráfego previsível, otimizar custos
  • Pode trocar de modo 1x a cada 24 horas

modo

Usando Armazenamentos de Dados na AWS

Vamos praticar!

Usando Armazenamentos de Dados na AWS

Preparing Video For Download...