¿DynamoDB admite consultas geoespaciales?

De forma nativa no. DynamoDB no tiene ningún tipo de dato geoespacial ni operadores de distancia o de caja envolvente. Las consultas geoespaciales son en cambio un patrón de modelado: guardas un geohash o un ID de celda S2 en la clave para que los puntos cercanos se ordenen juntos, consultas las celdas que cubren tu área de búsqueda y después afinas por distancia exacta en tu aplicación.

El patrón geohash

Un geohash (o un ID de celda S2, como usa la Geo Library de AWS para DynamoDB) codifica la latitud y la longitud en una cadena o número cuyo prefijo identifica una celda de la cuadrícula — y, lo que es crucial, los puntos cercanos comparten prefijo. Almacenado como clave de partición o de ordenación, eso convierte «los puntos cerca de mí» en consultas de rango de clave normales:

  • Consulta por caja — calcula las celdas que cubren un rectángulo, haz un Query a cada celda, fusiona los resultados.
  • Consulta por radio — lo mismo, sobre las celdas que cubren un círculo, y después filtra por distancia exacta en el cliente.

La resolución importa: elige un tamaño de celda con el que la mayoría de las búsquedas toquen solo la celda objetivo y sus vecinas.

Cómo cambia la precisión el número de consultas

Toma la Torre Eiffel, 48.8584, 2.2945. Su geohash es u09tunquc. El Trocadéro, a 640 m en 48.8619, 2.2876, es u09tup1c0. Comparten u09tu, así que con precisión 5 caen en la misma celda. Con precisión 6 ya no. Dos monumentos que se ven el uno al otro, en celdas distintas, que es por lo que una consulta de celda siempre tiene que incluir las ocho vecinas además de la propia.

Cada carácter estrecha la caja. A esta latitud:

PrecisiónTamaño de celdaCeldas tocadas por un radio 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 fila es un rango porque el número depende de dónde caiga el círculo respecto a la cuadrícula, no solo de lo grande que sea. Las celdas también se ensanchan hacia el ecuador, donde un grado de longitud cubre más terreno. La misma celda de precisión 5 mide 4,9 km de ancho en el ecuador y 3,2 km en París.

Esa tercera columna es la decisión de diseño. La precisión 6 convierte un «restaurantes a menos de 5 km» en unas 190 llamadas Query. La precisión 4 lo convierte en una o dos llamadas que te devuelven todo lo que hay en una caja de 500 km² para que lo descartes en el cliente.

Lo que muerde no es el dinero. Esas 190 consultas, cada una devolviendo menos de 4 KB con consistencia eventual, salen a 95 unidades de lectura, unos 0,000012 $ por búsqueda a la tarifa bajo demanda de us-east-1, o 11,88 $ por un millón de búsquedas. Los viajes de ida y vuelta son el coste real. Lánzalos de forma concurrente y limita el abanico, o el p99 de tu endpoint de búsqueda será el de la consulta de celda que resultara más lenta.

Bibliotecas y utilidades

AWS publicó la Geo Library for Amazon DynamoDB (Java) demostrando el patrón basado en S2, y existen ports de la comunidad para otros lenguajes (como dynamodb-geo para Node.js). Comprueba el estado de mantenimiento antes de adoptar una — el patrón en sí es lo bastante simple como para implementarlo directamente.

Cuándo usar en su lugar un motor de búsqueda

Para predicados geográficos ricos (polígonos, ordenar por distancia, combinar geografía con texto completo), replica la tabla en un índice especializado — la misma integración zero-ETL con OpenSearch que resuelve la búsqueda de texto completo te da además un motor de búsqueda con consultas geoespaciales nativas.

Profundiza

En el fondo el patrón es un truco de clave de ordenación — la guía de estrategias de clave de ordenación cubre la caja de herramientas, el generador de expresiones genera las condiciones begins_with/BETWEEN que usan las consultas de celda, y DynoTable te deja inspeccionar las claves codificadas en tus Items reales.

Referencias

Verificado por última vez el 2026-07-13 contra la documentación oficial de AWS enlazada arriba.

Geohashes, dimensiones de celda y recuentos de cobertura calculados el 2026-07-28 con un codificador geohash base32 estándar a latitud 48.8584. Comprueba u09tunquc con cualquier herramienta de geohash. El coste por búsqueda usa la tarifa de lectura bajo demanda de us-east-1 de nuestra tabla de precios sincronizada (publicación de la API de precios de AWS del 2026-07-22).

Trabaja con DynamoDB sin la Consola

Un cliente de escritorio rápido para DynamoDB que ejecuta el SQL real que DynamoDB no puede — JOINs, GROUP BY, agregaciones — con edición visual y un agente de IA con tus propias claves de Bedrock.

Prueba gratuita de 30 días, sin tarjeta — después, el plan Free sin límite de tiempo.