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로 정렬됨.
- Cassandra의 Column Key와 유사한 개념
▪ Partition은 3개 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 배수로 올림 처리
- 예) 5KB의 item을 초당 1회 읽을 때 ECR -> 1 RCU, SCR -> 2 RCU
▪ WCU(Write Capacity Unit)
- 1 WCU : 초당 1KB 처리 단위
- 1KB 단위로 올림 처리
- 예) 3.2KB를 초당 1회 쓰기 하는 경우 4 WCU 소비함.
'빅데이터 > nosql' 카테고리의 다른 글
NoSQL강의) mongoDB에서 data 모델링하는 방법. 예제포함. (362) | 2019.07.25 |
---|---|
NoSQL강의) mongoDB 개요 및 설명 한페이지에 끝내기(mapReduce, aggregate 예제 포함) (407) | 2019.07.23 |
NoSQL강의) Document Database 개요 및 설명 (375) | 2019.07.23 |
NoSQL강의) HBase 개요, 특징, client 설명 + Apache Phoenix (381) | 2019.07.23 |
NoSQL강의) Column Family Database 개요 및 설명 (390) | 2019.07.22 |
NoSQL강의) Redis 개요, 기본사용법, command 설명 및 Jedis 예제 (251) | 2019.07.22 |