[AWS] 데이터베이스 - RDS, DynamoDB

Jiwoo Jung·2025년 4월 6일
0

Amazon Cloud Club

목록 보기
3/6

Amazon Cloud Club Ewha 3기 핸즈온 세션 이론 정리
Week 2 - 데이터베이스 - RDS, DynamoDB

1. RDS

1-1. 데이터베이스

개요

구조화된 정보 또는 데이터의 조직화된 모음. DBMS에 의해 제어된다.

종류

Relational DatabaseNon-Relational Database
구조화된 데이터 저장비정형 데이터 저장
엄격한 스키마스키마 없음
테이블 형태테이블이 아닌 형태(문서, 키-값, 그래프 등)
SQL 사용자체 API 사용
MySQL, PostgreSQLMongoDB, Redis

Relational Database의 종류

On-PremiseAWS EC2AWS RDS
사용자가 직접 서버를 구축하여 DB 관리EC2 인스턴스 위에 직접 DB 설치AWS의 완전관리형 RDB 서비스

1-2. AWS RDS

aws.amazon.com

개요

Relational Database Service
AWS 클라우드에서 관계형 데이터베이스를 쉽게 설치, 운영 및 확장할 수 있도록 지원하는 완전관리형 서비스.

장점

  • 간편한 관리
  • 가용성(Availability) 및 안정성(Durability)
    자동 백업, 스냅샷, Multi-AZ
  • 보안성(Security)
  • 확장성(Scalability)
    Read Replica 지원
  • 비용 효율성(Cost Effective)

Multi-AZ

aws.amazon.com

  • 다른 가용영역(AZ)에 자동으로 복제본 생성 및 동기화
  • 복제본은 대기 데이터베이스(Standby) 역할
  • 장애 발생 시 자동으로 대기 인스턴스로 페일오버(Failover)
  • 성능 향상이 아닌 가용성 확보 목적

Read Replica

aws.amazon.com

  • 읽기 전용 복제본 생성
  • 읽기 쿼리의 성능 향상 및 분산 처리 가능 (Scale Out)
    읽기 중심의 데이터베이스 워크로드 처리량 향상
  • 비동기 복제
  • 읽기 성능 분산 및 Scale Out

SAA Example
Q: RDS를 사용하고 있는 회사에서 하루/한달에 한 번씩 통계용
으로 데이터를 읽어오는 데 성능에 문제가 생기는 것을 발견
했다. 이때의 솔루션은?
A: RDS Read Replica를 사용한다.

Multi-AZ vs. Read Replica

Multi-AZRead Replica
장애 대비성능 개선
동기 복제비동기 복제

2. DynamoDB

2-1. SQL

SQL vs. NoSQL

항목SQLNoSQL
구조고정된 스키마유연한 스키마
데이터 형태테이블(행/열)문서, 키-값 등
언어SQL자체 API
확장성수직 확장수평 확장
대표 예시MySQL, PostgreSQLMongoDB, DynamoDB

NoSQL

  • 비관계형 데이터베이스에서 사용
  • 가용성과 확장성이 높고 고성능에 최적화
  • Instagram, facebook등에서 사용

2-2. Amazon DynamoDB

개요

  • 10ms 미만 응답 속도의 서버리스 NoSQL 완전관리형 DB
  • 고가용성 및 내구성 보장
    • 10ms 내 응답
    • SSD 저장 + 다중 AZ 복제
  • Auto Scaling 지원

핵심구성요소

  • Table: 데이터 저장 단위
  • Items(항목): 테이블의 한 행
    People 테이블에서 각 항목은 한 사람
    Cars 테이블의 경우 각 항목은 차량 한 대
  • Attributes(속성): 아이템의 속성
    각 항목은 하나 이상의 속성으로 구성
    People 테이블의 항목: PersonID, LastName, FirstName

  • People 테이블에서 기본 키(PK)는 한 개의 속성(PersonID)으로
    구성
  • 기본 키를 제외하고, People 테이블에는 스키마가 없다.
    : 속성이나 데이터 형식을 미리 정의할 필요가 없다
  • 각 항목에는 자체의 고유 속성이 있을 수 있다
  • 일부 항목에는 중첩된 속성(Address)도 가질 수 있다

테이블구조

  • Primary key + Attributes
  • Primary Key = Partition Key (+ Sort Key)
    • Partition Key: 데이터 분산 기준 (Equal 조건만 가능)
    • Sort Key: 파티션 내 정렬 기준 (범위 쿼리 가능)

Partition Key

  • 기본 키. 데이터 분산 기준
  • 파티션 결정
    DynamoDB는 테이블의 크기가 10G를 초과하면 데이터에 대한
    Partition을 나눈다(Sharding)
    같은 Partition Key를 가지면 같은 Partition에 저장되는 것(Hash Function)

Sort Key

  • Partition Key로 저장할 파티션 공간을 결정하고 나서, 같은 Partition이라면 Sort Key 값을 기준으로 정렬되어 저장됨
  • 일치, 부등호, 포함 등의 범위를 지정할 수 있는 검색을 지원한다
    *Partion Key는 일치검색(Equal)만 지원

AWS Lambda

  • DynamoDB에서는 Batch 쓰기 지원
    Lambda를 이용해서 batch.put_item으로 여러번의 데이터 추가를 하나의 함수로 한 번에 진행할 수 있다
    BatchWriteItem API: 한 번에 최대 25개의 항목까지 DynamoDB 테이블에
    삽입할 수 있는 API
    CloudWatch Events : 특정 시간 또는 주기적으로 Lambda 함수를 실행하도록 설정
  • DynamoDB의 특성상 (NoSQL) Join 지원 X
    Join이 부득이하게 필요한 경우 Lambda로 구현 가능

항목Amazon RDSAmazon DynamoDB
DB 유형관계형 데이터베이스 (SQL 기반)비관계형 데이터베이스 (NoSQL, 키-값/문서형)
데이터 구조테이블, 행, 열 (고정 스키마)테이블, 아이템, 속성 (유연한 스키마)
쿼리 언어SQL (MySQL, PostgreSQL 등)자체 API (SQL 사용 X)
스케일링수직 확장 (인스턴스 크기 조절)
읽기 성능은 Read Replica 사용
수평 확장 (자동 스케일링)
용량에 따라 자동 조정
고가용성Multi-AZ 구성으로 장애 대비리전 및 AZ 복제 내장 (기본 내구성 높음)
성능복잡한 쿼리에 적합
조인, 트랜잭션 지원
단순/빠른 읽기-쓰기 작업에 최적화
밀리초 응답
트랜잭션 지원완전한 ACID 트랜잭션 지원제한적 트랜잭션 지원 (단순한 경우에만 사용)
비용 구조인스턴스 기준 요금 (사용 시간 + 저장소 + 백업)요청 기반 과금 (읽기/쓰기 용량 또는 온디맨드)
운영/관리백업, 패치 등 자동화되었지만 일부 설정 필요완전 서버리스 (인프라 관리 불필요)
사용 사례전통적인 웹앱, ERP, CRM, 금융 시스템 등IoT, 게임 리더보드, 실시간 로그 처리, 모바일 앱 등
장점관계형 구조로 복잡한 비즈니스 로직 구현 용이확장성, 고속 처리, 관리 편의성 탁월

0개의 댓글