DynamoDB는 지리 공간 쿼리를 지원하나요?
기본적으로는 아닙니다. DynamoDB에는 지리 공간 데이터 타입도, 거리나 경계 상자 연산자도 없습니다. 대신 지리 공간 쿼리는 모델링 패턴입니다: 인접한 지점이 함께 정렬되도록 geohash나 S2 셀 ID를 키에 저장하고, 검색 영역을 덮는 셀을 쿼리한 다음, 애플리케이션에서 정확한 거리로 정제합니다.
geohash 패턴
geohash(또는 AWS의 Geo Library for DynamoDB에서 사용하는 S2 셀 ID)는 위도/경도를 _접두사_가 그리드 셀을 식별하는 문자열이나 숫자로 인코딩하며 — 결정적으로, 인접한 지점은 접두사를 공유합니다. 파티션 키나 정렬 키로 저장하면 "내 근처의 지점"이 평범한 키 범위 쿼리로 바뀝니다:
- 박스 쿼리 — 사각형을 덮는 셀을 계산하고, 각 셀을
Query한 뒤 결과를 병합합니다. - 반경 쿼리 — 원을 덮는 셀에 대해 동일하게 한 다음, 클라이언트 측에서 정확한 거리로 필터링합니다.
해상도가 중요합니다: 대부분의 검색이 대상 셀과 그 이웃만 건드리는 셀 크기를 선택하세요.
라이브러리와 도구
AWS는 S2 기반 패턴을 시연하는 Geo Library for Amazon DynamoDB(Java)를 게시했으며, 다른 언어를 위한 커뮤니티 포트(예: Node.js용 dynamodb-geo)도 존재합니다. 채택하기 전에 유지 관리 상태를 확인하세요 — 패턴 자체는 직접 구현할 만큼 충분히 간단합니다.
대신 검색 엔진을 사용할 때
풍부한 지리 술어(폴리곤, 거리순 정렬, 지리와 전문 검색 결합)의 경우 테이블을 목적에 맞게 구축된 인덱스로 복제하세요 — 전문 검색을 처리하는 동일한 zero-ETL OpenSearch 통합이 네이티브 지리 공간 쿼리를 갖춘 검색 엔진도 제공합니다. DynamoDB vs Elasticsearch가 그 데이터베이스-플러스-인덱스 분할을 온전히 저울질합니다.
더 알아보기
이 패턴은 근본적으로 정렬 키 요령입니다 — 정렬 키 전략 가이드가 도구 상자를 다루고, 표현식 빌더가 셀 쿼리에 사용되는 begins_with/BETWEEN 조건을 생성하며, DynoTable은 실제 항목의 인코딩된 키를 검사할 수 있게 해줍니다.
참고 자료
- 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
Last verified 2026-07-13 against the official AWS documentation linked above.