DynamoDB FAQ — 자주 묻는 질문과 답변
개발자가 가장 자주 묻는 DynamoDB 질문 — 각 질문마다 명확하고 솔직한 답변과 다음 단계를 안내합니다.
DynamoDB 특성 및 기능
DynamoDB는 키-값 저장소인가요?
예, 동시에 문서 저장소입니다. 모든 항목은 기본 키로 주소가 지정되는 반면 속성은 맵으로 중첩되어 최대 32레벨까지 나열됩니다.
DynamoDB는 관계형 데이터베이스인가요?
아니요. DynamoDB는 고정 스키마도, 외래 키도, 조인도 없는 NoSQL 키-값 및 문서 데이터베이스입니다. 대신 액세스 패턴에 맞춰 비정규화합니다.
DynamoDB는 ACID를 준수하나요?
네 — DynamoDB는 TransactWriteItems와 TransactGetItems로 ACID 트랜잭션을 지원하며, 리전 단위로 최대 100개의 작업을 전부 아니면 전무인 하나의 작업으로 묶습니다.
DynamoDB는 암호화되나요?
네 — 모든 DynamoDB 데이터는 기본적으로 AWS KMS 키로 저장 시 암호화되며, 암호화를 끌 수는 없습니다. 전송 중 데이터는 HTTPS/TLS로 보호됩니다.
DynamoDB는 최종적 일관성을 갖나요?
기본적으로는 그렇습니다 — DynamoDB 읽기는 최종적 일관성을 가집니다. 테이블과 LSI에서는 강력한 일관성 읽기를 선택할 수 있지만, GSI는 언제나 최종적 일관성입니다.
DynamoDB는 무료인가요?
부분적으로 무료입니다 — DynamoDB에는 상시 무료 티어가 있습니다. 월 25 GB 스토리지에 쓰기 용량 단위 25개와 읽기 용량 단위 25개입니다. 그 이상의 사용량은 요청당·GB당 청구됩니다.
DynamoDB는 인메모리인가요?
아니요 — DynamoDB는 3개의 가용 영역에 걸쳐 내구성 있는 스토리지에 대한 모든 쓰기를 유지합니다. DAX는 마이크로초 읽기 기능을 갖춘 선택적 인메모리 캐시를 추가합니다.
DynamoDB는 NoSQL 데이터베이스인가요?
예. DynamoDB는 완전관리형 NoSQL 키-값 및 문서 저장소입니다. 스키마 없는 항목을 보유하고 수평으로 확장되며 PartiQL 파서는 JOIN을 거부합니다.
DynamoDB는 오픈 소스인가요?
아니요 — DynamoDB는 독점적인 완전 관리형 AWS 서비스입니다. DynamoDB Local은 개발용 무료 에뮬레이터이지만, 프로덕션 엔진은 자체 호스팅할 수 없습니다.
DynamoDB는 스키마리스인가요?
예 — DynamoDB는 스키마리스입니다. 테이블 생성 시 정의하는 것은 기본 키뿐이며, 다른 모든 속성은 선택 사항이고 항목마다 자유롭게 달라질 수 있습니다.
DynamoDB는 서버리스인가요?
예 — DynamoDB는 완전 관리형 서버리스 NoSQL 데이터베이스입니다. 프로비저닝하거나 패치할 서버가 없고, 용량은 자동으로 확장되며, 사용한 만큼 지불합니다.
DynamoDB에 저장할 수 있는 것
DynamoDB에 null 값이 있을 수 있나요?
예 — DynamoDB에는 전용 NULL 유형이 있으며 키가 아닌 속성에 대해 빈 문자열과 빈 목록/맵을 허용합니다. 그러나 빈 세트는 거부됩니다.
DynamoDB에 배열을 저장할 수 있나요?
가능합니다. DynamoDB는 배열을 List(L) 타입으로 저장하며, 순서가 있고 타입을 섞을 수 있으며 32단계까지 중첩됩니다. 400 KB 항목 하나에 UUID 문자열 약 11,070개가 들어갑니다.
DynamoDB는 BLOB을 저장할 수 있나요?
예, 한도 안에서는 가능합니다 — DynamoDB는 400 KB 미만의 Binary 속성(base64 인코딩)에 바이너리 대용량 객체를 저장합니다. 더 큰 BLOB에는 AWS가 Amazon S3를 권장합니다.
DynamoDB에 이미지를 저장할 수 있나요?
가능하지만 작은 이미지만 가능합니다 — DynamoDB는 400 KB 항목 한도 안에서 이미지를 base64 바이너리 속성으로 저장합니다. 더 큰 이미지에는 AWS가 Amazon S3를 권장합니다.
DynamoDB는 JSON을 저장할 수 있나요?
예 — DynamoDB는 문서 타입을 사용해 JSON을 저장합니다. 객체는 맵(M), 배열은 리스트(L)로 저장하며, 항목당 400 KB 한도 안에서 최대 32단계까지 중첩할 수 있습니다.
DynamoDB는 얼마나 많은 데이터를 저장할 수 있나요?
DynamoDB 테이블에는 크기 한도가 없고 수평으로 확장됩니다. 실제 한도는 항목당 400 KB이며, LSI가 있을 때에 한해 항목 컬렉션당 10 GB입니다.
DynamoDB의 최대 항목 크기는 얼마인가요?
400 KB, 정확히는 409,600바이트이며 값뿐 아니라 속성 이름도 함께 셉니다. DynamoDB 항목 크기 한도는 올릴 수 없으므로 더 큰 객체는 S3에 둡니다.
DynamoDB 통합 및 액세스
DynamoDB는 S3로 내보낼 수 있나요?
예 — 내장된 S3 내보내기가 전체 또는 증분 테이블 스냅샷을 DynamoDB JSON이나 Amazon Ion으로 씁니다. PITR이 필요하며 읽기 용량은 소비하지 않습니다.
Power BI를 DynamoDB에 연결할 수 있나요?
Power BI에는 네이티브 DynamoDB 커넥터가 없습니다. Amazon Athena의 ODBC 커넥터나 CData 같은 드라이버를 거쳐 연결하고, 새로 고칠 때마다 스캔되는 양의 비용을 따져 보세요.
AWS 밖에서 DynamoDB를 쓸 수 있나요?
예 — DynamoDB는 HTTPS로 어디서든 닿을 수 있습니다. AWS 자격 증명을 가진 앱이라면 노트북, 서버, 다른 클라우드 어디에서든 리전 endpoint를 호출할 수 있습니다.
DynamoDB에 트리거가 있나요?
네. DynamoDB 트리거는 Streams와 Lambda의 조합입니다. Lambda가 초당 네 번 스트림을 폴링해 모든 항목 변경마다 실행됩니다. CREATE TRIGGER 문은 없습니다.
DynamoDB는 GraphQL을 지원하나요?
네, AWS AppSync를 통해 지원합니다 — DynamoDB 테이블을 데이터 소스로 사용하는 관리형 GraphQL 서비스이며, 리졸버가 GraphQL 작업을 DynamoDB 호출로 매핑합니다.
DynamoDB 작업 및 쿼리
DynamoDB는 오토 스케일링을 할 수 있나요?
예. DynamoDB 오토 스케일링은 프로비저닝된 용량에서 20~90% 목표 사용률을 추적하지만, 평균 사용률이 28.9% 아래면 온디맨드 모드가 더 저렴합니다.
DynamoDB를 로컬에서 실행할 수 있나요?
예 — DynamoDB Local은 Docker, Java 아카이브, Maven으로 여러분의 컴퓨터에서 실행되는 무료 다운로드판 DynamoDB이며, 오프라인에서 동일한 API를 제공합니다.
DynamoDB에 백업이 있나요?
예 — 장기 스냅샷을 위한 온디맨드 백업과, 지난 35일 중 어느 초로든 복원할 수 있는 연속 백업인 특정 시점 복구(PITR)가 있습니다.
DynamoDB는 전문 검색을 지원하나요?
아니요, 네이티브로는 지원하지 않습니다 — DynamoDB에는 관련성 순위도, 어간 추출도, 퍼지 매칭도 없습니다. AWS 네이티브 해법은 zero-ETL OpenSearch 통합입니다.
DynamoDB는 지리 공간 쿼리를 지원하나요?
네이티브로는 아닙니다 — DynamoDB에는 지오 데이터 타입도 거리 연산자도 없습니다. 지리 공간 조회는 지오해시나 S2 셀 키를 범위로 쿼리하는 방식으로 모델링합니다.
DynamoDB는 조인을 지원합니까?
아니요. DynamoDB에는 JOIN이 없으며 PartiQL은 두 테이블로 구성된 SELECT를 완전히 거부하므로 비정규화합니다. DynoTable SQL Workbench는 클라이언트측에서 실제 조인을 실행합니다.
DynamoDB는 SQL을 지원합니까?
부분적으로. PartiQL은 SELECT, INSERT, UPDATE 및 DELETE를 포함하지만 JOIN, GROUP BY 및 COUNT는 거부합니다. DynoTable SQL Workbench는 테이블에서 이를 실행합니다.
DynamoDB는 트랜잭션을 지원하나요?
네. DynamoDB 트랜잭션은 여러 테이블에 걸친 최대 100개 작업을 전부 아니면 전무인 하나의 작업으로 묶으며, 일반 쓰기의 두 배에 해당하는 용량 유닛을 씁니다.
DynamoDB는 TTL을 지원하나요?
예 — DynamoDB는 Time to Live를 지원합니다. Unix 에포크 만료 시각을 초 단위로 담은 Number 속성을 지정하면 DynamoDB가 만료된 항목을 추가 비용 없이 자동으로 삭제합니다.
DynamoDB는 얼마나 빠른가요?
빠릅니다 — DynamoDB는 어떤 규모에서도 일관된 한 자릿수 밀리초 지연 시간을 제공합니다. 인메모리 캐시인 DAX는 최종적 일관성 읽기를 마이크로초로 줄입니다.
DynamoDB에는 테이블을 몇 개까지 만들 수 있나요?
기본값은 리전당 DynamoDB 테이블 2,500개이고, 요청하면 10,000개까지 올릴 수 있습니다. 테이블에는 크기 한도가 없지만, 프로비저닝된 테이블은 놀고 있어도 하나당 월 $0.57가 듭니다.
DynamoDB에서 항목 개수는 어떻게 세나요?
Query나 Scan에 Select: COUNT를 쓰고, LastEvaluatedKey로 페이지를 넘기며 Count를 합산하세요. 개수를 세는 데도 항목을 반환할 때와 같은 읽기 용량이 듭니다.
DynamoDB 아키텍처 및 내부 구조
DynamoDB를 캐시로 사용할 수 있나요?
네 — DynamoDB의 빠른 키 조회와 TTL은 이를 내구성 있는 캐시로 만들어 줍니다. 마이크로초 단위 읽기가 필요하다면 관리형 인메모리 write-through 캐시인 DAX를 앞단에 두세요.
DynamoDB는 외래 키를 지원하나요?
아니요. DynamoDB에는 외래 키도, 참조 무결성도, 연쇄 삭제도 없습니다. 부모를 지워도 자식은 그대로 남습니다. 관계는 직접 모델링해야 합니다.
DynamoDB는 보조 인덱스를 지원하나요?
예. DynamoDB에는 글로벌 보조 인덱스(자체 키, 최종적 일관성, 기본값으로 테이블당 20개)와 로컬 보조 인덱스(강력한 일관성)가 있습니다.
DynamoDB는 다중 리전인가요?
표준 DynamoDB 테이블은 단일 리전입니다. 글로벌 테이블은 리전 간 다중 활성으로 복제해 최대 99.999% 가용성을 제공하고, 리전마다 스토리지 요금이 붙습니다.
DynamoDB를 쓰지 말아야 할 때는 언제인가요?
분석 워크로드, 알 수 없는 액세스 패턴, 임의 쿼리가 많은 경우, 그리고 조인에 의존하는 정규화된 관계형 스키마에는 DynamoDB를 쓰지 마세요.