DynamoDB에 배열을 저장할 수 있나요?
가능합니다. DynamoDB는 List(L) 타입으로 배열을 저장합니다. 문자열, 숫자, 불리언, null, 맵, 중첩 리스트를 포함해 여러 타입을 섞어 담을 수 있는 순서 있는 컬렉션입니다. 순서가 없고 값이 고유한 컬렉션에는 문자열, 숫자, 바이너리 집합도 제공합니다. 항목이 400 KB 미만으로 유지되는 한 요소 개수 제한은 없습니다.
리스트(순서 있는 배열)
리스트는 순서를 유지하고 중복과 혼합 타입을 허용합니다. JSON 배열에 그대로 대응하며, 최대 32단계까지 중첩할 수 있습니다(맵의 리스트, 리스트의 리스트).
문서화된 그 한도는 맨 아래의 값도 함께 셉니다. 문자열을 L 컨테이너 31개로 감싸면 쓰기가 되고, 32번째 컨테이너에서는 실패하며, 중첩 M에도 같은 경계가 적용됩니다:
ValidationException: Nesting Levels have exceeded supported limits:
Attributes in the item have nested levels beyond supported limit집합(고유한 값)
- 문자열 집합(SS), 숫자 집합(NS), 바이너리 집합(BS) 은 한 가지 타입의 고유한 값을 순서 없이 담습니다.
- 집합은 비어 있을 수 없습니다(그러면
ValidationException이 발생합니다).
멤버십과 고유성이 중요하다면 집합을, 순서나 혼합 타입이 중요하다면 리스트를 쓰세요.
집합은 순서를 바꾸고 중복을 거부합니다
["zulu", "alpha", "mike"]를 문자열 집합으로 저장하면 ["alpha", "mike", "zulu"]로 읽힙니다. 숫자 집합은 수치순으로 정렬합니다. ["30", "4", "100"]은 ["4", "30", "100"]으로 돌아옵니다. 같은 값을 리스트에 담으면 쓴 순서 그대로 돌아옵니다.
멤버가 중복되면 조용한 중복 제거가 아니라 명백한 실패입니다:
ValidationException: Input collection contains duplicates그리고 집합은 결코 비어 있을 수 없으므로, 마지막 멤버를 DELETE하면 속성 자체가 사라집니다. 빈 집합이 돌아오리라 기대하는 코드는 대신 없는 속성을 받게 되므로, 길이가 0인지가 아니라 attribute_exists로 검사하세요.
실제로 몇 개가 들어가나요
"요소 개수 제한 없음"은 정확하지만 실무에 옮기기 어렵습니다. 쓸모 있는 답은 400 KB를 요소 하나의 비용으로 나눈 값입니다. 리스트는 3바이트의 오버헤드를 가지고, 그다음 각 요소는 자기 크기에 1바이트를 더한 만큼을 차지합니다.
한 글자짜리 파티션 키 아래에 36자 UUID 문자열을 담으면 그 경계는 11,070개 입니다. 11,071번째를 추가하면 거부됩니다:
ValidationException: Item size has exceeded the maximum allowed size항목 크기 계산기는 그 두 항목을 409,599바이트와 409,636바이트로 계산하므로, 엔진과 정확히 같은 자리에 409,600바이트 선을 긋습니다. 더 큰 쪽을 쓰는 데는 쓰기 단위 400이 듭니다.
더 알아보기
DynamoDB 데이터 타입을 참고하고, 중첩 구조는 JSON 변환기로 변환하세요. 리스트와 집합 속성을 편집하려면 DynoTable을 다운로드하세요.
참고 자료
- Supported data types and naming rules in Amazon DynamoDB — Amazon DynamoDB Developer Guide
- Constraints in Amazon DynamoDB — Amazon DynamoDB Developer Guide
- Quotas in Amazon DynamoDB — Amazon DynamoDB Developer Guide
위에 링크된 공식 AWS 문서를 기준으로 2026-07-13에 마지막으로 검증했습니다.
2026-07-28에 @aws-sdk/client-dynamodb 3.1095.0을 통해 DynamoDB Local 3.3.0에 대해 측정하고 재현했습니다 — 위의 요소 개수, 중첩 경계, 집합 왕복, 오류 문자열은 추정이 아니라 엔진 출력입니다. 오류 문자열의 문구는 실제 서비스에서 다를 수 있습니다.