DynamoDB는 JSON을 저장할 수 있나요?

예. DynamoDB는 JSON을 자신의 문서 타입에 매핑해 저장할 수 있습니다. 객체는 맵(M), 배열은 리스트(L)이며 최대 32단계까지 중첩됩니다. 각 항목은 최대 400 KB를 담습니다. DynamoDB의 타입 체계는 JSON의 상위 집합이므로, 어떤 JSON 문서든 항목으로 저장한 뒤 필터링하고 업데이트하고 읽을 수 있습니다.

JSON이 DynamoDB 타입에 매핑되는 방식

  • JSON 객체 → 맵(M)
  • JSON 배열 → 리스트(L)
  • 문자열 / 숫자 / 불리언 / null → S / N / BOOL / NULL

리스트와 맵은 최대 32단계까지 중첩할 수 있으므로, 완전한 JSON 문서 하나가 항목 하나가 됩니다.

저장되는 크기는 JSON보다 작습니다

타입 태그가 붙은 전송 형식은 낭비처럼 보이고, 사람들은 그것에 요금이 부과된다고 짐작합니다. 그렇지 않습니다. DynamoDB는 항목 크기에 요금을 매기며, 그것은 각 속성 이름과 각 값의 합이고 JSON의 따옴표, 콜론, 쉼표, 중괄호는 어느 것도 포함되지 않습니다.

중첩된 주소, 두 줄짜리 항목 배열, 두 요소짜리 태그 리스트를 가진 아홉 속성 주문 문서를 세 가지 방식으로 재면:

측정 대상바이트
전송된 그대로의 DynamoDB JSON607
같은 문서를 축소한 평범한 JSON447
요금이 부과되는 항목 크기350

즉 저장된 항목은 출발점이었던 JSON보다 22% 작고, 그것을 실어 나른 요청보다 42% 작습니다. 일의 대부분은 숫자가 합니다. 149.97은 텍스트 6자 대신 약 4바이트로 저장됩니다. 문자열과 이름은 정확히 세지만, AWS는 숫자 인코딩을 유효 숫자 두 자리당 대략 1바이트로 문서화하므로 350은 1바이트 단위가 아니라 몇 바이트 오차 수준으로 정확하다고 읽으세요.

정작 비용이 드는 것은 이름 짓기입니다. 속성 이름과 맵 키가 그 350바이트 중 148바이트, 항목의 42%를 차지하며, 사본마다 그 값을 치릅니다. 10억 개 항목에서 shippingAddressaddr로 줄이는 것은 실제 절감입니다. 어떤 문서든 항목 크기 계산기로 크기를 잴 수 있으며, 우리는 그것을 엔진 자신의 요금 경계에 대고 확인했습니다. 계산기가 1,024바이트로 산정한 항목은 쓰기 단위 하나를 소비하고, 1,025바이트는 둘을 소비합니다.

왕복하는 동안 JSON이 잃는 것

DynamoDB는 숫자를 38자리 정밀도의 십진수로 저장하므로, JSON 숫자는 보존되는 것이 아니라 정규화됩니다. 쓴 뒤 곧바로 되읽으면:

{"price": 19.90}             ->  {"price": {"N": "19.9"}}
{"qty": 1.0}                 ->  {"qty": {"N": "1"}}
{"limit": 1e5}               ->  {"limit": {"N": "100000"}}
{"id": 9007199254740993}     ->  {"id": {"N": "9007199254740993"}}

마지막 줄이 유용한 줄입니다. DynamoDB는 정수를 정확히 유지하는 반면, Node에서 JSON.parse('{"id":9007199254740993}')9007199254740992를 줍니다. ID가 중요하다면 문자열로 저장하세요.

DynamoDB가 아예 받지 않는 JSON 문서가 둘 있습니다. 빈 키({"": "x"}ValidationException: Empty attribute name을 발생시키며, 중첩된 맵 안에서도 마찬가지입니다), 그리고 정밀도 한도를 넘는 숫자로 이는 ValidationException: DynamoDB only supports precision up to 38 digits를 발생시킵니다.

한 가지 주의점

DynamoDB의 타입은 JSON 타입의 상위 집합입니다. Binary(B)와 Set(SS/NS/BS) 속성에는 직접 대응하는 JSON이 없으므로, 평범한 JSON으로 되돌릴 때 set은 배열로, 바이너리는 base64로 직렬화됩니다.

다루는 방법

중첩된 JSON 속성을 직접 다룰 수 있습니다 — 맵 필드로 필터링하거나 리스트 요소 하나를 업데이트하는 일을 항목 전체를 다시 쓰지 않고 할 수 있습니다.

더 알아보기

DynamoDB JSON과 마샬링을 참조하고, JSON 변환기로 평범한 JSON과 DynamoDB JSON을 오가며 변환하세요. JSON 항목을 시각적으로 편집하려면 DynoTable을 다운로드하세요.

참고 자료

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

2026-07-28에 측정하고 재현했습니다. 세 바이트 수치는 우리 항목 크기 계산기와 직렬화된 요청에서 나왔고, 숫자 왕복과 두 ValidationException 문자열은 @aws-sdk/client-dynamodb 3.1095.0을 통한 DynamoDB Local 3.3.0의 출력을 그대로 옮긴 것으로, 그 메시지 표현은 라이브 서비스와 다를 수 있습니다.

Console 없이 DynamoDB 작업하기

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

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