Relational DB Service (RDS)
관계형 데이터베이스
Relational DB 종류 (AWS RDS에서 사용 가능)
- Microsoft SQL, Oracle, MySQL, Postgre, Aurora, Maria DB
Data Warehousing
- Business Intelligence에서 주로 사용
- 리포트 작성, 데이터분석시 사용 (Production Database -> Data Warehousing)
- 매우 방대한 분량의 데이터 로드시 사용
OLTP vs OLAP
-
OLTP : INSERT와 같이 종종 사용되어지는, 혹은 규모가 작은 데이터를 불러올 때 사용되는 SQL 쿼리가 필요할 때 유용
ex) Order # 210에만 해당되는 customer 이름, 주소, 시간 정보 INSERT
-
OLAP : 매우 큰 데이터를 불러올 때 사용, 주로 덩치가 큰 SELECT 쿼리가 사용됨
ex) 특정 회사 부서의 Net Profit, Products
Database Back-ups
Automated Backups( 자동 백업 )
- Retention Period(1~35일) 안의 어떤 시간으로 돌아가게 할 수 있음
- AB는 그날 생성된 스냅샷과 Transaction logs(TL)을 참고함
- 디폴트로 AB기능이 설정되어 있으며 백업 정보는 S3에 저장
- AB동안 약간의 I/O suspension이 존재할 수 있음 -> Latency
DB Snapshots (데이터베이스 스냅샷)
- 주로 사용자에 의해 실행됨
- 원본 RDS Instance를 삭제해도 스냅샷은 존재함 (vs AB)
데이터베이스 백업
원본 RDS 인스턴스로 새로운 데이터베이스 복원시, 완전히 다른 객체가 된다.
RDS - Multi AZ, Read Replicas
Multi AZ (Multi Availability Zones)
- 원래 존재하는 RDS DB에 무언가 변화(e.x: Write)가 생길때 다른 Availability Zone에 똑같은 복제본이 만들어짐 = Synchronize
- AWS에 의해서 자동으로 관리가 이루어짐 (No admin intervention)
- 원본 RDS DB에 문제가 생길 시 자동으로 다른 AZ의 복제본이 사용됨
- Disaster Recovery Only!
Read Replica
- Production DB의 읽기 전용 복제본이 생성됨
- 주로 Read-Heavy DB 작업시 효율성의 극대화를 위해 사용됨 (Scaling)
- Disaster Recovery 용도가 아님!
- 최대 5개 Read Replica DB 허용
- Read Replica의 Read Replica 생성 가능 (단 Latency 발생)
- 각각의 Read Replica는 자기만의 고유 Endpoint 존재
만약 대부분 Read traffic(거의 대부분의 유저들이 DB에서 무언가를 읽고 싶어 하는 것) 이라면, 모두 main DB로 연결시키는 것이 아니라 위 사진처럼 하나의 인스턴스를 각각의 Read Replica로 연결시킬 수 있다.
따라서 main DB의 워크로드를 현저히 낮출 수 있으며 성능 개선도 할 수 있게 된다.
ElastiCache
- 클라우드 내에서 In-memory 캐시를 만들어줌
- 데이터베이스에서 데이터를 읽어오는 것이 아니라 캐시에서 빠른 속도로 데이터를 읽어옴
- Read-Heavy 어플리케이션에서 상당한 Latency 감소 효과 누림
Memcached
- Object 캐시 시스템으로 잘 알려져 있음
- ElastiCache는 Memcached의 프로토콜을 디폴트로 따름
- EC2 Auto Scaling처럼 크기가 커졌다 작아졌다 가능함
- 오픈 소스
Memcached 언제 사용할까?
- 가장 단순한 캐싱 모델이 필요할 때
- Object caching이 주된 목적일 때
- 캐시 크기를 마음대로 scaling 하기를 원할 때
Redis
- Key-Value, Set, List와 같은 형태의 데이터를 In-Memory에 저장 가능함
- 오픈 소스
- Multi-AZ 지원 (재해 복구 기능)
Redis 언제 사용할까?
- List, Set과 같은 데이터셋을 사용할 때
- 리더보드처럼 데이터셋의 랭킹을 정렬하는 용도가 필요할 때
- Multi AZ 기능이 사용되어져야 할 때
실습
mysql -u admin -p --host 엔드포인트