Índices, streams e otimização no DynamoDB

Usando Armazenamentos de Dados na AWS

Dunieski Otano

AWS Solutions Architect

A consulta que não dava para fazer

  • Tabela: userId (partition key), orderDate (sort key)
  • Necessidade: Buscar pedidos por e-mail
  • Problema: Não dá para consultar por atributos fora da chave
  • Solução: Global Secondary Index
    • Índices habilitam múltiplos padrões de acesso

gsi

Usando Armazenamentos de Dados na AWS

Global Secondary Index (GSI)

  • Partition key diferente da tabela base
  • Pode ser adicionado após criar a tabela
  • Leitura apenas eventualmente consistente
  • Caso de uso: Consultar por atributos fora da chave primária

gsi_1

Usando Armazenamentos de Dados na AWS

Local Secondary Index (LSI)

  • Mesma partition key, sort key diferente
  • Deve ser criado junto com a tabela
  • Suporta leituras fortemente consistentes
  • Caso de uso: Ordens alternativas dentro da partição

lsi

Usando Armazenamentos de Dados na AWS

GSI vs LSI — quando usar cada um

  • GSI: Partition key diferente, adiciona a qualquer momento, consistência eventual
  • LSI: Mesma partition key, cria com a tabela, consistência forte
  • Mais comum: GSI para padrões de acesso flexíveis

gsi_ou_lsi

Usando Armazenamentos de Dados na AWS

Serialização de dados para o DynamoDB

  • Problema: DynamoDB não armazena objetos Python
  • Solução: Serializar para JSON ou binário
  • JSON: Dados simples (dicts, listas) - json.dumps()
  • Base64: Dados binários (imagens, tokens)

serialização

Usando Armazenamentos de Dados na AWS

DynamoDB Streams para captura de mudanças

  • Streams: Log ordenado de todas as mudanças na tabela
  • Captura: inserts, updates, deletes
  • Casos de uso: Auditoria, replicação, triggers
  • Processa com Lambda para reações em tempo real

streams

Usando Armazenamentos de Dados na AWS

Time-to-Live para expiração automática

  • TTL: Exclusão automática após expirar
  • Defina timestamp Unix no atributo TTL
  • Ideal para: Sessões, tokens temporários, cache
  • Sem custo para deleções via TTL

ttl

Usando Armazenamentos de Dados na AWS

Tipos de projeção e desempenho de consultas

  • KEYS_ONLY: Só atributos de chave, menor tamanho
  • INCLUDE: Chaves + atributos especificados
  • ALL: Todos os atributos, maior tamanho, sem fetch adicional
  • Trade-off: Custo de armazenamento vs desempenho da consulta

índice

Usando Armazenamentos de Dados na AWS

Operações em lote e transações

  • BatchGetItem: Lê até 100 itens, 16 MB máx.
  • BatchWriteItem: Escreve até 25 itens
  • TransactWriteItems: ACID em até 100 itens
  • Use para: Eficiência (batch) ou consistência (transações)

lote

Usando Armazenamentos de Dados na AWS

Vamos praticar!

Usando Armazenamentos de Dados na AWS

Preparing Video For Download...