DynamoDB coğrafi konum sorgularını destekler mi?
Doğal olarak değil. DynamoDB'nin coğrafi konum veri türü ve mesafe veya sınırlayıcı kutu operatörleri yoktur. Bunun yerine coğrafi konum sorguları bir modelleme desenidir: yakındaki noktaların birlikte sıralanması için anahtarda bir geohash veya S2 hücre kimliği saklayın, arama alanınızı kaplayan hücreleri sorgulayın, ardından uygulamanızda tam mesafeye göre iyileştirin.
Geohash deseni
Bir geohash (ya da AWS'nin DynamoDB için Geo Library'sinde kullanıldığı gibi bir S2 hücre kimliği), enlem/boylamı, öneki bir ızgara hücresini tanımlayan bir dizeye veya sayıya kodlar — ve en önemlisi, yakındaki noktalar önekleri paylaşır. Bir bölüm veya sıralama anahtarı olarak saklandığında, bu "yakınımdaki noktalar"ı sıradan anahtar aralığı sorgularına dönüştürür:
- Kutu sorgusu — bir dikdörtgeni kaplayan hücreleri hesaplayın, her hücreyi
Queryile sorgulayın, sonuçları birleştirin. - Yarıçap sorgusu — aynısı, bir daireyi kaplayan hücreler üzerinden, ardından istemci tarafında tam mesafeye göre filtreleyin.
Çözünürlük önemlidir: çoğu aramanın yalnızca hedef hücreye ve komşularına dokunduğu bir hücre boyutu seçin.
Kütüphaneler ve araçlar
AWS, S2 tabanlı deseni gösteren Geo Library for Amazon DynamoDB'yi (Java) yayınladı ve diğer diller için topluluk uyarlamaları mevcuttur (örneğin Node.js için dynamodb-geo). Birini benimsemeden önce bakım durumunu kontrol edin — desenin kendisi doğrudan uygulanacak kadar basittir.
Bunun yerine ne zaman bir arama motoru kullanılmalı
Zengin coğrafi yüklemler (poligonlar, mesafeye göre sıralama, coğrafiyi tam metinle birleştirme) için tabloyu özel amaçlı bir indekse çoğaltın — tam metin aramayı ele alan aynı sıfır-ETL OpenSearch entegrasyonu size yerel coğrafi konum sorgularına sahip bir arama motoru da verir. DynamoDB ile Elasticsearch, o veritabanı-artı-indeks ayrımını eksiksiz olarak tartar.
Daha derine inin
Desen özünde bir sıralama anahtarı hilesidir — sıralama anahtarı stratejileri kılavuzu araç kutusunu kapsar, ifade oluşturucu hücre sorgularının kullandığı begins_with/BETWEEN koşullarını üretir ve DynoTable gerçek öğelerinizdeki kodlanmış anahtarları incelemenizi sağlar.
Kaynaklar
- 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
En son 2026-07-13 tarihinde yukarıda bağlantısı verilen resmi AWS belgelerine karşı doğrulandı.