O DynamoDB suporta índices secundários?

Sim. O DynamoDB suporta dois tipos de índice secundário. Um Índice Secundário Global (GSI) tem chave de partição/ordenação e capacidade próprias (20 por tabela por padrão, com consistência eventual). Um Índice Secundário Local (LSI) compartilha a chave de partição da tabela com uma chave de ordenação diferente, suporta consistência forte e precisa ser definido na criação da tabela.

Índice Secundário Global (GSI)

  • Chave de partição e de ordenação próprias, independentes das da tabela.
  • Throughput provisionado próprio (ou capacidade on-demand).
  • Somente leituras com consistência eventual.
  • Adicione ou remova a qualquer momento; cota padrão de 20 por tabela.

Um GSI é como você busca itens por um atributo fora da chave primária da tabela.

Índice Secundário Local (LSI)

  • Compartilha a chave de partição da tabela, com uma chave de ordenação diferente.
  • Compartilha o throughput da tabela.
  • Suporta leituras com consistência forte.
  • Precisa ser criado na criação da tabela e não pode ser adicionado depois.

As duas diferenças que você consegue medir

Uma leitura em GSI não é silenciosamente rebaixada quando você pede consistência forte. Ela falha:

ValidationException: Consistent reads are not supported on global secondary indexes
HTTP 400

A mesma consulta com ConsistentRead: true contra um LSI tem sucesso, e reporta ConsumedCapacity 1.0 onde a leitura com consistência eventual do mesmo item reporta 0.5. A consistência forte está disponível em um LSI, ao dobro das unidades de leitura.

A segunda diferença está nas escritas, e é a que aparece na conta. Colocando um item idêntico de 920 bytes em três tabelas que diferem apenas em quantos GSIs carregam:

0 GSIs   ConsumedCapacity 1   table 1
1 GSI    ConsumedCapacity 2   table 1, gsi1 1
2 GSIs   ConsumedCapacity 3   table 1, gsi1 1, gsi2 1

Todo GSI que projeta um atributo alterado é mais uma escrita que você paga. A AWS enuncia a regra que os números mostram: o custo de escrita é "the sum of write capacity units consumed by writing to the base table and those consumed by updating the global secondary indexes". Uma projeção KEYS_ONLY é como você mantém essa segunda escrita pequena.

Escolhendo entre eles

Vá de GSI para novos padrões de acesso e flexibilidade; vá de LSI quando você precisar de consistência forte em uma ordenação alternativa dentro da mesma partição.

Aprofunde-se

Compare-os em GSI vs LSI e veja projeções de índice. Baixe o DynoTable para consultar através dos seus índices.

Referências

Verificado pela última vez em 2026-07-13 contra a documentação oficial da AWS vinculada acima; cotas reconferidas em 2026-07-28.

A string de erro e os valores de ConsumedCapacity foram capturados em 2026-07-28 contra o DynamoDB Local 3.3.0 via @aws-sdk/client-dynamodb 3.1095.0 e são a saída literal do motor.

Trabalhe com o DynamoDB sem o Console

Um cliente desktop rápido para DynamoDB que roda o SQL de verdade que o DynamoDB não consegue — JOINs, GROUP BY, agregações — com edição visual e um agente de IA com suas próprias chaves do Bedrock.

Teste grátis de 30 dias, sem cartão de crédito — depois o plano Grátis sem limite de tempo.