본문 바로가기
DB

DynamoDB?

by 상국이 2021. 7. 6.
728x90

특징

1. 배포가 단순하고 신속하다.

2. 단순한 인터페이스의 조작만으로 규모를 확장시키기 수월하다.

3. 데이터의 순실을 방지하기 위해 데이터 베이스를 자동으로 백업한다.

4. 규모가 증가하고, 장애가 나도 일관적인 응답시간을 보여준다.

5. NoSQL, 보조 인덱스를 통해 빠른 조회가 가능

 

사용

1. 데이터베이스를 확장하거나, 확장하는 과정에서 분산된 데이터베이스를 관리하기에 힘든 경우 사용

2. 트랜잭션, JOIN과 같은 복잡한 테이블 데이터 처리과정이 있는 경우 적합하지 않음

3. 스키마가 정해져 있지 않고 비정형적인 데이터를 저장하는데 유용하다.

4. AWS의 Region별로 데이터를 가용영역 3곳에 복제하여 저장하여 하나에 장애가 발생하여 정지하더라도 DB를 정상적으로 사용이 가능

5. 트래픽이 증가하여 사용량이 많아지면 처리량을 늘리고 사용량이 적어지면 처리량을 줄인다.

* 이미 생성된 테이블의 처리량은 한 번에 최대 2배까지 높일 수 있다.

 

DynamoDB 구조

  • Table : item들의 모임
    1. item의 제한은 없음
    2. 기본키를 반드시 지정해야함
    3. Region당 256개까지 생성가능 AWS에 요청하여 추가생성도 가능함
  • Item : Attribute들의 모임
    * {
          item = String : “핸드폰” : 기본키
          name = string : “아이폰”
          price = number : 1000000
          (속성이름 = 유형 : 속성 값)
       }
    1. Attribute의 개수는 제한이 없음
    2. Item은 속성 이름과 값을 포함하여 64KB
    3. 기본키를 필수로 포함하고 있어야 하고 복합키와 기타 속성을 가질 수 있다.
    Attribute
    1. Key-Value 방식(Key는 문자열)

 

저장할 수 있는 데이터 유형

  1. Key-Value Store Model
    - 스칼라 데이터 형식(Scalar Data Types)
     * 숫자 : 정수, 실수(소수점 이하38자리)
     * 문자열 : UTF-8 형식, 대소를 비교시 ASCII Code 기준
     * 바이너리 : BASE64 형식, 대소를 비교시 부호없는 정수로 취급
  2. Document Store Model
     * 스칼라 데이터 형식의 배열 형태
     * 값이 중복될 수 없음
     * 값이 하나라도 있어야 한다.
     * 기본키로 사용할 수 없다.
     * NULL이나 문자열은 저장이 불가

 

DynamoDB 사용로직

검색을 하려면 기본키로 인덱스를 생성해야 하며 기본 키로 생성되는 인덱스를 테이블 인덱스라고 한다.

 

형식

  1. Hash 형식 기본키 
    - 일치 방식의 검색만 지원
    - 최대 2MB
    - 데이터 분산 저장
    - 정렬x
    - 다른키들과 중복x
  2. Hash와 Range 형식 기본키
    - 일치, 부등호, 포함, ~로 시작 등 범위를 지정할 수 있는 검색을 지원
    - 최대 1MB

 

Secondary Index

 : 기본키로 생성한 인덱스 하나만으로는 검색기능이 부족, Read/Write 용량 유닛을 따로 설정이 가능

  1. Local Secondary Index
    - 테이블당 5개까지 생성 가능 
    - 테이블에서 기본키, 범위 기본키를 사용할 때만 사용 가능
    - 테이블 생성 시 함께 생성, 테이블이 생성된 이후에도 추가, 수정, 삭제 불가
  2. Global Secondary Index
    - 범위키는 생략 가능
    - 테이블당 5개까지 생성가능
    - 테이블 생성 시 함께 생성, 테이블이 생성된 이후에도 추가, 수정, 삭제 가능

 

DynamoDB 데이터 Read

  1. Eventually Consistent Read
    : 최신 데이터를 얻기 위해 짧은 시간 내에 읽기를 반복해야함 - 최근 완료된 쓰기 결과를 반영하지 못할 수 있음
  2. Strongly Consistent Read
    : 최근 완료된 쓰기 결과가 모두 반영된 데이터를 읽어옴

 

Provisioned Throughput?

 : 사용자가 원하는 수치를 지정하면 지정된 수치만큼 처리량을 제공해주는 것

  1. Read Capacity Unit
    : read한 아이템 수(sec) * 아이템크기(KB단위 반올림)
  2. Write Capacity Unit
    : write한 아이템 수(sec) * 아이템크기(KB단위 반올림)

*읽기 용량의 유닛 수는 api 호출 수가 아닌 초당 읽은 아이템 수로 결정됩니다.

728x90

'DB' 카테고리의 다른 글

Connection pool?  (0) 2021.07.06
[DB] Sharding  (0) 2021.06.24
[MySQL] Explain  (0) 2021.06.24
[DB]Partitioning  (0) 2021.06.24

댓글