DynamoDB는 key-value 구조를 가진 완전 관리형 NoSQL 데이터베이스입니다.
프로비저닝, 복제, 버전 관리, 클러스터 확장 등을 모두 관리해줍니다.워크로드 수요에 맞춰 자동으로 처리 능력을 확장하며 테이블 크기가 증가함에 따라 데이터를 파티셔닝 및 재파티셔닝합니다.AWS 리전의 세 개 시설에 데이터를 동기적으로 복제하여 높은 가용성과 데이터 안정성을 제공합니다.
기본 키는 단일 속성 파티션 키
또는 복합 파티션-정렬 키
중 하나가 됩니다. (단일 키는 파티션 키, 해시값으로 파티셔닝합니다.)DynamoDB는 복합 파티션-정렬 키를 파티션 키 요소 및 정렬 키 요소로 인덱싱합니다.복합 파티션-정렬 키를 사용하는 경우 첫 번째와 두 번째 요소 값 사이의 계층 구조가 유지됩니다.
테이블에서 하나 이상의 보조 인덱스를 생성할 수 있습니다.
- 글로벌 보조 인덱스
- 파티션 키 및 정렬 키가 테이블의 파티션 키 및 정렬 키와 다를 수 있는 인덱스
- 테이블당 20개 (기본 할당량)
- 로컬 보조 인덱스
- 테이블과 파티션 키는 동일하지만 정렬 키는 다른 인덱스
- 테이블당 5개 (기본 할당량)
DynamoDB 콘솔 또는 CreateTable
API를 사용하여 테이블을 만듭니다.PutItem
또는 BatchWriteItem
API를 사용하여 항목을 삽입하고, GetItem
또는 BatchGetItem
을 사용하거나,복합 기본 키가 활성화되어 사용되고 있는 경우는 Query API
를 사용하여 테이블에 추가한 항목을 검색할 수 있습니다.
각 DynamoDB 테이블에는 프로비저닝된 읽기 처리량과 쓰기 처리량이 지정되어 있습니다.프리 티어를 초과하는 경우 그 처리 능력에 1시간 단위로 요금이 부과되고, 테이블로 요청을 전송했는지 여부와 관계없이 처리 능력에 대해 시간당 요금이 부과됩니다.
단일 테이블에 프로비저닝할 수 있는 최대 처리량은 무제한입니다.최소 처리량은 1개의 쓰기 용량 유닛과 1개의 읽기 용량 유닛이고, 전체 테이블의 용량을 합산하여 1개 계정에서 각 25개 유닛까지 프리 티어 범위가 됩니다.
최종적 일관된 읽기와 강력한 일관된 읽기 옵션의 차이를 정확히 알아두는 것이 좋습니다.
- 최종적 일관된 읽기 (기본값)
- 읽기 처리량을 최대화
- 최근 완료한 쓰기 결과를 반영하지 못할 수 있습니다.
- 강력한 일관된 읽기
- 읽기 전에 성공적인 응답을 수신한 모든 쓰기를 반영한 결과를 반환합니다.
- ACID 트랜잭션
- 단일 AWS 계정 및 지역에서 ACID(원자성, 일관성, 격리성, 지속성)를 제공합니다.
- 여러 항목에 대한 통합된 삽입, 삭제, 업데이트가 필요한 애플리케이션을 구축하는 경우 트랜잭션을 사용할 수 있습니다.
새 테이블을 생성할 때 암호화를 활성화하면 DynamoDB에서 나머지를 모두 처리해 줍니다.암호화 유형은 다음 세 가지가 있습니다.
- 기본값
- AWS 소유 고객 마스터 키(CMK). 키는 DynamoDB가 소유합니다. 추가 비용은 없습니다.
- KMS - 고객 관리형
- 고객 관리형 CMK. 사용자 계정에 키가 저장되며 사용자가 생성, 소유, 관리하게 됩니다. KMS 비용이 발생합니다.
- KMS - AWS 관리형
- AWS 관리형 CMK. 사용자 계정에 키가 저장되며 AWS KMS에 의해 관리됩니다. KMS 비용이 발생합니다.
DAX는 완전 관리형 In-Memory Read Performance를 향상시켜주는 인메모리 캐시 서비스입니다.
테이블의 실시간 데이터 수정 이벤트를 캡처하는 기능입니다.테이블에서 스트림을 설정하면 다음과 같은 이벤트가 발생할 때마다 스트림 레코드를 기록합니다.
- 테이블에 새 항목이 추가되는 경우, 모든 속성을 포함하여 전체 항목의 이미지 캡처
- 항목이 업데이트 되는 경우, 수정된 속성의 이전 및 이후 이미지 캡처
- 항목이 삭제되는 경우, 삭제하기 전의 전체 항목 이미지 캡처
스트림 레코드의 수명은 24시간입니다.각 스트림 기록은 스트림에서 한 번만 나타나고, 실제 항목 수정과 동일한 순서로 나타납니다.
스트림과 Lambda를 결합하여 새로운 유저가 생성된 경우에 SES를 통해 이메일을 보내도록 하는 기능 등을 설계할 수 있습니다.