Cloud Infra Architecture (AWS)/AWS SAA-C03

AWS DynamoDB란?

seongduck 2023. 1. 11. 19:08

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  텍스트 형식을 가져올 수 있음

 

실습


  1. DynamoDB 서비스에 접속
  2. 테이블 이름을 DynamoDB설정한다.
  3. 파티션 키를 입력해야하는데 NoSQL이지만 K-V를 입력한다.
  4. 키는 user_id로 만들어보자
  5. 설정 사용자 지정을 통해 살펴보자
  6. 테이블 클래스는 자주사용하는 vs 자주사용하지 않는것을 선택한다.

 

 

생성완료!

 

생성후에 PITR, 온디맨드, AWS 백업서비스를 이용해서 백업을 진행할 수 있다.

 

 

 

이렇게 애플리케이션과 연동해서 쿼리 및 속성을 사용할 수 있다.