( 참고 : “당신이 지금 알아야 할 AWS” )

[ Data Engineering ]

6장. 빅데이터를 위한 데이터 베이스

Contents

  1. 데이터베이스의 발전
    1. 전통적 데이터베이스 : RDBMS
    2. 비관계형 데이터베이스, NoSQL
  2. DynamoDB
    1. DynamoDB 구성 요소


6.1. 데이터베이스의 발전

6.1.1. 전통적 데이터베이스 : RDBMS

Amazon RDS : 관계형 DB

  • 소모적 관리작업 자동화
  • 비용면에서 효율적, 확장 가능한 관계형 DB 용량 제공


6.1.2. 비관계형 데이터베이스, NoSQL

  • 비교
    • 전통적 DB : “스케일 업”
    • NoSQL : 샤드 단위의 “스케일 아웃”
  • NoSQL : Not Only SQL
    • 다양한 비정형 데이터 저장
    • key-value 형태로 저장
  • “샤드”라는 단위로 분산하여, 데이터의 키 값에 따라 다른 샤드가 처리할 수 있게 함
  • 스케일 아웃


6.2. Dynamo DB

  • key-value 형태의 대표적인 NoSQL 데이터 베이스
  • 따로 Schema (X)
  • 하루 10조개 이상의 요청, (초당 2천만개 이상) OK
  • JSON 형태로 데이터를 저장


6.2.1. DynamoDB 구성 요소

(1) 테이블, 항목 및 속성

  • 마찬가지로 데이터를 “테이블”에 저장함
    • 각 테이블은 “항목”과 “속성”으로 구성


(2) 기본키

  • 스키마는 없지만, 각 데이터를 식별하기 위한 “기본키”는 필요함

  • 방식 2가지

    • 1) Partition Key 방식 : 단일한 하나의 데이터로 사용

      ( 단순한 값을 가지는 기본키 방식 )

    • 2) Partition 및 Sort Key 방식 : 2개의 데이터를 조합하여 사용

      ( 값의 대소를 비교하는 추가적인 값인 정렬키를 조합 )


(3) 글로벌 보조 인덱스 (Global Secondary Index)

  • Global Secondary Index
    • 테이블을 만든 후 추가 OK
    • 현재 테이블과 동기화되는 똑같은 테이블을 만들어 원하는 속성을 기본키로 설정할 수 있음. 인덱싱하기 때문에 개별적인 읽기& 쓰기 용량 필요
  • Local Secondary Index
    • 오직 데이터를 생성하는 시점에서만 만들 수 있음
    • 별도의 읽기&쓰기 용량 필요 X


(4) 쿼리 & 스캔

  • 쿼리
    • “삽입된 기본키”를 기준으로 데이터를 찾음
  • 스캔
    • “조건 값”과 맞는 데이터를 찾을 때 까지 모든 데이터를 검색
    • 더 많은 처리 용량이 필요하기 때문에 비용 발생