DynamoDB vs Amazon S3

DynamoDB e Amazon S3 resolvem problemas diferentes, então a resposta honesta para "qual dos dois" é geralmente ambos. O DynamoDB é um banco de dados chave-valor e de documentos para registros estruturados que você busca, consulta e atualiza por chave. O Amazon S3 é armazenamento de objetos para arquivos e blobs — imagens, backups, logs, vídeos — que você armazena e recupera inteiros. Eles são complementares, não um ou outro.

Devo usar DynamoDB ou S3?

Use o DynamoDB quando você tem muitos registros estruturados pequenos que consulta, filtra e atualiza por chave com latência de milissegundos de um dígito. Use o Amazon S3 quando você armazena e serve arquivos ou blobs inteiros — imagens, backups, exports — e os recupera por nome. Eles são complementares: um padrão muito comum armazena o objeto no S3 e seus metadados no DynamoDB.

DynamoDB vs Amazon S3 em resumo

CaracterísticaDynamoDBAmazon S3
Propósito primárioBanco de dados NoSQL chave-valor / documentos para registros estruturadosArmazenamento de objetos para arquivos, blobs e dados não estruturados
Unidade de dadosItem (um conjunto de atributos tipados), endereçado por chave primáriaObjeto (bytes + metadados), endereçado por uma chave dentro de um bucket
Tamanho máximo por unidade400 KB por item (nomes de atributo + valores)5 TB por objeto (PUT único de até 5 GB; uploads maiores usam multipart)
Consulta / acessoGetItem, Query, Scan, BatchGetItem, PartiQL, índices secundários (GSI/LSI)GET / PUT / DELETE por chave, LIST de um bucket; consulta in-place via Amazon Athena (ou S3 Select para clientes existentes)
Perfil de latênciaLeituras/escritas em milissegundos de um dígito para itens únicos em qualquer escalaThroughput de objetos durável; latência por requisição maior que a de um banco de dados chave-valor, não buscas de registro em milissegundos
ConsistênciaConsistência eventual por padrão; leituras com consistência forte disponíveis por requisiçãoConsistência forte de read-after-write para todos os objetos e todas as requisições (desde 2020)
Modelo de preçoCapacidade de leitura/escrita (RCU/WCU — On-Demand ou provisionada) + armazenamento de dados por GB-mêsArmazenamento por GB-mês (por classe de armazenamento) + cobranças por requisição (PUT/GET/LIST) + recuperação / transferência de dados
Cargas de trabalho ideaisPerfis de usuário, sessões, carrinhos, registros de evento/estado, metadados, acesso estilo OLTP de alto throughputMídia, backups, arquivos de data lake, ativos estáticos, exports grandes, arquivamento

Cada célula acima é extraída da documentação oficial da AWS (veja a nota de proveniência no topo deste arquivo).

Quando usar o DynamoDB

Recorra ao DynamoDB quando seus dados são registros estruturados que você acessa por chave:

  • Muitos itens pequenos (cada um abaixo do limite de 400 KB) que você lê, escreve e atualiza individualmente.
  • Buscas previsíveis e de baixa latência — o DynamoDB mira leituras e escritas em milissegundos de um dígito para itens únicos em qualquer escala.
  • Padrões de acesso que você consegue expressar com uma chave primária e índices secundários: get-by-id, consultar-uma-partição, filtrar-dentro-de-uma-partição.
  • Alto throughput de escrita com atualizações granulares (mudar um atributo sem reescrever o registro inteiro).

Se você se pegar tentando armazenar um arquivo de 5 MB dentro de um item, esse é o sinal de que você chegou à fronteira do DynamoDB — veja limite de tamanho de item do DynamoDB.

Quando usar o S3

Recorra ao Amazon S3 quando seus dados são um arquivo ou blob inteiro que você recupera por nome:

  • Imagens, PDFs, vídeos, áudio e outros ativos binários.
  • Backups, exports de banco de dados e arquivos de data lake (Parquet, CSV, JSON) consultados depois com uma ferramenta como o Amazon Athena.
  • Objetos grandes — o S3 armazena objetos de até 5 TB cada, muito além de qualquer registro único de banco de dados.
  • Ativos de site estático e conteúdo servido diretamente aos usuários.

O S3 não é um banco de dados: você não pode consultar o conteúdo de objetos arbitrários com índices ricos da forma como consulta itens do DynamoDB. A filtragem in-place no estilo SQL sobre um objeto está disponível através do Amazon Athena (o S3 Select continua disponível para clientes existentes, mas foi fechado para novos clientes em 2024).

Usando os dois juntos

Os dois serviços são mais poderosos combinados. A própria orientação da AWS para dados grandes demais para um item do DynamoDB é armazenar o objeto no S3 e manter um ponteiro no DynamoDB:

  • Armazene o arquivo grande (imagem, documento, vídeo) como um objeto no S3.
  • Armazene seus metadados — a chave do objeto S3, o content type, o dono, as tags, os timestamps — como um item no DynamoDB, onde é consultável de forma barata.
  • Busque o registro no DynamoDB por chave, depois obtenha o objeto do S3 usando o identificador armazenado.

Uma ressalva que a AWS destaca: não há transações que abranjam DynamoDB e S3, então sua aplicação lida com falhas parciais (por exemplo, limpando um objeto S3 órfão se a escrita no DynamoDB falhar).

Trabalhando com o DynamoDB

Depois de escolher o DynamoDB para a metade estruturada dos seus dados, o DynoTable é um cliente desktop de DynamoDB para navegar, editar e consultar tabelas em macOS, Windows e Linux. Ele lê sua cadeia de credenciais padrão da AWS, então não há nada específico do DynamoDB para migrar — aponte-o para sua região e tabelas e seus dados permanecem no DynamoDB.

Quando você precisa construir à mão as expressões GetItem, Query, Update ou de condição que sustentam o padrão de metadados-no-DynamoDB acima, o DynamoDB Expression Builder gratuito gera a requisição nos formatos AWS SDK, CLI e boto3. Para dimensionar um item contra o limite de 400 KB antes de decidir o que pertence ao S3, a calculadora de tamanho de item mede o tamanho em bytes de um registro.

FAQ

O DynamoDB pode armazenar arquivos ou imagens?

Pequenos, dentro dos limites. Um item do DynamoDB pode conter dados binários, mas o item inteiro — cada nome e valor de atributo — precisa ficar abaixo de 400 KB. Para qualquer coisa maior, a melhor prática documentada pela AWS é armazenar o arquivo como um objeto no Amazon S3 e manter a chave do objeto S3 (mais metadados) em um item do DynamoDB.

O S3 é mais barato que o DynamoDB?

Eles precificam de forma diferente, então depende da carga de trabalho em vez de uma resposta única. O S3 cobra por armazenamento por GB-mês mais taxas por requisição e de recuperação, e é geralmente o lar mais barato para grandes volumes de bytes acessados com pouca frequência. O DynamoDB cobra por capacidade de leitura/escrita mais armazenamento e é construído para acesso de alto throughput e baixa latência a muitos registros pequenos. Armazenar blobs grandes no DynamoDB é ao mesmo tempo limitado em tamanho e comparativamente caro — razão pela qual a divisão de objeto-no-S3-mais-metadados-no-DynamoDB é o padrão convencional.

DynamoDB ou S3 para JSON?

Se o JSON é um registro estruturado que você consulta e atualiza por chave — um usuário, um pedido, uma sessão — o DynamoDB se encaixa, e ele mapeia JSON para atributos tipados e suporta PartiQL. Se o JSON é um documento inteiro ou arquivo de data lake que você armazena e depois varre em massa (por exemplo, consultando-o com o Amazon Athena), o S3 se encaixa. Um híbrido frequente mantém os campos consultáveis no DynamoDB e o payload JSON completo como um objeto no S3.

Relacionados

Verificado pela última vez em 2026-07-12 contra a documentação oficial da AWS para DynamoDB e Amazon S3. Amazon S3, DynamoDB e Athena são serviços da Amazon Web Services, referenciados aqui apenas para identificação.

Trabalhe com o DynamoDB sem o Console

O DynoTable é um cliente desktop rápido para o DynamoDB — navegue pelas tabelas, execute consultas no estilo SQL e edite itens localmente.