The Boxer

DynamoDB 기본 구성 본문

Storage/DynamoDB

DynamoDB 기본 구성

Prower 2022. 8. 2. 01:10
728x90
반응형
  • 정의: 규모에 상관없이 빠르고 유연한 완전관리형 NoSQL 데이터베이스 서비스
  • NoSQL DB 서비스이긴 한데 완전관리형이다.
  • 완전관리형이란 AWS가 리소스 관리를 대신해준다는 의미이며, 서버 관리 auto scaling등에 대한 인프라 적인 관리는 AWS가 대신하게 된다.

구성 요소

table, item, attribute

  • table: RDB와 마찬가지로 데이터가 테이블
  • item: table에는 0개 이상의 item이 속함. attribute의 집합체로 볼 수 있으며, 각 item들은 서로 구별되는 고유한 값이다.
  • attribute: 각 item은 1개 이상의 attribute로 구성되어 있음. dynamodb 데이터의 가장 작은 단위

구성 예시

ref: https://docs.aws.amazon.com/ko_kr/amazondynamodb/latest/developerguide/HowItWorks.CoreComponents.html

  • 위 예시에서
    • 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://docs.aws.amazon.com/ko_kr/amazondynamodb/latest/developerguide/HowItWorks.CoreComponents.html

 

Amazon DynamoDB의 핵심 구성 요소 - Amazon DynamoDB

Amazon DynamoDB의 핵심 구성 요소 DynamoDB에서 테이블, 항목 및 속성이 작업하는 핵심 구성 요소입니다. 테이블은 항목의 컬렉션이고 각 항목은 속성의 컬렉션입니다. DynamoDB는 기본 키를 사용하여 테

docs.aws.amazon.com

- https://dev.classmethod.jp/articles/introduce_amazon_dynamodb/

728x90
반응형

'Storage > DynamoDB' 카테고리의 다른 글

dynamodb 요청량 증가에 따른 처리  (0) 2022.08.18
Comments