Apakah DynamoDB mendukung query geospasial?
Tidak secara native. DynamoDB tak punya tipe data geospasial dan tak punya operator jarak atau bounding box. Query geospasial justru berupa pola pemodelan: simpan sebuah geohash atau ID sel S2 di dalam key supaya titik-titik yang berdekatan terurut berdampingan, query sel-sel yang menutupi area pencarian Anda, lalu perhalus dengan jarak eksak di aplikasi Anda.
Pola geohash
Sebuah geohash (atau ID sel S2, seperti yang dipakai Geo Library for DynamoDB milik AWS) mengodekan lintang/bujur menjadi sebuah string atau angka yang prefiks-nya menandai satu sel grid — dan yang terpenting, titik-titik berdekatan berbagi prefiks. Disimpan sebagai partition key atau sort key, itu mengubah "titik di dekat saya" menjadi query rentang key biasa:
- Query kotak — hitung sel-sel yang menutupi sebuah persegi panjang,
Querytiap sel, gabungkan hasilnya. - Query radius — sama, atas sel-sel yang menutupi sebuah lingkaran, lalu filter dengan jarak eksak di sisi klien.
Resolusinya penting: pilih ukuran sel yang membuat sebagian besar pencarian hanya menyentuh sel targetnya dan tetangganya.
Bagaimana presisi mengubah jumlah query
Ambil Menara Eiffel, 48.8584, 2.2945. Geohash-nya adalah u09tunquc. Trocadéro, 640 m jauhnya di 48.8619, 2.2876, adalah u09tup1c0. Keduanya berbagi u09tu, jadi pada presisi 5 keduanya duduk di sel yang sama. Pada presisi 6 tidak. Dua landmark yang bisa saling terlihat, berada di sel yang berbeda, dan itulah sebabnya sebuah query sel selalu harus menyertakan delapan tetangganya selain sel Anda sendiri.
Setiap karakter mempersempit kotaknya. Pada lintang ini:
| Presisi | Ukuran sel | Sel yang disentuh radius 5 km |
|---|---|---|
| 4 | 25,7 × 19,6 km | 1 sampai 4 |
| 5 | 3,2 × 4,9 km | 10 sampai 12 |
| 6 | 0,81 × 0,61 km | 185 sampai 193 |
Tiap baris berupa rentang karena jumlahnya bergantung pada di mana lingkarannya jatuh terhadap grid, bukan hanya pada seberapa besar lingkarannya. Sel juga melebar ke arah khatulistiwa, tempat satu derajat bujur mencakup lebih banyak daratan. Sel presisi 5 yang sama berukuran 4,9 km di khatulistiwa dan 3,2 km di Paris.
Kolom ketiga itulah keputusan desainnya. Presisi 6 mengubah satu "restoran dalam radius 5 km" menjadi kira-kira 190 panggilan Query. Presisi 4 membuatnya satu atau dua panggilan yang menyerahkan segala isi kotak 500 km² untuk Anda buang di sisi klien.
Yang menggigit bukan uangnya. 190 query itu, masing-masing mengembalikan di bawah 4 KB secara eventually consistent, berjumlah 95 unit baca, sekitar $0,000012 per pencarian pada tarif on-demand us-east-1, atau $11,88 untuk sejuta pencarian. Perjalanan bolak-baliknya yang jadi biaya sebenarnya. Kirimkan secara bersamaan dan batasi fan-out-nya, atau p99 endpoint pencarian Anda adalah query sel mana pun yang kebetulan paling lambat.
Library dan perkakas
AWS menerbitkan Geo Library for Amazon DynamoDB (Java) yang memperagakan pola berbasis S2 itu, dan port komunitas tersedia untuk bahasa lain (misalnya dynamodb-geo untuk Node.js). Periksa status pemeliharaannya sebelum mengadopsi salah satunya — polanya sendiri cukup sederhana untuk diimplementasikan langsung.
Kapan sebaiknya memakai mesin pencari
Untuk predikat geo yang kaya (poligon, pengurutan berdasarkan jarak, menggabungkan geo dengan full-text), replikasikan tabelnya ke sebuah index khusus — integrasi zero-ETL OpenSearch yang sama yang menangani pencarian full-text juga memberi Anda mesin pencari dengan query geospasial native.
Pelajari lebih lanjut
Polanya pada dasarnya trik sort key — panduan strategi sort key membahas perkakasnya, expression builder menghasilkan kondisi begins_with/BETWEEN yang dipakai query sel, dan DynoTable memungkinkan Anda memeriksa key terkode pada item Anda yang sebenarnya.
Referensi
- 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
Terakhir diverifikasi 2026-07-13 terhadap dokumentasi resmi AWS yang ditautkan di atas.
Geohash, dimensi sel, dan jumlah cakupan dihitung 2026-07-28 dengan encoder geohash base32 standar pada lintang 48.8584. Periksa u09tunquc dengan alat geohash mana pun. Biaya per pencariannya memakai tarif baca on-demand us-east-1 di tabel harga tersinkron kami (publikasi AWS pricing API 2026-07-22).