AWS

AWS DynamoDB란?

Somaz 2024. 11. 27. 11:36
728x90
반응형

Overview

AWS DyanmoDB에 대해서 알아본다.

출처 : https://rockset.com/blog/live-dashboards-dynamodb-streams-lambda-elasticache/

 


 

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