DynamoDB supporta le query geospaziali?
Non nativamente. DynamoDB non ha un tipo di dato geospaziale né operatori di distanza o di bounding box. Le query geospaziali sono invece un pattern di modellazione: memorizza un geohash o un ID di cella S2 nella chiave in modo che i punti vicini si ordinino insieme, interroga le celle che coprono la tua area di ricerca, poi affina per distanza esatta nella tua applicazione.
Il pattern geohash
Un geohash (o un ID di cella S2, come usato dalla Geo Library di AWS per DynamoDB) codifica latitudine/longitudine in una stringa o un numero il cui prefisso identifica una cella della griglia — e, cosa cruciale, i punti vicini condividono i prefissi. Memorizzato come chiave di partizione o di ordinamento, questo trasforma "i punti vicino a me" in ordinarie query per intervallo di chiavi:
- Query a riquadro — calcola le celle che coprono un rettangolo, esegui
Querysu ogni cella, unisci i risultati. - Query a raggio — lo stesso, sulle celle che coprono un cerchio, poi filtra per distanza esatta lato client.
La risoluzione conta: scegli una dimensione della cella in cui la maggior parte delle ricerche tocchi solo la cella target e le sue vicine.
Librerie e strumenti
AWS ha pubblicato la Geo Library per Amazon DynamoDB (Java) che dimostra il pattern basato su S2, ed esistono port della community per altri linguaggi (come dynamodb-geo per Node.js). Controlla lo stato di manutenzione prima di adottarne una — il pattern stesso è abbastanza semplice da implementare direttamente.
Quando usare invece un motore di ricerca
Per predicati geo complessi (poligoni, ordinamento per distanza, combinazione di geo con full-text), replica la tabella in un indice appositamente costruito — la stessa integrazione zero-ETL con OpenSearch che gestisce la ricerca full-text ti offre anche un motore di ricerca con query geospaziali native. DynamoDB vs Elasticsearch valuta per intero quella divisione database-più-indice.
Approfondisci
Il pattern è in fondo un trucco sulla chiave di ordinamento — la guida alle strategie di chiave di ordinamento illustra gli strumenti, l'expression builder genera le condizioni begins_with/BETWEEN usate dalle query sulle celle, e DynoTable ti permette di ispezionare le chiavi codificate sui tuoi item reali.
Riferimenti
- 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
Ultima verifica 2026-07-13 rispetto alla documentazione ufficiale AWS collegata sopra.