Study Everyday :)

DynamoDB 란? 요약/ 정리 본문

IT/ETC

DynamoDB 란? 요약/ 정리

은세 2017. 10. 16. 13:00


출처
 : https://aws.amazon.com/ko/dynamodb



1. DynamoDB 개념


DynamoDB - Key Value Store NoSQL


NoSQL [Not Only SQL] 

no need of schema, especially target large sets of distributed data. 

스키마를 강제 적용하지 않습니다.


NoSQL 데이터베이스 타입

Key-value data stores

Document stores

Wide-column stores

Graph stores


NoSQL 데이터베이스 장점


Scalability

Performance

High Availability

Global Availability

Flexible Data Modeling


NoSQL 가용성과 확장성이 높고 고성능에 최적화된 비관계형 데이터베이스를 설명하는 사용되는 용어입니다.


2. DynamoDB 핵심 구성 요소


테이블


스키마가 없음 데이터 형식을 미리 정의할 필요가 없음

테이블 크기 제한 없음



항목


최대 항목 크기가 400 KB 초과할 없음. 속성 이름은 크기 제한에 포함



속성

  • 스칼라. 하나의 값만 가질수 있음
  • 내포 속성 최대 32 수준 내포 속성 지원
    E.g Address inside Person

"PersonID" : 1,

"Address" : {

"Street" : "Street",

"City" : "City"

 }


기본키


  • 테이블 항목 추가, 업데이트, 삭제시 기본 속성 값을 지정해야함. 생략 할수 없다.
  •  두가지 기본
    • 파티션 (Hash Key)
      • 하나의 키만 존재

E.g

기본키                  속성

UserId     name     age     street

1             Jess         10         ABC

2             Jack         12         DEF

    • 파티션 & 정렬 (Hash Key & Range Key)
      • 같은 파티션 값이 존재할 있으나 정렬 키는 달라야

E.g

기본키         정렬키                 속성

UserId         name         age         street

1                 Jess             10             ABC

1                 Jack             12             DEF



보조인덱스


  • 기본 속성 값을 제공하여 테이블의 데이터를 읽어 있음 키가 아닌 속성을 사용하는 데이터를 읽어 올때 사용 보조 인덱스. 테이블에서 데이터를 읽는 것과 같은 방식으로 인덱스에서 데이터를 읽어 있음.
  • 두가지 인덱스 (테이블 두개 모두 최대 5)
    • Global secondary index
      • 테이블의 파티션 정렬 키가 다를 있음
    • 로컬 보조 인덱스
      • 테이블의 파티션 키는 동일 정렬 키는 다름


보조 인덱스를 사용하여 데이터 액세스 향상

 


DynamoDB 스트림


  • 데이터 수정 이벤트 캡쳐
  • 스트림 레코드 기록
    • 새로운 항목 추가시 해당 속성 모두 포함하여 이미지 캡처
    • 항목 업데이트시 수정된 속성의 사전 사후 이미지 캡처
    • 항목 삭제시 삭제 전의 전체 항목 이미지 캡처
  • 스트림 레코드의 수명은 24시간 25시간 이후에는 자동 제거
  • AWS Lambda 함께 사용하여 트리거를 만들 있음
    트리거: 관심 있는 이벤트가 스트림에 표시될 때마다 자동으로 실행되는 코드    

E.g 새로운 고객에게 자동으로 환영 이메일 보내기
그룹에 사진을 새로 업로드하면 애플리케이션에서 그룹에 속한 모든 친구들에게 즉시 알림을 전송



DynamoDB 스트림를 사용하여 Table Activity 캡처하기



3. 항목 형식


데이터 형식


DynamoDB 항목 크기 제한 (400 KB)

  • 스칼라 형식
    • 하나의 값만 표현할 있습니다. 스칼라 형식은 숫자, 문자열, 이진수, Boolean, Null
      • 문자열 항목 크기 제한 400 KB
  • 문서 형식
    • 내포 속성이 있는 복잡한 구조
    • 목록
      • 데이터 형식 제한 없음

E.g

FavoriteThings: ["Cookies", "Coffee", 3.14159]

      • 데이터 형식 제한 없음 JSON 문서 저장하는 것에 이상적 

E.g

 {

    Day: "Monday",

     ItemsOnMyDesk: [

         "Coffee Cup",

         "Telephone",

         {

             Pens: { Quantity : 3},

             Pencils: { Quantity : 2}

         }

     ]

 }

  • 집합 형식
    • 여러 스칼라
    • 집합내의 모든 형식은 같아야함

E.g

 ["Black", "Green" ,"Red"]

 [42.2, -19, 7.5, 3.14]



4. 파티션 데이터 배포


데이터를 파티션에 저장함.

파티션은 SSD(Solid State Drive) 백업되는 테이블용 스토리지 할당으로

하나의 AWS 리전 내의 여러 가용 영역에 자동으로 복제됩니다

파티션 관리는 DynamoDB에서 처리합니다.

파티션 값이 동일한 모든 항목을 정렬 값을 기준으로 정렬하여 물리적으로 인접하게 저장합니다.


Important

파티션 값당 고유 정렬 값의 수는 제한이 없습니다.



5. 테이블에서 데이터 읽기


DynamoDB 테이블 조인을 지원 안하는 대신 번에 테이블의 데이터를 읽습니다.


  • GetItem
    • 테이블에서 단일 항목을 가져옴. (BatchGetItem 작업은 최대 100 GetItem 호출을 단일 작업으로 수행할 있음)


Important

관계형 데이터베이스에서 DynamoDB 마이그레이션하는 경우, 조인의 필요성을 제거하기 위해 데이터 모델을 비정규화해야 합니다.



6. DynamoDB 장점과 단점


장점


  • 데이터 모델
    • 스키마가 없다. JSON 문서를 비롯한 정형 또는 반정형 데이터를 관리 가능
  • 확장성
    • 테이블당 항목 , 테이블의 크기 제한 없음.
  • 셋팅이 쉬움. You do not need to setup any infrastructure.
  • AWS care 해줌
  • 저장 데이터 수가 아닌 사용량으로 금액이 책정 .

단점

  • 셋팅은 쉬우나 해쉬키와 범위키를 전제로 짜여진 data model 구성이 필요함. 금액적인 때문.
  • 항목이 400 kb 까지.
  • query 에서 1 MB까지의 data 찾음


7. 프로비저닝된 처리량


Units of Capacity required for writes = Number of item writes per second x item size in 1KB blocks

Units of Capacity required for reads* = Number of item reads per second x item size in 4KB blocks



읽기 용량 단위

  • 초당 strongly consistent read 1
  • 초당 eventually consistent read 2


읽기 일관성


AWS 리전은 가용 영역이라고 하는 여러 개의 고유한 위치로 구성됩니다

리전의 여러 가용 영역 빠른 데이터 복제가 가능합니다.

테이블에 데이터를 쓰고 HTTP 200 응답(OK) 받으면 데이터의 모든 복사본이 업데이트 됩니다

보통 1 이내에 모든 스토리지 위치의 데이터가 일관성을 갖게 됩니다.


  • Strongly consistent read
    • 최근 완료된 쓰기 작업의 결과를 반영하지 않을 있음. 잠시 읽기 요청을 반복 최신 데이터를 반환.
  • Eventually consistent read
    • 성공한 가장 최신 데이터로 응답.

Important

지정 안하면 DynamoDB Strongly consistent read 사용합니다.



초당 읽기 계산


E.g


1. 테이블에서 초당 80개의 3KB 항목을 strongly consistent read 읽기


3 KB / 4 KB = 0.75 --> 1     가까운 정수로 올림 


1 read capacity unit per item × 80 reads per second = 80 read capacity units

eventually consistent read 경우 읽기 용량 단위 40 프로비저닝



2. 초당 100 항목 크기는 6KB strongly consistent read 읽기


6 KB / 4 KB = 1.5 --> 2    가까운 정수로 올림


2 read capacity units per item × 100 reads per second = 200

eventually consistent read 경우 읽기 용량 단위 100 프로비저닝



3. want to do 100 strongly consistent reads/second for 4.5KB


need to provision 100 (read per second) 

x 2 (number of 4KB blocks required to store 4.5KB) 

= 200 units of Read Capacity.


Important

required number of units of Read Capacity is determined by the number of items being read per second, not the number of API calls.



쓰기 용량 단위

  • 1 최대 크기가 1 KB 항목에 대해 초당 쓰기 1 나타냅니다.

E.g


1.
초당 100개의 512KB 항목을 테이블에 쓰려고 한다.


512 bytes / 1 KB = 0.5 --> 1    가까운 정수로 올림


1 write capacity unit per item × 100 writes per second = 100 write capacity units



2. 초당 쓰기 10 수행하려고 하고 항목 크기는 1.5KB 경우.


1.5 KB / 1 KB = 1.5 --> 2        가까운 정수로 올림


2 write capacity units per item × 10 writes per second = 20 write capacity units


용량 단위 계산



8. 요금


요금 특징


요금 예제


매일 5백만 건의 쓰기와 5백만 건의 strongly consistent read 작업을 수행하고 8GB 데이터를 저장해야

워크로드가 일정하게 유지되고 테이블 항목 크기가 1KB 미만.

  • 쓰기 용량 유닛 (WCU) : 27.26 USD
    • 초당 57.9건의 쓰기 작업.

5000000 / 24 / 60 / 60 = 57.87


1개의 WCU에서 초당 1건의 쓰기 작업을 처리하기 때문에 58개의 WCU 필요

월별 WCU 0.47 USD.
58개의 WCU 요금은 월별 27.26 USD.


0.47 * 58 = 27.26


  • 읽기 용량 유닛(RCU): 2.61 USD
    • 초당 57.9건의 읽기 작업.

5000000 / 24 / 60 / 60 = 57.87

1개의 RCU에서 초당 2건의 최종적 일관된 읽기 작업 (strongly consistent read) 처리할 있으므로 29개의 RCU 필요.


58 / 2 = 29


월별 RCU 0.09 USD. 29개의 RCU 요금은 월별 2.61 USD.


0.09 * 29 = 2.61

  • 데이터 스토리지: 2.00 USD
    • 월별 GB 0.25 USD.

테이블 요금은 2.00 USD.


0.25 * 8 = 2



총비용은 월별 31.86 USD



프로비저닝된 처리량


예약 용량 (프로비저닝된 처리량)


읽기 쓰기 처리량에 대한 수요를 예측할 있는 경우 비용을 절감이 가능합니다.


요금



9. DynamoDB JSON 저장


JSON 저장



Comments