What is Amazon DynamoDB? - Amazon DynamoDB
AWS에서 제공하는 서버리스 기반 Key-Value형식의 NoSQL 데이터 베이스이다.
→ 테이블 Join이 불필요하다.(지원X)
→ ACID 트랜잭션(원자성, 일관성, 격리성, 영속성) 지원
→ 모든 규모에서 10m/s 미만의 성능을 제공하여 관계형 데이터베이스의 성능과 확장성을 개선

People
{
"PersonID": 101,
"LastName": "Smith",
"FirstName": "Fred",
"Phone": "555-4321"
}
{
"PersonID": 102,
"LastName": "Jones",
"FirstName": "Mary",
"Address": {
"Street": "123 Main",
"City": "Anytown",
"State": "OH",
"ZIPCode": 12345
}
}
{
"PersonID": 103,
"LastName": "Stephens",
"FirstName": "Howard",
"Address": {
"Street": "123 Main",
"City": "London",
"PostalCode": "ER3 5K8"
},
"FavoriteColor": "Blue"
}
Address에 속성이 또 있는데, 최대 32개 깊이 수준까지 중첩된 속성을 지원한다.// 중첩 속성 예시
{
"userId": "u001",
"name": "Kim",
"address": {
"city": "Seoul",
"detail": {
"road": "Teheran-ro",
"building": {
"name": "ABC Tower",
"floor": {
"value": 12
}
}
}
}
}
| 타입 | 설명 | 예시 |
|---|---|---|
| String | 문자열 | "hello" |
| Number | 숫자 | 123 |
| Boolean | 참/거짓 | true |
| Map | 객체 | { "city": "Seoul" } |
| List | 배열 | ["a", "b"] |
| String Set | 문자열 집합 | ["tag1", "tag2"] |
| Number Set | 숫자 집합 | [1, 2, 3] |
| Binary | 바이너리 | 이미지/파일 일부 등 |
테이블을 생성할 때는 테이블 이름 외에도 테이블의 기본 키를 지정해야 한다. Primary Key는 테이블의 각 항목을 나타내는 고유 식별자이며, 두 항목이 동일한 키를 가질 수 없다.
Primary Key 속성에 허용되는 데이터 형식은 문자열. 숫자 또는 이진수 뿐이다. 다른 속성들은 제한이 없다.
Partition Key
DynamoDB는 내부 해시 함수에 대한 입력으로 Partition Key 값을 사용한다. 해시 함수 출력에 따라 항목을 저장할 Partition(DynamoDB 내부의 물리적 스토리지)이 결정된다.
Partition Key로만 구성되어 있는 테이블에서는 어떤 두 개의 테이블 항목도 동일한 파티션 키 값을 가질 수 없다.
예를 들어 채팅방 기준으로 메시지를 묶고 싶다면:
{
"PK":"ROOM#room-001",
"SK":"MSG#2026-05-11T15:00:00.000Z#msg-001"
}
여기서 PK가 Partition Key
PK = ROOM#room-001
같은 채팅방 메시지는 같은 Partition Key를 가진다.
ROOM#room-001
├─ MSG#2026-05-11T15:00:00#msg-001
├─ MSG#2026-05-11T15:01:00#msg-002
└─ MSG#2026-05-11T15:02:00#msg-003
이렇게 하면 “특정 채팅방의 메시지 목록 조회”가 쉽다.
PK = ROOM#room-001 인 item들을 Query