( 참고 : “당신이 지금 알아야 할 AWS” )
[ Data Engineering ]
6장. 빅데이터를 위한 데이터 베이스
Contents
- 데이터베이스의 발전
- 전통적 데이터베이스 : RDBMS
- 비관계형 데이터베이스, NoSQL
- DynamoDB
- 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) 쿼리 & 스캔
- 쿼리
- “삽입된 기본키”를 기준으로 데이터를 찾음
- 스캔
- “조건 값”과 맞는 데이터를 찾을 때 까지 모든 데이터를 검색
- 더 많은 처리 용량이 필요하기 때문에 비용 발생