Amazon DynamoDB Overview part1
[AWS]Amazon DynamoDB Overview Part 1
DynamoDB Overview

What is DynamoDB?
- DynamoDB: AWS의 완전 관리형 NoSQL 데이터베이스 서비스.
- 데이터는 고가용성을 위해 다중 AZ에 자동 복제됨.
- 완전 분산형 데이터베이스로 확장 가능한 워크로드를 처리 가능.
- 초당 수백만 건의 요청, 테라바이트급 스토리지를 지원.
주요 특징
- 스키마리스 데이터 구조
- 고정된 스키마 없이 데이터를 저장하며, 각 항목의 속성은 필요에 따라 추가 가능.
- 예시: 온라인 쇼핑몰에서 상품 데이터가 각기 다른 속성을 가질 때 유용.
- 상품 A: {“이름”: “노트북”, “가격”: 1000, “카테고리”: “전자기기”}
- 상품 B: {“이름”: “책”, “저자”: “홍길동”, “카테고리”: “서적”}
- 빠른 성능
- 낮은 지연 시간과 일관된 성능 제공.
- 예시: IoT 센서에서 실시간으로 수집된 데이터를 처리할 때.
- 보안
- IAM 통합으로 인증 및 권한 관리 가능.
- 예시: 특정 사용자 그룹에 읽기 전용 권한 제공.
- 자동 확장성
- 수요에 따라 용량 자동 조정.
- 예시: 블랙프라이데이와 같은 트래픽 급증 상황에서 유연한 확장 가능.
DynamoDB 테이블 기본 구성
- 테이블:
- 테이블은 항목(row)과 속성(column)으로 구성.
- 테이블은 Primary Key로 항목을 고유하게 식별.
- 예시: “사용자 테이블”에 고유 사용자 ID를 Primary Key로 사용.
- Primary Key:
- Partition Key (HASH Key): 고유 식별자를 사용하여 항목 분배.
- 예시: 사용자 ID, 주문 번호 등.

- Partition Key + Sort Key (HASH + RANGE Key): 정렬 가능한 추가 키로 데이터 그룹화.
- 예시: “사용자 ID” + “주문 날짜” 조합으로 사용자별 주문 이력 관리.

- Partition Key (HASH Key): 고유 식별자를 사용하여 항목 분배.
- 속성:
- 지원 데이터 타입:
- 스칼라 타입: String, Number, Binary, Boolean, Null.
- 문서 타입: List, Map.
- 집합 타입: String Set, Number Set, Binary Set.
- 항목 크기 제한: 400KB.
- 예시: 사용자 프로필 데이터에 다양한 데이터 타입 활용.
- {“이름”: “홍길동”, “나이”: 25, “취미”: [“축구”, “독서”]}
- 지원 데이터 타입:
Capacity Modes
- 프로비저닝 모드:
- 읽기 및 쓰기 용량을 명시적으로 설정.
- WCU (Write Capacity Unit): 1초 동안 1KB 데이터 쓰기 가능.
- RCU (Read Capacity Unit): 1초 동안 Strongly Consistent Read 기준 4KB 데이터 읽기 가능.
- 예시: 매일 일정량의 데이터를 처리하는 로그 저장 시스템.
- 온디맨드 모드:
- 사용량에 따라 자동으로 처리 용량 조정.
- 초기 설정 없이 탄력적인 리소스 관리 가능.
- 예시: 트래픽 패턴이 예측 불가능한 스타트업의 애플리케이션.
데이터 읽기/쓰기
- 데이터 읽기
- Strongly Consistent Read: 항상 최신 데이터 보장.
- 예시: 금융 거래 시스템에서 실시간 계좌 잔액 확인.
- Eventually Consistent Read: 지연된 일관성, 더 높은 처리량 제공.
- 예시: 뉴스 애플리케이션에서 뉴스 댓글 로딩.
- Strongly Consistent Read: 항상 최신 데이터 보장.
- 데이터 쓰기
- 항목이 Primary Key를 기준으로 테이블에 저장.
- 예시: 온라인 주문 처리 시스템에서 주문 데이터 저장.
Indexes
- Global Secondary Index (GSI):
- 기존 Primary Key 외 다른 속성으로 데이터 조회 가능.
- 별도 용량(WCU/RCU)을 프로비저닝.
- 예시: 사용자 테이블에서 이메일 주소로 검색 가능하도록 설정.
- Local Secondary Index (LSI):
- 동일한 Partition Key를 공유하는 데이터 조회.
- 테이블 생성 시에만 추가 가능.
- 예시: 사용자 ID를 기준으로 최신 로그를 시간순으로 조회.
DynamoDB Streams
- DynamoDB Streams: 항목의 생성, 수정, 삭제 작업을 스트림 데이터로 기록.
- 스트림 데이터는 24시간 동안 보존.
- 사용 사례:
- 실시간 이벤트 처리 (예: 신규 사용자 환영 이메일).
- 데이터 분석.
- 교차 리전 복제.
- 예시: 채팅 애플리케이션에서 메시지 업데이트 이벤트를 실시간 반영.
Time To Live (TTL)
- TTL: 지정된 시간 이후 데이터가 자동 삭제되도록 설정.
- 스토리지 최적화 및 규정 준수를 위해 유용.
- 예시: 30일이 지난 쿠폰 데이터를 자동 삭제.
DynamoDB의 데이터 엔지니어링 활용 사례
- 데이터 처리 파이프라인:
- DynamoDB Streams를 활용하여 실시간 데이터 스트리밍 구축.
- 예시: IoT 센서 데이터가 DynamoDB로 입력되고 스트림을 통해 분석 시스템으로 전송.
- 규모 확장이 필요한 애플리케이션:
- IoT 데이터 수집 및 처리.
- 예시: 스마트 홈 시스템에서 수백만 개의 장치 상태를 저장.
- 빅데이터 처리:
- MapReduce 작업의 중간 상태 저장소로 사용.
- 예시: DynamoDB에 중간 데이터를 저장하고 Amazon EMR로 최종 분석 수행.
댓글남기기