O DynamoDB suporta consultas geoespaciais?

Nativamente não. O DynamoDB não tem tipo de dado geoespacial nem operadores de distância ou de bounding box. As consultas geoespaciais são, em vez disso, um padrão de modelagem: guarde um geohash ou um ID de célula S2 na chave para que os pontos próximos fiquem ordenados juntos, consulte as células que cobrem sua área de busca e depois refine pela distância exata na sua aplicação.

O padrão de geohash

Um geohash (ou um ID de célula S2, como usado pela Geo Library for DynamoDB da AWS) codifica latitude/longitude em uma string ou número cujo prefixo identifica uma célula da grade — e, o que é crucial, pontos próximos compartilham prefixos. Guardado como chave de partição ou de ordenação, isso transforma "pontos perto de mim" em consultas comuns por intervalo de chave:

  • Consulta por caixa — calcule as células que cobrem um retângulo, faça um Query em cada célula e junte os resultados.
  • Consulta por raio — o mesmo, sobre as células que cobrem um círculo, e depois filtre pela distância exata no lado do cliente.

A resolução importa: escolha um tamanho de célula em que a maioria das buscas toque apenas a célula alvo e as vizinhas dela.

Como a precisão muda a quantidade de consultas

Pegue a Torre Eiffel, 48.8584, 2.2945. O geohash dela é u09tunquc. O Trocadéro, a 640 m de distância em 48.8619, 2.2876, é u09tup1c0. Eles compartilham u09tu, então na precisão 5 ficam na mesma célula. Na precisão 6, não. Dois pontos turísticos que dá para ver um do outro, em células diferentes, e é por isso que uma consulta de célula sempre precisa incluir as oito vizinhas além da sua.

Cada caractere estreita a caixa. Nesta latitude:

PrecisãoTamanho da célulaCélulas tocadas por um raio de 5 km
425,7 × 19,6 km1 a 4
53,2 × 4,9 km10 a 12
60,81 × 0,61 km185 a 193

Cada linha é um intervalo porque a contagem depende de onde o círculo cai em relação à grade, não só de quão grande ele é. As células também ficam mais largas em direção ao equador, onde um grau de longitude cobre mais terreno. A mesma célula de precisão 5 tem 4,9 km de largura no equador e 3,2 km de largura em Paris.

Essa terceira coluna é a decisão de projeto. A precisão 6 transforma um "restaurantes num raio de 5 km" em aproximadamente 190 chamadas de Query. A precisão 4 transforma isso em uma ou duas chamadas que te devolvem tudo o que há em uma caixa de 500 km² para você descartar no lado do cliente.

O dinheiro não é o que morde. Essas 190 consultas, cada uma devolvendo menos de 4 KB com consistência eventual, dão 95 unidades de leitura, cerca de US$0,000012 por busca à taxa on-demand de us-east-1, ou US$11,88 por um milhão de buscas. As idas e voltas é que são o custo real. Emita-as concorrentemente e limite o fan-out, ou o p99 do seu endpoint de busca vai ser a consulta de célula que por acaso foi a mais lenta.

Bibliotecas e ferramentas

A AWS publicou a Geo Library for Amazon DynamoDB (Java), demonstrando o padrão baseado em S2, e existem portes da comunidade para outras linguagens (como o dynamodb-geo para Node.js). Verifique o estado de manutenção antes de adotar uma — o padrão em si é simples o bastante para implementar diretamente.

Quando usar um motor de busca em vez disso

Para predicados geográficos ricos (polígonos, ordenação por distância, combinar geo com busca textual), replique a tabela em um índice feito para isso — a mesma integração zero-ETL com o OpenSearch que resolve a busca textual também te dá um motor de busca com consultas geoespaciais nativas.

Aprofunde-se

O padrão é, no fundo, um truque de chave de ordenação — o guia de estratégias de chave de ordenação cobre a caixa de ferramentas, o construtor de expressões gera as condições begins_with/BETWEEN que as consultas de célula usam, e o DynoTable te deixa inspecionar as chaves codificadas nos seus itens reais.

Referências

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

Geohashes, dimensões de célula e contagens de cobertura calculados em 2026-07-28 com um codificador de geohash base32 padrão na latitude 48,8584. Confira u09tunquc em qualquer ferramenta de geohash. O custo por busca usa a taxa de leitura on-demand de us-east-1 da nossa tabela de preços sincronizada (publicação da API de preços da AWS em 2026-07-22).

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.