대외 활동/ACC

[핸즈온 세션] RDS, DynamoDB

ansui 2025. 4. 1. 19:34

데이터베이스

구조화된 정보 또는 데이터의 조직화된 모음 DBMS(Database Management System)에 의해서 제어된다.

1️⃣ Relational Database

  • 구조화된 데이터를 저장
  • 테이블 형태
  • 엄격한 스키마
  • SQL(Structured Query Language)을 사용해서 데이 터 조작
  • 예) MySQLL, PostgreSQL

2️⃣ Non-Relational Database

  • 비정형 데이터를 저장
  • 스키마 X
  • 대량의 분산 데이터 저장
  • 다양한 형태의 데이터 빠르게 처리
  • 예) mongoDB, redis

3️⃣ 종류

  • On-Premise: 사용자가 직접 서버를 구축해 서 DB 관리
  • AWS EC2: AWS에서 제공하는 EC2 인스 턴스 위에 사용자가 직접 DB 를 설치하고 관리
  • AWS RDS: AWS의 완전관리형 DB 서비스

RDS (Relational Database Service)

AWS 클라우드에서 관계형 데이터베이스를 더 쉽게 설치, 운영 및 확장할 수 있는 웹 서비스

1️⃣ 장점

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

👉 Multi AZ

  • 데이터베이스의 복사본을 다른 가용 영역(Availability Zone)에 자동으로 생성하고 동기화
  • 대기 데이터베이스(Standby) 역할
  • 장애 감지 시 자동으로 대기 인스턴스로 대체

👉 Read Replica

  • 읽기 전용 복제본 -> 읽기(Read) 쿼리의 성능 향상과 분산 처리
  • 비동기적으로 복제 진행
  • Read Replica 인스턴스를 이용한 Scale Out을 통해 읽기 중심 의 데이터베이스 워크로드 처리량 향상
  • SAA Example
    • RDS를 사용하고 있는 회사에서 하루/한달에 한 번씩 통계용 으로 데이터를 읽어오는 데 성능에 문제가 생기는 것을 발견 했다. 이때의 솔루션은?
    • A: RDS Read Replica를 사용한다. → 읽기 요청 분산으로 데이터를 빠르게 불러오기 !

DynamoDB

SQL

  • 관계형 데이터 베이스에서 데이터 저장, 조회, 수정, 삭제
  • DB에 정해진 구조(Schema)에 따라 테이블에 저장 한다.
    • 행과 열이 있는 표 형태
  • 예) Oracle, MySQL, PostgreSQL

NoSQL

  • 비관계형 데이터 베이스에서 데이터 저장, 조회, 수정, 삭제
  • 정형화되지 않은 구조 사용
  • 가용성과 확장성이 높고 고성능에 최적화
  • 속도가 빠르고 대용량에 사용
  • Instagram, faceBook 등에서 사용
  • 예) MongoDB - 클러스터 구축을 관리자가 해야한다 / AWS DynamoDB - 서버리스

AWS DynamoDB

모든 규모에서 10ms 미만의 성능을 제공하는 서버리스 NoSQL 완전 관리형 데이터베이스

  • 서버리스
  • NO-SQL
  • 완전관리형 : 장비 운영부터 데이터베이스 솔루션 설치 및 운영까지 AWS에서 모두 담당
  • 높은 가용성과 내구성
    • 대부분 10ms 내에 데이터를 읽고 처리할 만큼 속도가 매우 빠름
    • 모든 데이터가 SSD에 저장되고 AWS 리전의 여러 가용 영역에 걸쳐 자동 복제
  • Auto-Scaling
    • change the read and write capacity of your table based on request volume

1️⃣ 핵심 구성 요소

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

 

2️⃣ Table 구조 - Partition Key

RDBMS에서 Primary Key와 같은 역할

  • 테이블에 무조건 하나만 존재해야하는 값
  • 파티션을 결정한다
    • DynamoDB는 테이블의 크기가 10G를 초과하면 데이터에 대한 Partition을 나눈다
    • 같은 Partition Key를 가지면 같은 Partition에 저장되는 것

 

3️⃣ Table 구조 - Sort Key

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

💡데이터를 하나하나 넣어야 하나? Lambda 쓰고 광명 찾자

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

실습

Dynamo DB를 만들어보고 Sorted Key를 사용해서 Query 해보기