The Boxer
DynamoDB 기본 구성 본문
728x90
반응형
- 정의: 규모에 상관없이 빠르고 유연한 완전관리형 NoSQL 데이터베이스 서비스
- NoSQL DB 서비스이긴 한데 완전관리형이다.
- 완전관리형이란 AWS가 리소스 관리를 대신해준다는 의미이며, 서버 관리 auto scaling등에 대한 인프라 적인 관리는 AWS가 대신하게 된다.
구성 요소
table, item, attribute
- table: RDB와 마찬가지로 데이터가 테이블
- item: table에는 0개 이상의 item이 속함. attribute의 집합체로 볼 수 있으며, 각 item들은 서로 구별되는 고유한 값이다.
- attribute: 각 item은 1개 이상의 attribute로 구성되어 있음. dynamodb 데이터의 가장 작은 단위
구성 예시
- 위 예시에서
- table: People
- item: People 테이블을 구성하는 각 항목
- attribute: PersonID, LastName, FirstName...
특징
- 각 item은 서로를 구별하는 고유한 attribute를 갖고 있다. (위 예시에서 PersonID)
- 고유한 attribute를 primary key라 하며 여러개의 attribute를 통해 하나의 primary key를 구성할 수 있다.
- PersonID 외에 다른 값들은 schemaless 하다. 즉, 정의된 형식이 없다.
- 어떤 값은 scalar(string, integer 형의 단일값)이며, 어떤 값은 nested attribute 이다.
Primary Key
- 각 table에서 item들을 구별하는 값
- table 생성시 반드시 정의해야 함
종류
- partition key
- partition key는 item이 저장될 partition을 정하는데 사용된다.
- partition key를 내부 hash function에 input으로 넣으면 output으로 item이 저장될 partition 값이 나오고 이 위치에 item을 저장한다.
- primary key를 partition key한개를 통해 구성할 수 있다.
- 위 예시에서 PersonID 가 partition key 역할을 한다.
- partition key and sort key
- 2개 이상의 attribute를 통해 구성된 primary key
Secondary Index
- primary key와 더불어 table 데이터를 조회하는데 사용되는 index
- dynamodb는 2개의 index를 지원한다.
global secondary index
- partition key와 sort key를 사용한 index. 각 item마다 고유한 index를 가짐
local secondary index
- partition key는 동일할 수 있지만, sort key가 다른 index
Read/Write Capacity Mode
- dynamodb는 2가지 capacity mode(용량 모드)를 제공한다.
- on-demand
- provisioned mode
- read/write capacity mode는 read/write 처리량에 대한 청구 방법과 용량 관리 방법을 제어한다.
capacity unit
- 1초당 읽거나 쓸 수 있는 데이터 단위
- Read Capacity Unit(읽기 용량)은 초당 4KB로 처리되며 4KB 데이터를 처리하는데 1RCU가 소비된다.
- 4KB 단위로 계산하기 때문에 1KB를 읽어도 1RCU가 소비된다.
Read Consistency
- dynamodb는 2가지 read consistency를 제공한다.
eventually consistent read
- 최근(대략 1초)에 write가 완료된 데이터는 결과에 포함시키지 않는 방식
- dynamodb는 데이터를 쓰는데 대략 1초의 지연시간이 있다.
- 최초로 데이터를 읽은 후 읽기 요청을 반복하여 최신 데이터 조회 가능
- 1RCU당 2회의 읽기 요청 가능
strongly consistent read
- strongly consistent read로 요청하면 가장 최근에 write가 완료된 데이터도 조회 가능
- 다음과 같은 단점이 있다
- network delay가 발생하면 server error를 반환할 수 있음(http 500)
- eventually consistent read 큰 latency
- global secondary index 사용 불가
- eventually consistent read보다 많은 연산량 사용
- 1RCU당 1회의 읽기 요청 가능
- eventually consistent read 보다 데이터를 조회하는데 많은 RCU가 소비됨
예시
- 7KB의 데이터를 읽는 상황을 가정하면
- eventually consistent read는 1RCU
- strongly consistent read는 2RCU가 소비된다
Write Consistency Unit
- 쓰기 용량
- 초당 1KB로 처리되며, 1.5KB를 쓰는데 2WCU가 소비된다.
On Demand
- 별도 용량 계획 없이 요청량을 처리하는 유영한 용량 모드
- 요청당 지불 가격을 통해 사용한 만큼만 비용 지불
- AWS가 트래픽을 자동으로 모니터링하여 read/write capacity를 조절함
Provisioned Mode
- 어플리케이션에 필요한 read/write capacity를 미리 설정하여 사용하는 방식
- auto scaling 기능을 수동으로 설정하여 트래픽에 따른 read/write capacity 조절 가능
ref
- https://dev.classmethod.jp/articles/introduce_amazon_dynamodb/
728x90
반응형
'Storage > DynamoDB' 카테고리의 다른 글
dynamodb 요청량 증가에 따른 처리 (0) | 2022.08.18 |
---|
Comments