관계형 데이터베이스란 테이블(table)로 이루어져 있으며, 이 테이블은 키(key)와 값(value)의 관계를 나타냅니다. 테이블은 이름을 가지고 있으며, 행(row)과 열(column) 그리고 거기에 대응하는 값을 가집니다. 즉, 관계형 데이터베이스는 위와 같이 구성된 테이블이 다른 테이블들과 관계를 맺고 모여있는 집합체로 이해할 수 있습니다. 이처럼 데이터의 종속성을 관계(relationship)로 표현하는 것이 관계형 데이터베이스(RDBMS)입니다.
특징
- 데이터의 분류, 정렬, 탐색 속도가 빠름
- 오랫동안 사용된 만큼 신뢰성이 높고, 어떤 상황에서도 데이터의 무결성을 보장기존에 작성된 스키마를 수정하기가 어렵다.
- 데이터베이스의 부하를 분석하는 것이 어렵다
AWS RDS(Relational Database Service)
Amazon Relational Database Service는 클라우드에서 관계형 데이터베이스를 쉽게 설치, 운영 및 확장 할 수 있는 관리형 서비스입니다.
RDS의 특징
RDS는 필요에 따라 CPU, 메모리, 스토리지, IOPS를 각각 독립적으로 확장할 수 있습니다.
RDS는 백업, 소프트웨어 패치, 자동 장애 감지 및 복구를 관리합니다.
Amazon Aurora, MySQL, MariaDB, PostgreSQL, Oracle, Microsoft SQL Server를 지원합니다.
DB 인스턴스에 대한 shell을 제공하지 않고, OS 제어가 불가능합니다.
RDS DB 인스턴스에 대해 Storage Auto Scaling을 활성화 할 수 있습니다.
AWS Database Migration Service 를 이용하면 기존에 사용하던 데이터베이스를 AWS로 마이그레이션 가능합니다.
RDS는 다중 AZ 배포(Multi-AZ deployments)를 통해 high availability(고가용성)과 failover(장애극복)를 제공합니다.
다중 AZ 배포를 활성화 하면 RDS는 자동으로 서로 다른 AZ에 동기식 예비 복제본(standby)을 프로비저닝하고 유지합니다.
예비 복제본은 같은 리전에 다른 AZ에 프로비저닝 됩니다.
다중 AZ(Multi-AZ) 배포가 활성 된 경우 동기식 복제를 수행하기 때문에 단일 AZ(Single-AZ)에 비해 쓰기(write)와 커밋(commit)의 레이턴시(latency)가 증가 할 수 있습니다.
예비 복제본(standby)는 읽기 요청을 처리할 수 없습니다. 다중 AZ 배포는 가용성과 내구성을 제공하도록 설계되어 있고 기본(primary)와 예비 복제본(standby)가 지속적으로 동기화하는 것도 이러한 이유 때문입니다.
Single-AZ에서 Multi-AZ로 DB 인스턴스가 수정되는 경우, RDS는 DB 인스턴스의 스냅샷을 캡쳐하여 다른 AZ로 복원한 뒤
기본(primary) 인스턴스와 새로운 인스턴스는 동기식 복제를 설정합니다.
다중 AZ배포를 사용하면 primary인스턴스에서 I/O가 중단되지 않도록 자동 백업 및 DB 스냅샷이 예비 복제본에서 수행됩니다.
DB 인스턴스나 AZ에 장애가 발생할 경우 RDS가 자동으로 예비 복제본(standby)으로 failover됩니다.
이때 예비 복제본이 promoted(승격)되자 마자 데이터베이스에 읽기쓰기가 재개됩니다.
Read Replicas(읽기 전용 복제본)
애플리케이션의 읽기 트래픽을 분산하기 위한 용도
Read Replicas를 지원하는 DB 엔진 : MariaDB, Microsoft SQL Server, MySQL, Oracle, PostgreSQ
Read Replicas가 생성되면 먼저 기존 DB 인스턴스를 source DB로 지정합니다.스냅샷에서 Read Replicas 생성이 완료되면, RDS가 기존 DB 인스턴스가 변경할 때 마다 DB 엔진이 비동기적으로 Read Replicas를 업데이트합니다.
이후 RDS가 source 인스턴스의 스냅샷을 생성하여 해당 스냅샷에서 Read Replicas를 생성합니다.
어플리케이션은 DB인스턴스와 동일하게 Read Replicas에 연결됩니다.
DB 인스턴스 백업 및 복원
RDS는 DB 백업을 위해 자동백업(automated backups)과 DB 스냅샷(DB snapshots)을 제공합니다.
기본적으로 RDS는 DB 인스턴스를 자동으로 백업합니다. 이때 보존 기간은 7일입니다.
자동 백업(automated backups)은 DB 인스턴스 전체를 백업(완전한 스냅샷을 만드는것)하는것 입니다.
스냅샷(snapshots)은 DB 인스턴스의 특정시점을 스냅샷으로 생성하는것 입니다.
DB 스냅샷과 자동 백업은 S3에 저장됩니다.
그 외 AWS 데이터베이스의 종류
Aurora
MySQL 및 PostgreSQL 호환 관계형 데이터 베이스
온라인 트랜잭션 처리(OLTP)에 사용
MySQL*의 최대 5배에 달하는 처리량 제공
PostgreSQL의 최대 3배의 처리량 제공*
3개의 가용 영역에서 6가지 방식으로 데이터 복제
기존 애플리케이션을 거의 변경할 필요가 없음
RedShift
온라인 분석 처리 (OLAP). S3 쿼리가 많고 복잡하며 집계하는 등 집중적인 데이터 웨어하우스(창고)
S3의 임시 쿼리라면 Athena, 쿼리가 많고 복잡하며 집계하는 등 집중적인 데이터 웨어하우스라면 Redshift
매우 큰 데이터셋 저장
매우 구조화되고 자주 엑세스되는 데이터 저장
Amazon S3의 엑사바이트 규모의 정형, 반정형, 비정형 데이터를 저장할 수 있음
DynamoDB
Amazon DynamoDB는 완전 관리형 비관계형 키-값 및 문서 NoSQL 데이터베이스 서비스입니다.
DynamoDB는 서버리스이며, 수평적 확장과 짧은 지연 시간을 제공합니다.
DynamoDB 글로벌 테이블은 데이터가 여러 리전으로 복제되도록 보장합니다.
DynamoDB는 기본적으로 이벤트 일관성을 제공합니다(일반적으로 쓰기 후 1초 후에 읽기에 대해 완전히 일관성 있음). 강력한 일관성 또한 옵션입니다.
일관성 모델 consistency options
최종적 일관된 읽기(기본값) – 최종 일관성 옵션은 읽기 처리량을 최대화합니다. 그러나 최종적 일관된 읽기는 최근 완료한 쓰기 결과를 반영하지 못할 수 있습니다. 모든 데이터 사본은 일반적으로 1초 내에 일관성을 가지게 됩니다. 짧은 시간 이후 읽기를 반복하여 갱신한 데이터를 반환해야 합니다. 강력한 일관된 읽기 – DynamoDB는 최종 일관성 외에도 애플리케이션 또는 애플리케이션의 요소에서 요구하는 경우 강력한 일관된 읽기를 요청할 수 있는 유연성과 제어도 제공합니다. 강력한 일관된 읽기는 읽기 전에 성공적인 응답을 수신한 모든 쓰기를 반영한 결과를 반환합니다. ACID 트랜잭션
DynamoDB 트랜잭션에서는 개발자에게 단일 AWS 계정 및 지역에서 ACID(원자성, 일관성, 격리성 및 지속성)를 제공합니다. 단일 논리 비즈니스 작업의 일부로 여러 항목에 대한 통합된 삽입, 삭제 또는 업데이트가 필요한 애플리케이션을 구축하는 경우 트랜잭션을 사용할 수 있습니다.
AWS Database Migration Service
AWS Database Migration Service(AWS DMS)는 데이터베이스 및 분석 워크로드를 AWS로 빠르고 안전하게 이동하여 가동 중단 시간 및 데이터 손실을 방지하는 데 도움이 되는 관리형 마이그레이션 및 복제 서비스입니다. AWS DMS는 20개 이상의 데이터베이스 및 분석 엔진 간의 마이그레이션을 지원합니다.
실습: Module 5 Challenge Lab - Migrating a Database to Amazon RDS
Create an RDS database instance
Export data from MariaDB database by using mysqldump
Connect a SQL client to an RDS database.
Migrate data from a MariaDB database that runs on an EC2 instance to an RDS database instance
Configure a web application to use the new RDS database instance for data storage