Unterstützt DynamoDB Geodaten-Abfragen?
Nicht nativ. DynamoDB hat keinen Geodaten-Typ und keine Distanz- oder Bounding-Box-Operatoren. Geodaten-Abfragen sind stattdessen ein Modellierungsmuster: Speichere einen Geohash oder eine S2-Zellen-ID im Key, sodass nahe beieinander liegende Punkte zusammen sortiert werden, frage die Zellen ab, die dein Suchgebiet abdecken, und verfeinere danach in deiner Anwendung über die exakte Distanz.
Das Geohash-Muster
Ein Geohash (oder eine S2-Zellen-ID, wie sie AWS' Geo Library for DynamoDB verwendet) kodiert Breiten-/Längengrad in einen String oder eine Zahl, deren Präfix eine Rasterzelle identifiziert — und entscheidend: Nahe beieinander liegende Punkte teilen sich Präfixe. Als Partition oder Sort Key gespeichert, wird daraus für „Punkte in meiner Nähe" eine ganz gewöhnliche Key-Range-Abfrage:
- Box-Abfrage — berechne die Zellen, die ein Rechteck abdecken,
Queryjede Zelle, führe die Ergebnisse zusammen. - Radius-Abfrage — dasselbe über die Zellen, die einen Kreis abdecken, danach clientseitig nach exakter Distanz filtern.
Die Auflösung zählt: Wähle eine Zellengröße, bei der die meisten Suchen nur die Zielzelle und ihre Nachbarn berühren.
Wie die Präzision die Zahl der Abfragen verändert
Nimm den Eiffelturm, 48.8584, 2.2945. Sein Geohash ist u09tunquc. Das Trocadéro, 640 m entfernt bei 48.8619, 2.2876, ist u09tup1c0. Sie teilen sich u09tu, bei Präzision 5 liegen sie also in derselben Zelle. Bei Präzision 6 nicht mehr. Zwei Wahrzeichen, die man voneinander aus sehen kann, in verschiedenen Zellen — genau deshalb muss eine Zellenabfrage immer die acht Nachbarn zusätzlich zur eigenen Zelle einschließen.
Jedes Zeichen engt die Box weiter ein. Auf diesem Breitengrad:
| Präzision | Zellengröße | Von einem 5-km-Radius berührte Zellen |
|---|---|---|
| 4 | 25,7 × 19,6 km | 1 bis 4 |
| 5 | 3,2 × 4,9 km | 10 bis 12 |
| 6 | 0,81 × 0,61 km | 185 bis 193 |
Jede Zeile ist eine Spanne, weil die Anzahl davon abhängt, wie der Kreis auf dem Raster liegt, und nicht nur davon, wie groß er ist. Zellen werden außerdem zum Äquator hin breiter, wo ein Längengrad mehr Boden abdeckt. Dieselbe Präzision-5-Zelle ist am Äquator 4,9 km breit und in Paris 3,2 km.
Diese dritte Spalte ist die Design-Entscheidung. Präzision 6 macht aus einem „Restaurants im Umkreis von 5 km" rund 190 Query-Aufrufe. Präzision 4 macht daraus einen oder zwei Aufrufe, die dir alles in einer 500 km² großen Box zurückgeben, das du clientseitig wieder wegwirfst.
Das Geld ist nicht das, was weh tut. Diese 190 Abfragen, jede unter 4 KB und letztendlich konsistent, kommen auf 95 Read-Einheiten — etwa 0,000012 $ pro Suche zur us-east-1-On-Demand-Rate, oder 11,88 $ für eine Million Suchen. Die Round-Trips sind der eigentliche Preis. Setz sie parallel ab und deckle den Fan-out, sonst ist der p99 deines Such-Endpoints diejenige Zellenabfrage, die zufällig am langsamsten war.
Bibliotheken und Tooling
AWS hat die Geo Library for Amazon DynamoDB (Java) veröffentlicht, die das S2-basierte Muster demonstriert, und es gibt Community-Portierungen für andere Sprachen (etwa dynamodb-geo für Node.js). Prüfe den Wartungsstand, bevor du eine übernimmst — das Muster selbst ist einfach genug, um es direkt zu implementieren.
Wann stattdessen eine Suchmaschine
Für reichhaltige Geo-Prädikate (Polygone, Sortierung nach Distanz, Geo kombiniert mit Volltext) repliziere die Tabelle in einen dafür gebauten Index — dieselbe Zero-ETL-OpenSearch-Integration, die auch die Volltextsuche übernimmt, gibt dir eine Suchmaschine mit nativen Geodaten-Abfragen.
Tiefer einsteigen
Im Kern ist das Muster ein Sort-Key-Trick — der Leitfaden zu Sort-Key-Strategien behandelt den Werkzeugkasten, der Expression Builder erzeugt die begins_with-/BETWEEN-Bedingungen, die Zellenabfragen nutzen, und DynoTable lässt dich die kodierten Keys an deinen echten Items inspizieren.
Referenzen
- 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
Zuletzt verifiziert am 2026-07-13 gegen die oben verlinkte offizielle AWS-Dokumentation.
Geohashes, Zellenmaße und Abdeckungszahlen am 2026-07-28 mit einem Standard-Base32-Geohash-Encoder auf Breitengrad 48.8584 berechnet. Prüfe u09tunquc mit einem beliebigen Geohash-Tool nach. Die Kosten pro Suche nutzen die us-east-1-On-Demand-Leserate aus unserer synchronisierten Preistabelle (AWS-Pricing-API-Veröffentlichung 2026-07-22).