본문 바로가기

프로그래밍/⚙️DevOps

AWS) DynamoDB Query

 

 

DynamoDB Query 정리

“Query는 조건 검색이 아니라 키 기반 조회다”

목차

  1. Query란 무엇인가
  2. Query의 절대 규칙
  3. Partition Key와 Sort Key 역할
  4. Key Condition Expression
  5. Filter Expression (주의점)
  6. AWS CLI Query 예제 해설
  7. Query vs Scan 차이
  8. 실무에서 자주 틀리는 포인트

1. Query란 무엇인가

Amazon DynamoDB Query
Partition Key를 기준으로 데이터를 빠르게 조회하는 DynamoDB의 기본 조회 방식이다.

  • 전체 테이블 검색 ❌
  • 특정 파티션 내부만 조회 ⭕
  • 성능 보장
  • 비용 예측 가능

👉 DynamoDB에서 “조회”라고 하면 기본적으로 Query를 의미한다.


2. Query의 절대 규칙⭐

❗ Query는 반드시 이것을 요구한다

  1. Partition Key = 단일 값
  2. (선택) Sort Key 조건
Partition Key → 반드시 equality(=)
Sort Key → 조건 가능

 

❌ Partition Key에 범위 조건 불가
❌ Partition Key 없이 Query 불가


3. Partition Key와 Sort Key 역할

예제 테이블: Music

Attribute역할

Artist Partition Key
SongTitle Sort Key
Album 일반 속성
Year 일반 속성

 

Partition Key

  • 데이터가 저장되는 물리적 기준
  • Query 범위를 결정
  • 반드시 단일 값

예:

Artist = "Artist2"

 

Sort Key

  • 같은 Partition Key 내부 정렬 기준
  • 조건 검색 가능

예:

SongTitle = "SongB"
SongTitle begins_with "Song"

4. Key Condition Expression

Query에서 가장 중요한 부분이다.

기본 구조

PartitionKey = :value
AND SortKey 조건

사용 가능한 Sort Key 조건

  • =
  • <, <=, >, >=
  • BETWEEN
  • begins_with()

❌ Partition Key에는 BETWEEN, begins_with 사용 불가


5. Filter Expression 

Filter Expression이란?

  • Query 결과 이후 추가 필터링
  • 서버에서 데이터 읽은 후 제거
읽기 → 필터링 → 반환

중요한 포인트

  • ❌ 성능 최적화 아님
  • ❌ RCUs 절감 안 됨
  • ⭕ 결과 개수만 줄임

👉 Filter는 “후처리”일 뿐이다


6. AWS CLI Query 예제 해설

요구 조건

  • Artist = Artist2
  • SongTitle = SongB
  • Year > 2018

CLI 명령어

aws dynamodb query \
  --table-name Music \
  --key-condition-expression "Artist = :a and SongTitle = :t" \
  --filter-expression "Year > :yyyy" \
  --expression-attribute-values '{
    ":a": {"S":"Artist2"},
    ":t": {"S":"SongB"},
    ":yyyy": {"N":"2018"}
  }'

해석 순서

  1. Artist = Artist2 → 파티션 결정
  2. SongTitle = SongB → 정렬 키로 아이템 선택
  3. Year > 2018 → 결과에서 필터링

7. Query vs Scan 차이

구분 Query Scan
기준 Partition Key 전체 테이블
성능 매우 빠름 느림
비용 예측 가능 비쌈
실무 사용

 

👉 Scan은 운영 환경에서 쓰지 않는 것이 원칙


8. 실무에서 자주 틀리는 포인트

❌ 실수 1

“Filter로 Partition Key 대신 쓰면 되지 않나요?” 👉 안 됨.


Query는 Partition Key 필수


❌ 실수 2

“Filter 쓰면 비용 줄어들죠?” 👉 ❌

 

읽은 만큼 비용 발생


❌ 실수 3

“조건 검색이니까 RDB WHERE랑 비슷하죠?” 👉 ❌

 

DynamoDB는 조회 패턴 설계가 먼저


🔥핵심 요약🔥

  • Query는 키 기반 조회
  • Partition Key는 반드시 equality
  • Sort Key만 조건 가능
  • Filter는 성능 최적화 수단이 아님
  • Query 패턴이 곧 테이블 설계다

👉 DynamoDB에서는
“어떻게 조회할 것인가”를 먼저 정해야 한다

 

 

 

 

 

 

 

'프로그래밍 > ⚙️DevOps' 카테고리의 다른 글

AWS) Amazon Elastic File System(EFS)  (1) 2026.01.19
AWS) AWS Cloud Adoption Framework (CAF)  (0) 2026.01.19
AWS) DynamoDB Overview  (0) 2026.01.19
AWS) VPC Security  (0) 2026.01.09
AWS) VPC 개념  (0) 2026.01.09