728x90
반응형
Overview
AWS DyanmoDB에 대해서 알아본다.
AWS DynamoDB란?
Amazon DynamoDB는 AWS에서 제공하는 완전 관리형 NoSQL 데이터베이스 서비스이다. 최신 애플리케이션에 고성능, 확장성 및 안정성을 제공하도록 설계되었다. DynamoDB는 서버리스이므로 인프라를 관리할 필요가 없으며 모든 규모의 워크로드를 처리할 수 있도록 자동으로 확장한다.
DynamoDB의 주요 기능
- 확장성 및 성능
- 자동 조정: DynamoDB는 애플리케이션 요구 사항에 따라 읽기/쓰기 용량을 자동으로 조정
- 낮은 대기 시간: 한 자릿수 밀리초의 응답 시간을 제공하므로 실시간 애플리케이션에 적합
- 유연한 데이터 모델
- NoSQL: DynamoDB는 비관계형 데이터베이스입니다. 즉, 엄격한 스키마를 적용하지 않는다. 대신 데이터는 키-값 쌍 또는 문서로 테이블에 저장된다.
- 기본 키: 테이블은 다음 중 하나의 기본 키로 정의
- 파티션 키(해시 키): 항목을 고유하게 식별하는 데 사용되는 단일 속성
- 파티션 및 정렬 키(복합 키): 보다 세분화된 액세스 패턴을 위한 두 가지 속성의 조합
- 서버리스
- 서버를 프로비저닝, 관리 또는 확장할 필요가 없습니다. AWS는 모든 기본 인프라를 처리한다.
- 저장 내구성
- 데이터는 한 지역의 여러 가용 영역에 자동으로 복제되어 높은 내구성과 가용성을 보장한다.
- 고가용성
- 내장된 내결함성 및 분산 아키텍처를 통해 DynamoDB는 높은 가용성을 유지할 수 있다.
- 보안
- 암호화: 저장 데이터와 전송 중인 데이터는 AWS Key Management Service(KMS)를 사용하여 암호화된다.
- 액세스 제어: 세분화된 액세스 제어를 위해 AWS Identity and Access Management(IAM)와 통합되었다.
DynamoDB의 핵심 개념
- Tables
- 테이블은 데이터의 모음
- 각 테이블은 기본 키를 정의
- Items
- 테이블의 각 행을 Items 이라고 한다.
- Items은 속성으로 구성된다.
- Attributes
- Attributes는 Items 내의 개별 필드이다.
- Attributes는 문자열, 숫자, 목록, 지도 등과 같은 다양한 데이터 유형을 저장할 수 있다.
- Indexes
- 인덱스를 사용하면 보다 유연한 쿼리가 가능
- GSI(Global Secondary Index): 기본 키가 아닌 속성에 대한 쿼리를 허용
- LSI(로컬 보조 인덱스): 대체 정렬 키를 사용하여 동일한 파티션 키 내에서 쿼리를 지원
- Provisioned vs. On-Demand Capacity
- Provisioned 모드: 읽기/쓰기 용량을 미리 지정
- On-Demand 모드: 워크로드에 맞게 자동으로 확장되며 사용한 만큼만 비용을 지불하면 된다.
- Streams
- DynamoDB 스트림은 항목에 대한 변경 사항(삽입, 업데이트, 삭제)을 캡처하고 실시간 처리를 위해 AWS Lambda를 트리거할 수 있다.
DynamoDB 사용 사례
- 웹 및 모바일 애플리케이션
- 사용자 프로필, 세션 관리 및 활동 피드에 DynamoDB를 사용
- 게임
- 게임 상태, 사용자 진행 상황, 순위표를 저장
- IoT 애플리케이션
- IoT 장치의 데이터 스트림을 관리
- 전자상거래
- 제품 카탈로그, 주문 내역 및 재고 관리를 저장
- 이벤트 기반 애플리케이션
- DynamoDB 스트림을 AWS Lambda와 결합하여 실시간 애플리케이션을 구축
DynamoDB의 장점
- 서버리스 : 말 그대로 서버리스이다. 인프라에 대한 관리가 필요없다.
- 확장성: 초당 몇 건의 요청부터 수백만 건까지 트래픽을 처리
- AWS 서비스와의 통합: Lambda, API Gateway 등과 원활하게 작동
- 유연한 가격: 온디맨드 모드로 사용한 만큼만 지불하거나 프로비저닝된 용량과 예약된 용량으로 비용을 절감
DynamoDB의 제한 사항
- 제한된 쿼리 기능: 기본 키 또는 보조 인덱스를 통한 쿼리만 지원합니다. 복잡한 조인이나 집계에는 적합하지 않다.
- 비용: 지속적으로 트래픽이 많은 애플리케이션의 경우 주문형 모드는 비용이 많이 들 수 있다.
- 내장 조인 없음: NoSQL 데이터베이스로서 조인 및 다중 행 트랜잭션과 같은 관계형 데이터베이스 기능이 부족(though DynamoDB supports single-partition transactions)
DynamoDB vs. Other Databases
Feature | DynamoDB | RDS | MongoDB (on AWS) |
Type | NoSQL | Relational | NoSQL |
Schema | Flexible | Fixed Schema | Flexible |
Scaling | Automatic | Manual | Manual/Automatic |
Performance | Low-latency | Query Optimization | Low-latency |
Use Cases | Real-Time Apps | Relational Use Cases | Document Storage |
Reference
https://rockset.com/blog/live-dashboards-dynamodb-streams-lambda-elasticache/
https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Introduction.html
728x90
반응형
'AWS' 카테고리의 다른 글
EKS Pod Identity Addon (0) | 2024.11.24 |
---|---|
ALB access Log 활성화 → S3 권한 설정 및 로그 저장 (0) | 2024.11.21 |
AWS Network ACL vs Security Group (0) | 2024.11.16 |
AWS Ingress Annotations 정리 (0) | 2024.11.07 |
AWS Assume Role이란? (0) | 2024.11.04 |