DynamoDB는 NoSQL 데이터베이스입니까?
예. DynamoDB는 비관계형, 완전 관리형 키-값 및 문서 저장소인 NoSQL 데이터베이스입니다. 고정 스키마 테이블의 행이 아닌 스키마 없는 항목을 보유하고 SQL 조인 및 임시 쿼리를 교환하여 예측 가능한 한 자릿수 밀리초 성능과 거의 모든 크기로의 수평 확장을 제공합니다.
NoSQL의 종류
DynamoDB는 키-값 및 문서 데이터 모델을 모두 지원합니다. 모든 항목은 기본 키로 처리되며 속성은 모델의 문서 측면인 최대 32단계 깊이의 맵 및 목록으로 중첩될 수 있습니다.
SQL과 다른 점
- 고정 스키마 없음 — 기본 키만 미리 정의됩니다. 다른 속성은 항목마다 다릅니다.
- 조인 없음 — 대신 액세스 패턴을 중심으로 비정규화하고 모델링합니다.
- 예측 가능한 성능 — 파티션 키를 대상으로 읽기 때문에 데이터가 증가해도 지연 시간이 일정하게 유지됩니다.
JOIN으로 엔진이 하는 일
PartiQL은 DynamoDB를 SQL 형태로 보이게 하므로 경계를 놓치기 쉽습니다. AWS의 문서화된 SELECT 구문은 전체 문법이며 JOIN 절이 없습니다.
SELECT {{expression}} [, ...]
FROM {{table}}[.{{index}}]
[ WHERE {{condition}} ] [ [ORDER BY {{key}} [DESC|ASC] , ...]어쨌든 하나를 보내면 파서는 두 번째 테이블에서 중지됩니다.
await client.send(
new ExecuteStatementCommand({
Statement: `SELECT o.pk FROM "orders" o JOIN "customers" c ON o.pk = c.pk`
})
);실제 출력:
ValidationException: Only select from a single table or index is supported.
HTTP 400거부는 데이터를 읽기 전 구문 분석 시 발생하므로 인덱스 디자인을 아무리 많이 사용해도 조인을 얻을 수 없습니다. 참여는 NoSQL 저장소에서 애플리케이션의 작업입니다.
또한 모든 고객이 정직하게 제공할 수 있는 범위를 제한합니다. DynoTable의 SQL Workbench는 INNER JOIN, LEFT JOIN, GROUP BY 및 COUNT/SUM/AVG/MIN/MAX을 허용합니다.
이를 기본 Query 및 Scan 호출로 컴파일한 다음 컴퓨터에서 결과를 결합하고 집계합니다. DynamoDB는 여전히 단일 테이블 읽기만 볼 수 있습니다.
맞을 때
DynamoDB는 OLTP 워크로드, 즉 대용량이면서 미리 알려진 지점·범위 읽기와 쓰기를 위해 만들어졌습니다. 무거운 분석은 내보내기로 채우는 별도의 컬럼형 저장소가 맡아야 합니다.
프로덕션 환경에서 여전히 느끼는 NoSQL 제한
"NoSQL"은 제약 조건 제거가 아닌 액세스 모델을 설명합니다. DynamoDB는 여전히 항목당 400KB, TransactWriteItems당 25 작업, 트랜잭션당 100 읽기 또는 쓰기 작업으로 제한합니다. 중첩된 문서의 깊이는 32레벨일 수 있습니다. GSI 프로젝트는 귀하가 이름을 지정한 속성만 포함합니다. 의지할 숨겨진 스키마가 없습니다.
쿼리 시에는 이러한 제한에서 벗어날 수 없기 때문에 이러한 제한이 중요합니다. 희소 인덱스, 비정규화된 속성, 단일 테이블 키 등을 미리 모델링한 다음 파티션별로 읽습니다. Query Builder은 필터를 DynamoDB가 실제로 실행할 Query 또는 Scan 요청으로 전환합니다.
DynoTable에서: 관계형 질문이 타당할 경우 SQL Workbench는 JOIN 및 GROUP BY를 머신의 기본 Query 및 Scan 호출로 컴파일합니다. DynamoDB는 여전히 단일 테이블 읽기를 확인합니다. 지원되는 문법 및 정직한 한계는 SQL Workbench를 참조하세요.
더 알아보기
DynamoDB를 언제 쓸 것인가와 DynamoDB 데이터 모델링 방법에서 데이터를 어떻게 설계하는지 확인하세요. DynoTable 다운로드하면 NoSQL 테이블을 탐색하고, DynamoDB의 액세스 패턴 규칙 안에서 SQL을 실행할 수 있습니다.
참고 자료
- What is Amazon DynamoDB? — Amazon DynamoDB Developer Guide
- Core components of Amazon DynamoDB — Amazon DynamoDB Developer Guide
- PartiQL select statements for DynamoDB — Amazon DynamoDB Developer Guide
- Fast NoSQL Key-Value Database — Amazon DynamoDB — AWS
위에 링크된 공식 AWS 문서를 기준으로 2026년 7월 13일에 마지막으로 확인되었습니다. PartiQL SELECT 문법이 2026년 7월 28일에 다시 확인되었습니다.
Node v24.18.0에서 @aws-sdk/client-dynamodb 3.1095.0을 통해 DynamoDB Local 3.3.0에 대해 2026년 7월 28일 재현되었습니다. 위의 ValidationException는 말 그대로 엔진 출력입니다.