DynamoDB 支援地理空間查詢嗎?

原生不支援。DynamoDB 沒有地理空間資料型別,也沒有距離或邊界框運算子。地理空間查詢反而是一種建模模式:在鍵中儲存 geohash 或 S2 cell ID,讓鄰近的點排在一起,查詢涵蓋你搜尋範圍的 cell,然後在你的應用程式中依精確距離細分。

geohash 模式

geohash(或 S2 cell ID,一如 AWS 的 Geo Library for DynamoDB 所用)會將緯度/經度編碼成一個字串或數字,其_前綴_可識別一個網格 cell — 且關鍵在於,鄰近的點會共享前綴。將其儲存為 partition key 或 sort key,就能把「我附近的點」變成普通的鍵範圍查詢:

  • 方框查詢 — 運算涵蓋一個矩形的 cell,對每個 cell 執行 Query,合併結果。
  • 半徑查詢 — 同樣做法,針對涵蓋一個圓形的 cell,然後在用戶端依精確距離過濾。

解析度很重要:挑選一種 cell 大小,讓大多數搜尋只觸及目標 cell 及其鄰居。

程式庫與工具

AWS 發布了 Geo Library for Amazon DynamoDB(Java),示範以 S2 為基礎的模式,其他語言也有社群移植版(例如 Node.js 的 dynamodb-geo)。採用前請先檢查其維護狀態 — 這個模式本身簡單到足以直接實作。

何時改用搜尋引擎

對於豐富的地理述詞(多邊形、依距離排序、將地理與全文結合),請將表格複製到專用索引中 — 處理全文搜尋的同一個 zero-ETL OpenSearch 整合也能給你一個具備原生地理空間查詢的搜尋引擎。DynamoDB vs Elasticsearch 會完整權衡這種資料庫加索引的分工。

深入了解

這個模式本質上是一種 sort-key 技巧 — sort key 策略指南涵蓋整套工具,運算式建構器會產生 cell 查詢所用的 begins_with/BETWEEN 條件,而 DynoTable 讓你在真實項目上檢視編碼過的鍵。

參考資料

最後驗證於 2026-07-13,對照上方連結的官方 AWS 文件。

不必透過主控台就能操作 DynamoDB

DynoTable 是一款快速的 DynamoDB 桌面用戶端 — 瀏覽表格、執行 SQL 風格的查詢,並在本機編輯項目。