본문 바로가기

빅데이터/nosql

NoSQL강의) DynamoDB 개요, 특징 및 설명

Amazon DynamoDB

완전히 관리(Fully managed)되는 AWS 상의 NOSQL 데이터베이스. 

DynamoDB 장점

▪  EC2 + DB Engine를 올리는 전통적인 방식이 아님. 사용량만 조절하면 자동으로 늘어나고 줄어든다. 사실상 DBA가 필요없는..

▪  대용량, 뛰어난 확장성, 신뢰성

▪  10ms 미만의 빠르고 일관된 성능

▪  Key-Value Store(Hash 기반)

▪  이벤트 기반의 프로그래밍 지원(with serverless function Lambda trigger)

▪  용량제한 없는 Storage

테이블 구성 요소

Item하나 최대 크기 400kb

Key는 2가지(partition key:필수 , sort key:선택). 

Data type

Key-Value
  - String : S

  - Number : N

  - NumberSet : NS
  - StringSet : SS

  - Binary : B

  - BinarySet : BS

Document
  - Map : M // Map을 잘 조합하면 json처럼 사용 가능

  - List : L

  - Null : NULL
  - Boolean : BOOL

Partition Key

해시 인덱스 기반으로 구성됨 --> 정렬 불가
쿼리 시에 반드시 포함되어야 함.

 어느 정도 분리가능한(분배가능한) key를 잡아야 성능에 좋음.

충분한 Cardinality가 필요함 

Partition Key가 단독으로 사용될 경우

  - 아이템에 대한 고유 식별자가 됨.(Equal Query만 가능한 데이터)

Sort Key

Partition Key와 함께 Sort Key가 사용되면...
  - Partition Key + Sort Key 가 아이템의 고유 식별자가 됨.

partitionKey로 equar query, sortKey로 order query.

Partition Key로는 정렬이 불가능하지만 Sort Key로 정렬가능.

  - 동일 Partition Key를 사용하는 아이템들 사이에서 Sort Key로 정렬됨.
  - CassandraColumn Key와 유사한 개념

Partition3개 AWS 가용 영역(AZ)에 중복하여 저장

Secondary Index

LSI(Local Secondary Index)

테이블과 동일한 Partition Key를 사용.
  - 10 GB 단위 Partition 내에 테이블 데이터와 함께 저장됨.

Sort Key 이외의 Attribute로 정렬할 필요가 있는 경우 사용.

테이블 생성시에 LSI 설정.
  - 기존 테이블에 LSI를 추가하거나 삭제할 수 없음!!

  - 테이블당 5개까지 생성 제약

Read Consistency
  - Eventual Consistency 또는 Strong Consistency 선택 가능

GSI(Global Secondary Index)

별도의 Partition key, Sort key를 선택할 수 있음

▪ 인덱스 크기 제약 없음

기존 테이블에 대해서 GSI를 추가하거나 삭제가능

테이블당 5개 까지 생성할 수 있음

▪ 별도의 읽기, 쓰기 용량 할당
  - GSI에 충분한 쓰기용량이 할당되지 않을 경우 쓰기 작업에 있어서 병목이 발생할 수 있음

Eventual Read Consistency만 제공함.

처리용량

RCU(Read Capacity Unit)

  -  1 RCU : 초당 4KB 처리 단위

  -  Eventual Consistent Read 일 때 비해 Strong Consistent Read는 두배의 RCU를 소비함.

  -  RCU 계산시 4KB 배수로 올림 처리

  -  예) 5KBitem을 초당 1회 읽을 때 ECR -> 1 RCU, SCR -> 2 RCU

WCU(Write Capacity Unit)
  - 1 WCU : 초당 1KB 처리 단위
  -
1KB 단위로 올림 처리
  -
) 3.2KB를 초당 1회 쓰기 하는 경우 4 WCU 소비함.