DynamoDB supporta le query geospaziali?

Non in modo nativo. 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 così i punti vicini si ordinano insieme, interroga le celle che coprono la tua area di ricerca, poi affina per distanza esatta nella tua applicazione.

Il pattern del geohash

Un geohash (o un ID di cella S2, come usato dalla Geo Library for DynamoDB di AWS) 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 "punti vicino a me" in normali query per intervallo di chiave:

  • Query a riquadro — calcola le celle che coprono un rettangolo, fai una Query su ciascuna 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 di cella per cui la maggior parte delle ricerche tocchi solo la cella bersaglio e i suoi vicini.

Come la precisione cambia il numero di query

Prendi la Torre Eiffel, 48.8584, 2.2945. Il suo geohash è u09tunquc. Il Trocadéro, a 640 m di distanza a 48.8619, 2.2876, è u09tup1c0. Condividono u09tu, quindi alla precisione 5 stanno nella stessa cella. Alla precisione 6 no. Due monumenti che si vedono l'uno dall'altro, in celle diverse, ed è per questo che una query su cella deve sempre includere anche gli otto vicini oltre alla propria.

Ogni carattere restringe il riquadro. A questa latitudine:

PrecisioneDimensione cellaCelle toccate da un raggio di 5 km
425,7 × 19,6 kmda 1 a 4
53,2 × 4,9 kmda 10 a 12
60,81 × 0,61 kmda 185 a 193

Ogni riga è un intervallo perché il conteggio dipende da dove cade il cerchio rispetto alla griglia, non solo da quanto è grande. Le celle si allargano anche verso l'equatore, dove un grado di longitudine copre più terreno. La stessa cella di precisione 5 è larga 4,9 km all'equatore e 3,2 km a Parigi.

Quella terza colonna è la decisione di progetto. La precisione 6 trasforma un "ristoranti entro 5 km" in circa 190 chiamate Query. La precisione 4 la rende una o due chiamate che ti restituiscono tutto quello che c'è in un riquadro di 500 km² da scartare lato client.

Non sono i soldi a mordere. Quelle 190 query, ciascuna che restituisce meno di 4 KB a coerenza eventuale, fanno 95 unità di lettura, circa $0,000012 per ricerca alla tariffa on-demand di us-east-1, ovvero $11,88 per un milione di ricerche. I round trip sono il vero costo. Emettile in modo concorrente e limita il fan-out, oppure il p99 del tuo endpoint di ricerca sarà quella query su cella che è capitato fosse la più lenta.

Librerie e strumenti

AWS ha pubblicato la Geo Library for 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 in sé è abbastanza semplice da implementare direttamente.

Quando usare invece un motore di ricerca

Per predicati geo ricchi (poligoni, ordinamento per distanza, combinazione di geo e full-text), replica la tabella in un indice dedicato — la stessa integrazione zero-ETL con OpenSearch che gestisce la ricerca full-text ti dà anche un motore di ricerca con query geospaziali native.

Approfondisci

Il pattern è in fondo un trucco sulla chiave di ordinamento — la guida alle strategie per la chiave di ordinamento copre gli strumenti, il generatore di espressioni genera le condizioni begins_with/BETWEEN che usano le query su cella, e DynoTable ti permette di ispezionare le chiavi codificate sui tuoi Item reali.

Riferimenti

Ultima verifica 2026-07-13 rispetto alla documentazione ufficiale AWS collegata sopra.

Geohash, dimensioni delle celle e conteggi di copertura calcolati il 2026-07-28 con un encoder geohash base32 standard alla latitudine 48.8584. Verifica u09tunquc con qualsiasi strumento per geohash. Il costo per ricerca usa la tariffa di lettura on-demand us-east-1 nella nostra tabella dei prezzi sincronizzata (pubblicazione della pricing API di AWS del 2026-07-22).

Lavora con DynamoDB senza la Console

Un client desktop veloce per DynamoDB che esegue il vero SQL che DynamoDB non può — JOINs, GROUP BY, aggregazioni — con modifica visuale e un agente AI sulle tue chiavi Bedrock.

Prova gratuita di 30 giorni, senza carta di credito — poi il piano Free senza limiti di tempo.