목적: 관계형 데이터베이스
DB 제공 서비스
관계형 데이터베이스 기본 개념
- 데이터베이스
- 테이블
- 데이터
- 필드
RDS 종류
- Microsoft SQL
- Oracle
- MySQL
- Postgre
- Aurora (AWS에서 제공하는 RDS)
- MariaDB
Data Warehousing
- Business Intelligence
- 리포트 작성, 데이터 분석 시 사용 (Production Database -> Data Warehousing)
- 매우 방대한 분량의 데이터 로드 시 사용
OLTP vs OLAP
- OLTP(Online Transaction Processing)
- 사용자의 PC에서 발생되는 transaction을 DB가 처리하고, 그 결과를 요청한 사용자 PC에 결과를 되돌려주는 과정
- 즉 데이터 자체의 처리에 중점을 둔 용어
INSERT
와 같이 종종 사용되어지는, 혹은 규모가 작은 데이터를 불러올 때 사용되는 SQL 쿼리가 필요할 때 유용 = 1개의 요청작업을 처리하는 과정
- OLAP(Online Analytical Processing)
- 이미 저장된 데이터를 기반하여 분석하는데 중점이 된 용어
- Data Warehouse 같이 매우 큰 데이터를 불러올 때 사용
- 주로 덩치가 큰
SELECT
쿼리가 사용됨
RDS Backup
- 원본 RDS Instance를 가지고 백업용 RDS Instance를 생성 시 새로운 Endpoint가 생성 = 원본 RDS와 백업용 RDS Instance는 전혀 다른 것
- 원본 RDS Instance: original.ap-northeast-1.rds.amazonaws.com
- 백업용 RDS Instance: backup.ap-northeast-1.rds.amazonaws.com
- Automated Backups(AB): 자동 백업
- Retention Period(1-35일) 안의 어떤 시간으로 돌아가게 할 수 있음
- AB는 그 날 생성된 스냅샷과 Transaction logs(TL)을 참고함
- Default로 AB기능이 설정되어 있음
- 백업 정보는 S3에 저장: RDS 용량에 해당하는 만큼 무료 저장
- AB동안 약간의 I/O suspension이 존재할 수 있음: Latency
- Instance 삭제 시 스냅샷도 같이 삭제됨
- DB Snapshots: 데이터베이스 스냅샷
- 카메라로 그 순간을 찍을 때 사용하는 용어 스냅샷
- 용어 그대로, 주로 사용자에 의해 수동으로 실행됨
- 원본 RDS Instance를 삭제해도 스냅샷은 존재함
Multi AZ: Multi Available Zone
- 원래 존재하는 RDS DB에 변화(ex. write)가 생길 때 다른 AZ에서 똑같은 복제본이 만들어짐 (= Synchoronize)
- AWS에 의해서 자동으로 관리가 이루어짐 (No admin intervention)
- 원본 RDS DB에 문제가 생길 시 자동으로 다른 AZ의 복제본이 사용됨
- 오직 Disaster Recovery 용으로 사용됨
- 성능 개선을 위해 사용되지 않음
- 성능 개선을 위해서라면 Read Replica가 사용되어야 함
Read Replica
- Production DB의 읽기 전용 복제본이 생성됨 (write 불가능)
- 주로 Read-Heavy DB 작업 시 효율성의 극대화를 위해 사용됨 (Scaling)
- Disaster Recovery 용도가 아님
- 최대 5개 Read Replica DB 허용
- Read Replica의 Read Replica 생성 가능 (단 Latency 발생)
- 각각의 Read Replica는 자기만의 고유 Endpoint 존재
ElastiCache
- 클라우드 내에서 In-memory 캐시를 만들어줌
- DB에서 데이터를 읽어오는 것이 아닌, 캐시에서 빠른 속도로 데이터를 읽어옴
- Read-Heavy 어플리케이션에서 상당한 Latency 감소 효과를 누림
Memcached
- Object 캐시 시스템
- ElasticCache는 Memcached의 프로토콜을 default로 따름
- EC2 Auto Scaling처럼 크기가 커졌다 작아졌다 가능
- 오픈소스: https://github.com/memcached/memcached
- 사용처
- 가장 단순한 캐싱 모델
- Object caching이 주된 목적일 시
- 캐시 크기를 마음대로 scaling하기를 원할 시
Redis
- Key-Value, Set, List와 같은 형태의 데이터를 In-Memory에 저장 가능
- 오픈소스: https://github.com/redis/redis
- Multi-AZ 지원
- 사용처
- List, Set과 같은 데이터셋 사용
- 리더보드처럼 데이터셋의 랭킹 정렬이 필요
- Multi AZ 기능이 사용되어져야 할 때