Amazon DynamoDB
- DynamoDB는 완전관리형 데이터베이스로 가용성이 아주 높아서 데이터가 자동으로 여러 가용 영역에 복제됨
- NoSQL 데이터베이스이지만 관계형 데이터베이스는 아니므로 조인이나 애그리게이션 등의 기술에는 부적합
- 분산 데이터베이스이므로 수평 확장하므로 용량이 좋아 대량 워크로드 확장에 적합
- 하나의 테이블 내에서 초당 수 백만의 요청을 처리하고 거의 무제한의 행을 가지며 수백 TB에 달하는 스토리지 존재
- 성능이 빠르고 일관적이라서 과정 중에 프로비저닝을 많이 할 필요가 없음
- 데이터 회수에 대한 지연 시간도 최소화
- DynamoDB API는 IAM과 완전히 통합이 되어서 보안, 권한 관리에 큰 도움이 됨
- DynamoDB 스트림으로 이벤트 기반 프로그래밍을 활성화할 수 있음
- 저렴한 가격과 오토스케일링 능력을 가짐
DynamoDB - Basics
- 데이터베이스는 이미 구성 되어있고 완전 관리되기 때문에 확인할 필요가 없음으로 단지 테이블만 생성하면 됨
- 각 테이블에 기본 키가 있고 기본 키는 테이블 생성 시 결정되어야 함
- 각 테이블의 행이 무한해서 자동으로 이루어지므로 프로비저닝할 스토리지가 없음
- 각 아이템인 행들은 속성인 열을 가지고 있으며 이는 시간에 따라 추가되며
SQL 데이터베이스는 테이블 생성 시에 열을 지정해야하는 것과 달리 DynamoDB는 언제든지 이를 정의할 수 있음 - DynamoDB의 최대 아이템 크기는 400KB이므로 큰 객체를 저장하기에는 좋지 않음
- DynamoDB가 지원하는 데이터는 스칼라 타입의 String, Number, Binary, Boolean, Null이 있고
문서 타입의 List, Map, 그리고 세트 타입의 String Set, Number Set, Binary Set이 존재하므로 테이블 유형이 매우 탄력적
DynamoDB –Table example
- DynamoDB의 테이블
기본 키는 하나 혹은 두 개의 열에서 만들 수 있으며 아래는 두 개의 열에서 만들어졌으며 파티션 키와 정렬 키로 구성됨
기본 키가 아닌 것은 속성이라고 부르며 아이템인 행은 테이블에 추가되는 데이터라고 할 수 있음
DynamoDB – Read/Write Capacity Modes
- DynamoDB에서는 읽기와 쓰기 용량 모드로 테이블의 용량을 제어
- DynamoDB 테이블 실행에는 EC2 인스턴스를 프로비저닝할 필요 없고 테이블이 필요로 하는 읽기 및 쓰기 용량만 정의하면 됨
이를 확인하는 두 가지 모드에는 프로비전 모드와 온디맨드 모드가 존재 - 프로비전 모드
테이블에 필요하다고 생각되는 초당 읽기 및 쓰기의 횟수를 미리 지정하는 것으로 사전에 용량을 계획하는 것
프로비저닝한 만큼 과금되며 읽기 쓰기 용량인 RCU와 쓰기 용량 단위인 WCU를 미리 프로비저닝
매달 지불하는 비용은 프로비저닝한 RCU와 WCU의 숫자만큼 청구
테이블의 부하에 따라 자동으로 RCU와 WCU를 스케일링할 수 있어 적응형 프로비저닝이 가능 - 온디맨드 모드
자동으로 워크로드에 따라 스케일 업/다운하므로 읽기 용량 단위나 쓰기 용량 단위가 없고 모든 읽기와 쓰기를 자동으로 수락
그러므로 용량을 미리 계획할 필요가 없으며 정확한 사용량만큼 과금되므로 각각의 쓰기와 읽기에 대해 비용을 지불
더 유연한 대신 훨씬 더 비싸지만 예측 불가능한 워크로드(빠르게 스케일링 되는 경우)에 쓰일 수 있음
대신 비활성화 상태일 때 아무런 비용도 지불하지 않음
<DynamoDB 실습>
- DynamoDB로 테이블 생성
Create table을 클릭하면 데이터베이스와 관계 없이 바로 테이블을 만들 수 있어 서버리스 데이터베이스가 됨
테이블 이름은 DemoTable이며 파티션 키를 선택하고 선택 사항에는 정렬 키도 존재하며 이 둘을 결합하면 기본 키가 됨
Settings에서는 사용자 지정을 선택하고 가능한 옵션을 모두 보게 될 경우 Read/Write capacity settings 옵션이 두 가지 존재
온디맨드 또는 프로비전을 선택할 수 있으며 온디맨드는 애플리케이션이 수행하는 실제 읽기와 쓰기에만 과금되므로
애플리케이션 워크로드를 예측하기 어려울 때 사용하기 좋지만 가격이 프로비전 모드보다 2, 3배 더 비쌈
프로비전은 미리 읽기와 쓰기 용량을 할당해서 비용을 관리하고 최적화하며 Read capacity, Write capacity 항목이 있고
오토 스케일링을 설정하여 읽기와 쓰기 용량에 적용할 수 있음
만약 사전에 필요한 용량을 모르는 경우라면 최솟값을 1로 하고 최댓값을 100, 그리고 목표 사용률을 70%로 주면
오토 스케일링이 자동으로 이루어지고 읽기 용량을 관리하여 목표 사용률인 70%를 맞추게 됨
적절한 읽기 및 쓰기 용량을 알아보고 싶다면 용량 계산기를 사용할 수도 있음
- 테이블 생성 확인
Create item으로 들어가면 user_id 값을 지정한 후 해당 테이블에 속성을 추가할 수 있음
속성 이름은 name, 값은 Stephane Maarek로 하여 속성을 추가하고 이외에도 추가하면 아이템이 테이블에 삽입됨
DynamoDB 테이블의 경우 모든 아이템에 대해 모든 속성을 지정할 필요가 없고 아이템마다 속성이 달라도 됨
'Cloud > AWS' 카테고리의 다른 글
[SAA] API Gateway 개요 (0) | 2022.04.13 |
---|---|
[SAA] DynamoDB 고급 기능 (0) | 2022.04.13 |
[SAA] Lambda@엣지 (0) | 2022.04.13 |
[SAA] Lamba 제한 (0) | 2022.04.13 |
[SAA] Lambda 개요 (0) | 2022.04.13 |