DynamoDB는 지리 공간 쿼리를 지원하나요?

네이티브로는 아닙니다. DynamoDB에는 지리 공간 데이터 타입도, 거리나 경계 상자 연산자도 없습니다. 지리 공간 쿼리는 대신 모델링 패턴입니다. 가까운 지점끼리 나란히 정렬되도록 지오해시나 S2 셀 ID를 키에 저장하고, 검색 영역을 덮는 셀들을 쿼리한 다음, 애플리케이션에서 정확한 거리로 다듬습니다.

지오해시 패턴

지오해시(또는 AWS의 Geo Library for DynamoDB가 쓰는 S2 셀 ID)는 위도/경도를 문자열이나 숫자로 인코딩하며, 그 접두사 가 격자 셀을 식별합니다 — 결정적으로, 가까운 지점끼리 접두사를 공유합니다. 파티션 키나 정렬 키로 저장하면 "내 근처의 지점"이 평범한 키 범위 쿼리가 됩니다:

  • 박스 쿼리 — 사각형을 덮는 셀들을 계산하고, 각 셀을 Query한 뒤 결과를 병합합니다.
  • 반경 쿼리 — 원을 덮는 셀들로 같은 일을 한 다음, 클라이언트에서 정확한 거리로 필터링합니다.

해상도가 중요합니다. 대부분의 검색이 대상 셀과 그 이웃만 건드리도록 셀 크기를 고르세요.

정밀도가 쿼리 수를 어떻게 바꾸나

에펠탑 48.8584, 2.2945를 봅시다. 지오해시는 u09tunquc입니다. 640 m 떨어진 48.8619, 2.2876의 트로카데로는 u09tup1c0입니다. 둘은 u09tu를 공유하므로 정밀도 5에서는 같은 셀에 있습니다. 정밀도 6에서는 아닙니다. 서로 보이는 거리의 두 랜드마크가 다른 셀에 있고, 그래서 셀 쿼리는 언제나 자기 셀뿐 아니라 여덟 이웃까지 포함해야 합니다.

문자 하나마다 상자가 좁아집니다. 이 위도에서:

정밀도셀 크기반경 5 km가 건드리는 셀 수
425.7 × 19.6 km1~4
53.2 × 4.9 km10~12
60.81 × 0.61 km185~193

각 행이 범위인 것은 개수가 원의 크기만이 아니라 원이 격자에 어떻게 걸리는지에도 달렸기 때문입니다. 셀은 적도로 갈수록 넓어지기도 합니다. 경도 1도가 더 넓은 땅을 덮으니까요. 같은 정밀도 5 셀이 적도에서는 폭 4.9 km이고 파리에서는 3.2 km입니다.

세 번째 열이 설계 결정 지점입니다. 정밀도 6은 "반경 5 km 안의 식당" 하나를 대략 190번의 Query 호출로 바꿉니다. 정밀도 4는 그것을 한두 번의 호출로 만들지만, 500 km² 상자 안의 모든 것을 건네주고 클라이언트에서 버리게 합니다.

무는 것은 돈이 아닙니다. 각각 4 KB 미만을 최종적 일관성으로 돌려주는 그 190번의 쿼리는 95 읽기 단위, us-east-1 온디맨드 요율로 검색당 약 $0.000012, 백만 번에 $11.88입니다. 진짜 비용은 왕복입니다. 동시에 보내고 팬아웃을 제한하세요. 그러지 않으면 검색 endpoint의 p99는 마침 가장 느렸던 셀 쿼리가 됩니다.

라이브러리와 도구

AWS는 S2 기반 패턴을 보여 주는 Geo Library for Amazon DynamoDB(Java)를 게시했고, 다른 언어로의 커뮤니티 포팅(예: Node.js용 dynamodb-geo)도 있습니다. 채택하기 전에 유지보수 상태를 확인하세요 — 패턴 자체는 직접 구현할 만큼 단순합니다.

검색 엔진을 대신 써야 할 때

풍부한 지오 술어(폴리곤, 거리순 정렬, 지오와 전문 검색의 결합)가 필요하다면 테이블을 전용 인덱스로 복제하세요 — 전문 검색을 처리하는 바로 그 제로 ETL OpenSearch 통합이 네이티브 지리 공간 쿼리를 갖춘 검색 엔진도 제공합니다.

더 알아보기

이 패턴은 본질적으로 정렬 키 요령입니다 — 정렬 키 전략 가이드가 도구 상자를 다루고, 표현식 빌더가 셀 쿼리에 쓰는 begins_with/BETWEEN 조건을 생성하며, DynoTable로는 실제 항목에서 인코딩된 키를 들여다볼 수 있습니다.

참고 자료

위에 링크된 공식 AWS 문서를 기준으로 2026-07-13에 마지막으로 검증했습니다.

지오해시, 셀 크기, 커버리지 개수는 2026-07-28에 위도 48.8584에서 표준 base32 지오해시 인코더로 계산했습니다. u09tunquc는 아무 지오해시 도구로나 확인해 보세요. 검색당 비용은 저희가 동기화한 요금 테이블의 us-east-1 온디맨드 읽기 요율을 사용합니다(AWS 요금 API 2026-07-22 발행).

Console 없이 DynamoDB 작업하기

DynamoDB로는 실행할 수 없는 진짜 SQL(JOINs, GROUP BY, 집계)을 실행하는 빠른 DynamoDB 데스크톱 클라이언트. 시각적 편집과 여러분 자신의 Bedrock 키로 동작하는 AI 에이전트를 제공합니다.

30일 무료 체험, 신용카드 불필요 — 이후 기간 제한 없는 무료 요금제.