AWS 기초이론 - DynamoDB

1. DynamoDB란?


  • NoSQL 데이터베이스
  • 매우 빠른 쿼리 속도
  • Auto-Scaling 기능
  • Key-Value 데이터 모델 지원
  • 테이블 생성시 스키마 생성 필요 X -> 자동으로 생성됨
  • 모바일, 웹, IoT데이터 사용시 추천
  • SSD 스토리지 사용

그림1

  • 테이블
  • 아이템 : 행과 비슷한 개념
  • 특징 : 열과 비슷한 개념
  • Key-Value 형태로 JSON이 가장 흔하게 사용

Primary Keys(PK)

  • PK를 사용하여 데이터 쿼리
  • 두가지 PK 유형이 있음
    • 파이션키 (Partition Key)
      • 데이터를 나누고 분리시키는 Key, 일반 관계형 DB PK와 비슷
      • 실제 데이터가 들어가는 위치를 결정
      • 파티션키 사용시 동일한 두개의 데이터가 같은 위치에 저장 불가 -> 중복 불가
    • 복합키 (Composite Key)
      • 파티션키(Partition Key) + 정렬키(Sort Key)
      • ex) 고객 아이디(파이션키) + 날짜(정렬키)
      • 같은 파티션키의 데이터들은 같은 장소에 보관되고 정렬키에 의해 데이터가 정렬

데이터 접근 관리

  • AWS IAM으로 관리
  • 테이블 생성과 접근 권한 부여 가능
  • 특정 테이블만, 특정 데이터만 접근 가능케 해주는 특별한 IAM 역할 존재


2. Index


  • 특정 컬럼만을 사용하여 쿼리
  • 테이블 전체가 아닌 기준점을 사용해 쿼리
  • 매우 큰 쿼리 성능 효과
  • 두가지 유형 존재
    • Local Secondary Index
    • Global Secondary Index

Local Secondary Index (LSI)

  • 테이블 생성시에만 정의할 수 있으므로 생성 후 변경, 삭제 불가능
  • LSI는 테이블을 만들때 정의했떤 파티션키와 일치

그림2

GSI

  • 테이블 생성후에도 추가, 변경, 삭제 가능
  • 다른 파티션키, 정렬키 사용

그림3


3. Query vs Scan


Query

  • PK를 사용하여 데이터 검색
  • Query 사용시 모든 데이터(컬럼) 반환
  • ProjectionExpression 파라미터를 사용해서 원하는 컬럼만 반환 가능

Scan

  • 모든 데이터를 불러옴(PK 사용 X)
    • 일단 모든 데이터를 가져오고 필터로 원하는 데이터만 볼 수 있음(Query와의 차이)
  • ProjectionExpression 파라미터 사용 가능

무엇을 사용해야할까?

  • Query가 Scan보다 훨씬 효율적 -> Query 사용을 추천


4. DAX


  • 클러스터 In-memory 캐시
  • 10배 이상의 읽기 속도 향상
    • ex) Black Friday 날 웹사이트 운영(수많은 읽기 요청)
  • DAX 캐싱 시스템 -> 테이블에 데이터 삽입, 업데이트시 DAX에도 그대로 반영
  • 읽기 요청에 맞는 데이터가 DAX에 들어있을시 DAX에서 데이터 즉시 반환 (Cache Hit)

단점

  • 쓰기 요청이 많은 곳에서는 부적절
  • 읽기 요청이 많지 않은 곳에 부적절
  • 아직 모든 지역에서 제공하지 않음


5. DynamoDB Streams


  • 주로 이벤트를 기록하고 이벤트 발생을 외부로 알리는 용도
  • DynamoDB 테이블에서 일어나는 일들(삽입, 수정, 삭제 등)이 일어날 시 시간적 순서에 맞게 Streams에 기록
  • Log는 즉각 암호화가 일어나며 24시간동안 보관
  • 이벤트 전후에 대한 상황 보관



© 2021. By Backtony