Amazon DynamoDB Overview part2
[AWS]Amazon DynamoDB Overview Part 2
DynamoDB Overview: Part 2
Advanced DynamoDB Concepts
1. Transactions
- DynamoDB는 ACID 트랜잭션을 지원하여 데이터 일관성과 무결성을 보장.
- 트랜잭션은 하나 이상의 테이블에서 여러 항목을 읽고 쓸 수 있음.
- 주요 API:
TransactWriteItems: 여러 항목에 대한 원자적 쓰기.TransactGetItems: 여러 항목에 대한 일관된 읽기.
- 트랜잭션의 제한사항:
- 한 번의 트랜잭션으로 최대 25개의 항목 작업 가능.
- 4MB 크기 제한 존재.
- 사용 예시:
- 은행 애플리케이션에서 계좌 이체 작업 (A 계좌에서 출금하고 B 계좌에 입금).
- 전자상거래 애플리케이션에서 주문 생성 시 재고 업데이트.
2. Partitioning and Performance
- DynamoDB는 Partition Key를 기준으로 데이터를 파티셔닝하여 성능과 확장성을 보장.
- 파티션 설계:
- 균등한 분배가 중요. 핫 파티션(hot partition) 문제를 피해야 함.
- 예시: 날짜를 Partition Key로 사용하지 말고, 사용자 ID와 결합하여 키를 다양화.
- 읽기/쓰기 처리량:
- 파티션당 최대 처리량 제한 있음. 균형 잡힌 키 설계가 필수.
- 예시: 글로벌 애플리케이션의 사용자 데이터를 지역별로 분배.
DynamoDB Accelerator (DAX)
DAX 정의
- DAX는 DynamoDB의 인메모리 캐시 서비스로, 읽기 성능을 대폭 향상시키는 데 사용됨.
- 특징:
- 최대 10배 빠른 읽기 성능 제공.
- 지연 시간이 마이크로초 단위로 감소.
- API 호출 수정 없이 기존 DynamoDB 애플리케이션과 통합 가능.
DAX의 작동 방식
- DynamoDB 요청이 먼저 DAX 캐시로 전달됨.
- 캐시에 데이터가 있을 경우 즉시 반환.
- 캐시에 없는 경우 DynamoDB에서 조회 후 DAX에 캐싱.
- 일관성 모델:
- Eventual Consistency만 지원.
DAX 활용 사례
- 읽기 집약적인 애플리케이션:
- 예시: 인기 상품 정보를 빠르게 조회하는 전자상거래 사이트.
- 리더보드 시스템:
- Sort Key와 결합하여 빠른 순위 계산 제공.
- 예시: 모바일 게임에서 실시간 리더보드.
- IoT 데이터 조회:
- 수백만 개의 IoT 장치 데이터를 빠르게 검색.
- 예시: 스마트 홈 장치 상태 조회.
DAX 구성
- DAX 클러스터는 다중 노드로 구성 가능 (최대 10개).
- Primary Node: 쓰기 작업 담당.
- Replica Node: 읽기 작업 담당.
- 노드 간 자동 복제 및 장애 복구 지원.
Backup and Restore
1. On-Demand Backup
- 데이터 손실에 대비하여 언제든지 테이블의 전체 백업 생성 가능.
- 백업 생성 중에도 읽기/쓰기 작업에 영향을 미치지 않음.
- 사용 예시:
- 대규모 애플리케이션 업데이트 전 데이터 백업.
2. Point-in-Time Recovery (PITR)
- 특정 시점으로 데이터 복구 가능.
- 최근 35일 내 데이터를 복원.
- 사용 예시:
- 실수로 데이터가 삭제되거나 수정된 경우 이전 상태로 복구.
Security in DynamoDB
1. Encryption
- DynamoDB는 기본적으로 데이터를 암호화하여 저장.
- AWS Key Management Service (KMS)를 사용하여 고객 관리형 키로 데이터 암호화 가능.
- 사용 예시:
- 민감한 사용자 데이터를 저장하는 애플리케이션.
2. Access Control
- IAM 정책을 사용하여 사용자와 애플리케이션의 접근을 제어.
- Fine-grained access control:
- 특정 항목 수준에서 권한을 부여 가능.
- 예시: 특정 사용자만 자신의 데이터를 읽고 쓰도록 제한.
Cross-Region Replication
- Global Tables: DynamoDB 테이블을 다중 리전에 걸쳐 복제하여 글로벌 애플리케이션 지원.
- 특징:
- 모든 리전에서 읽기 및 쓰기 가능.
- 데이터 충돌 해결을 위한 최종 쓰기 승리 정책 적용.
- 사용 예시:
- 글로벌 사용자 기반을 가진 소셜 미디어 애플리케이션.
Advanced Data Modeling
1. One-to-Many Relationships
- 테이블 설계:
- Partition Key와 Sort Key를 조합하여 관계를 표현.
- 예시: 사용자 ID를 Partition Key로, 주문 ID를 Sort Key로 사용하여 주문 기록 저장.
2. Many-to-Many Relationships
- 테이블 설계:
- 보조 인덱스(GSI)를 활용하여 관계 탐색.
- 예시: 학생과 수업 관계에서 학생 ID와 수업 ID를 각각 GSI로 설정.
DynamoDB의 확장 사례
1. IoT Data Storage
- 수백만 개의 IoT 장치에서 데이터를 실시간으로 수집하고 저장.
- 예시: 스마트 가전제품의 상태 데이터.
2. Real-Time Analytics
- DynamoDB Streams와 Lambda를 사용하여 실시간 데이터 분석 파이프라인 구축.
- 예시: 사용자 활동 데이터를 기반으로 추천 시스템 작동.
3. Gaming Leaderboards
- Sort Key를 활용하여 순위를 저장하고 조회.
- 예시: 게임에서 상위 100명의 플레이어를 실시간으로 표시.
- DAX와 결합하여 읽기 속도를 극대화하여 수천만 사용자 지원 가능.
댓글남기기