AWS DynamoDB란?
- NoSQL DB서비스
- K-V, 문서 데이터 모델 지원
- 서버리스 서비스 (사용자가 직접 관여안해도 된다.)
- 용량에 맞게 자동으로 확장 및 축소하는 Auto Scaling하므로 관리 및 운영 오버헤드 최소화
- 10밀리 초 미만의 빠른 응답으로 초당 수백만개 이상의 요청 처리 가능
- 지연시간이 짧은, 빠른 응답이 필요한 애플리케이션에 사용한다.
- 쇼핑물 장바구니, 은행 트랜잭션, 게임 플레이어 기록 저장
DynamoDB의 특징
1) 백업 및 복구
- DB 테이블에 대해 온디맨드 백업을 생성하고 특정 시점으로 복구를 활성화
- 특정 시점으로 복구 PIRT(Point-in-time recovery)를 사용해 최근 35일이내 원하는 시점으로 테이블 복원가능
2) DynamoDB 테이블 클래스
- DynamoDB Standard
- 기본형으로 대부분의 워크로드에 저장
- DynamoDB Standard-IA
- 애플리케이션 로그, 오래된 소셜 미디어 게시물, 전자 상거래 주문 내역 및 과거 게임 성과와 같이 자주 액세스하지 않는 데이터를 저장하는 테이블에 대한 비용을 줄임
3) 읽기/쓰기 용량모드
- 온디맨드 모드
- 초당 읽기/쓰기 처리량을 자동으로 조정, 트래픽 예측이 불가능한 경우 사용
- 프로비전드 모드
- 읽기/쓰기 횟수를 수동으로 조정. 트래픽 예측이 가능한 경우 사용
4) DynamoDB Accelerator (DAX)
- 데이터베이스 앞에 인메모리 캐시를 사용해서 DB의 성능을 향상시키는 기능
- 마이크로 초 단위의 응답시간을 제공
5) TTL(Time to Live)
- DynamoDB 유지 시간(TTL)을 사용하여 항목별 타임스탬프를 정의하여 항목이 더 이상 필요하지 않은 시점을 결정
- 지정된 타임스탬프 날짜 및 시간이 지나면 DynamoDB 테이블에서 항목을 삭제
- 애플리케이션에서 1년동안 사용하지 않은 사용자 또는 데이터를 제거
- 만료된 항목을 Amazon DynamoDB Streams 및 AWS Lambda를 통해 Amazon S3에 보관
6) 글로벌테이블
- 리전간에 데이터베이스를 복제하는 기능
- 모든 리전에서 읽기 및 쓰기가 가능
- 복제본 테이블에 있는 항목의 모든 변경사항은 동일한 글로벌 테이블 내의 다른 모든 복제본에 1초이내로 복제됨
- 당연히 하나의 리전에 문제가 발생해도 다른 리전으로 라우팅되므로 재해 복구 기능을 한다.
- 사용자는 가까운 리전에서 DB를 사용하기에 빠른 성능을 지원
7) DynamoDB Streams
- DB 테이블에 저장된 항목에 변경이 발생하는 경우 변경 사항을 캡쳐하는 기능
- 변경 사항에 대해 Kinesis Data Stream으로 보낼 수 있음
- 변경 사항 이벤트가 발생할 때마다 이벤트를 Lambda로 트리거하여 Amazon SNS로 전송하여, 이메일 등의 이벤트 알림을 생성할 수 있음
8) 읽기 일관성
- DynamoDB에서 데이터를 읽을 때, 사용자는 읽기를 최종적 일관된 읽기나 강력한 일관된 읽기로 지정 가능
- 1) 최종적 일관된 읽기(기본값)
- 최종 일관성 옵션은 읽기 처리량을 최대화
- 최종적 일관된 읽기는 최근 완료한 쓰기 결과를 반영하지 못할 수 있음
- 2) 강력한 일관된 읽기
- 읽기 전에 성공적인 응답을 수신한 모든 쓰기를 반영한 결과를 반환
- 최종 일관된 읽기보다 읽기 지연시간이 길어지거나 DB용량을 많이 사용한다.
DynamoDB는 Amazon S3와 통합이 가능하다.
1) Export to Amazon S3 (S3로 내보내기)
- DynamoDB 테이블의 데이터를 S3 버킷으로 보낸다.
- 자동백업된 애들만 보낼 수 있다. 즉, 자동 백업인 특정 시점으로 복구 (PITR) 기간내의 데이터만 내보낼 수 있다. (최대 35일)
- 이 기능을 사용하기 위해서는 특정 시점으로 복구 PITR이 활성화 되어있어야 한다.
- 데이터를 DynamoDB JSON 형식 또는 Amazon Ion 텍스트 형식으로만 내보낼 수 있다.
- S3로 내보낸 데이터를 Athena(분석), AWS Glue, Lake Formation 등의 다른 AWS 서비스를 사용하여 데이터에 대한 분석 및 복잡한 쿼리를 수행 가능함
- 테이블 내보내기는 테이블의 읽기 용량을 사용하지 않으며 테이블 성능 및 가용성에 영향을 주지 않음
- 테이블 데이터를 다른 AWS 계정이 소유한 S3 버킷 및 테이블이 있는 리전과 다른 리전으로 내보낼 수 있음
- 반대로 S3 데이터를 DynamoDB로 가져올 수 있다.
2) Import to Amazon S3 (S3에서 가져오기)
- S3의 데이터를 DynamoDB 테이블로 가져오는 기능
- 다 가져올 수 있는 것이 아니라 CSV, DynamoDB JSON 형식, Amazon Ion 텍스트 형식을 가져올 수 있음
실습
- DynamoDB 서비스에 접속
- 테이블 이름을 DynamoDB설정한다.
- 파티션 키를 입력해야하는데 NoSQL이지만 K-V를 입력한다.
- 키는 user_id로 만들어보자
- 설정 사용자 지정을 통해 살펴보자
- 테이블 클래스는 자주사용하는 vs 자주사용하지 않는것을 선택한다.
생성완료!
생성후에 PITR, 온디맨드, AWS 백업서비스를 이용해서 백업을 진행할 수 있다.
이렇게 애플리케이션과 연동해서 쿼리 및 속성을 사용할 수 있다.
'Cloud Infra Architecture (AWS) > AWS SAA-C03' 카테고리의 다른 글
AWS DataBase Migraion Service(DMS)란? (0) | 2023.01.12 |
---|---|
AWS에서 제공하는 다양한 Databases (0) | 2023.01.12 |
AWS ElastiCache란? (0) | 2023.01.11 |
AWS Aurora란? (0) | 2023.01.11 |
AWS RDS란? (Relational Database Service) (0) | 2023.01.11 |