¿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
Querya 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ón | Tamaño de celda | Celdas tocadas por un radio de 5 km |
|---|---|---|
| 4 | 25,7 × 19,6 km | 1 a 4 |
| 5 | 3,2 × 4,9 km | 10 a 12 |
| 6 | 0,81 × 0,61 km | 185 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
- Geo Library for Amazon DynamoDB – Part 1: Table Structure — AWS Mobile Blog
- Implementing geohashing at scale in serverless web applications — AWS Compute Blog
- Supported data types and naming rules in Amazon DynamoDB — Amazon DynamoDB Developer Guide
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).