NoSQL과 Amazon DynamoDB

김규원·2025년 12월 13일

DB

목록 보기
16/22
post-thumbnail

NO SQL

  • non SQL 또는 non relational 을 의미함
  • NoSQL 시스템은 SQL 계열 쿼리 언어를 사용할 수 있다는 강조한다는 면에서 "NOT ONLY SQL"로 불리기도 함
  • NOSQL 데이터베이스는 단순 검색 및 추가 작업을 위한 매우 최적화된 키 값 저장 공간, 레이턴스와 THROUGHPUT과 관련하여 상당한 성능을 내는 것이 목적
  • DB는 빅데이터와 실시간 웹 애플리케이션의 상업적 이용에 널리 쓰임

기본 분류

  • 와이드 컬럼 스토어: h베이스, 아큐물로, 카산드라
  • 도큐먼트: mongoDB, 카우치베이스
  • 키 값: DynamoDB, 리악, 레디스, 캐시, 프로젝트 볼드모트
  • 그래프: Neo4J, AgensGraph, 알레그로그래프, 버투오소

Redis

Value의 기본 타입은 strings, container 타입

특징

  • 휘발성: main memory에 저장
  • 연속성: snapshot, 특정 시점의 메모리에 있는 데이터를 바이너리 파일로 저장

장점: 성능 향상, 다양한 데이터 타입 지원

단점: 다른 NoSQL에 비해 도입 사이트가 적음

NO SQL랭킹

Amazon DynamoDB

Amazon DynamoDB는 모든 규모에서 10ms 미만의 성능을 제공하는 서버리스 NOSQL 완전 관리형 데이터 서비스
즉, 문서 및 키-값 저장 모델을 모두 지원하는 완전 관리형 NO SQL 데이터베이스

  • 데이터 저장 및 검색 기능
  • 어느 수준의 요청 트래픽도 처리할 수 있는 테이블을 생성
  • downtime 또는 성능 저하 없이 테이블 단위로 확장/축소 가능
  • 유연한 데이터 모델, 안정적인 성능, 처리량 자동 확장 기능을 통해 모바일, 웹, 게임, 광고 기술, IoT 등 다양한 애플리케이션에 적합

ex1. AMAZON PRIME DAY

  • ALEXA, Amazon.com 등 모든 Amazon 주문 처리 센터를 포함 트래픽이 많은 여러 아마존 자산 및 시스템을 지원
  • 초당 50만 개 이상, 200TB가 요청되는 테이블을 통해 시간당 10억 개 이상의 요청을 처리

DynamoDB의 특징

1. Serverless

  • 서버를 프로비저닝하거나 소프트웨어를 패치, 관리, 설치, 유지 보수/운영 필요 없음
  • 가동 중지가 발생하지 않는 유지 관리를 제공
  • 버전 없고 유지 관리 기간 없음

2. No SQL

  • 키-값 및 문서 데이터 모델을 모두 지원
  • join 연산자를 지원하지 않음

3. 완전 관리형

  • 업그레이드가 필요하지 않고 가동 중지가 발생하지 않음

4. 규모를 따지지 않는 한 자릿수 밀리초의 성능

  • 모든 규모에서 10ms 미만의 성능을 제공

DynamoDB의 사용사례

  • 금융 서비스 애플리케이션
    : 가용성 요구 사항이 엄격한 금융 서비스 애플리케이션에 적합
    : 버전 관리 및 라이선싱을 위해 인스턴스 규모를 수동으로 조정해야 하는 운영 부담을 없애줌
  • 게임 애플리케이션
    : 가용성 요구 사항이 가장 엄격한 애플리케이션에 적함
  • 스트리밍 애플리케이션
    : 콘텐츠/관리 서비스에 대한 메타데이터 인덱스로 사용, 실시간에 가까운 스포츠 통계를 제공하는 데 사용

DynamoDB 과금 단위

활성화하기로 선택한 모든 선택적 기능과 함께 테이블의 데이터 읽기, 쓰기 및 저장에 대한 요금을 청구

과금 단위

  • RCU(Read Capacity Unit) = 1초당 최대 4KB 읽기 가능
  • WCU(Write Capacity Unit) = 1초당 최대 1KB 쓰기 가능

DynamoDB 프리티어

  • 25GB의 스토리지, 25개의 프로비저닝 된 쓰기 및 25개의 프로비저닝 된 읽기 용량 유닛(WCU, RCU)을 제공
  • 매월 2억 건의 요청을 처리 가능

DynamoDB 사용 주의점

AUTO SCALING 전략

: 너무 크게 잡으면 비용이 많이 나오고, 작게 잡으면 성능이 떨어짐
: SCALE UP되고 2배 이상 초과할 경우 THROTTLING 발생
: 한번 SCALE UP되면 DOWN되기 쉽지 않음(평균의 함정)

키 설계

  • 테이블과 보조 인덱스의 모든 논리적 파티션 키에서 균일하게 활동을 하도록 애플리케이션을 설계

DynamoDB를 사용하여 NOSQL 테이블 생성 및 쿼리

DynamoDB 연결할 수 있는 client 툴 소개

DynamoDB용 NoSQL Workbench

  • Amazon AWS에서 제공하는 GUI 클라이언트 툴
  • DynamoDB 테이블 설계, 생성, 쿼리 등을 시각적으로 관리
  • 데이터 모델링, 시각화, 쿼리 개발 기능을 제공(WINDOW, MAC OS, LINUX에서 사용, 데이터를 CSV, JSON, SQL 등으로 내보낼 수 있음)

Dynobase

  • Professional GUI Client for DynamoDB
  • AWS 계정/프로파일 기반으로 DynamoDB 테이블을 자동으로 스캔하여 불러움
  • 로컬 AWS Credential/Profile을 사용하여 테이블을 스캔
  • CSV/JSON 엑스포트 기능을 제공
  • 데이터 필터링 및 특정 결과 포맷팅을 지원

DynamoDB Local

  • 로컬 환경에서 DynamoDB를 테스트하기 위한 도구
  • 프로덕션 환경에 대한 의존성 없이 DynamoDB를 테스트할 수 있음
  • DynamoDB 테이블 설계, 생성, 쿼리 등을 시각적으로 관리
  • 로컬에서 DynamoDB를 실행하고 테스트 가능
  • DynamoDB와 동일한 API 사용
  • 로컬에서 데이터 베이스를 관리하고 테스트 가능

AWS Lambda 와 DynamoDB 연동

  • AWS Lambda 함수를 DynamoDB 테이블과 연동하여 서버리스 환경에서 DynamoDB를 사용
  • Lambda 함수를 DynamoDB 테이블에 연결, 데이터 저장/읽을 수 있음
  • VPC 내에서 Lambda 함수와 DynamoDB를 연결할 수 있음
  • AWS Toolkit for IntelliJ IDEA와 같은 IDE에서 AWS Lambda 함수를 개발/배포

Dynamon

  • DynamoDB GUI 클라이언트 툴
  • 로컬 DynamoDB를 사용하고 테스트

DynamoDB Management Console

  • DynamoDB를 사용하면서 필요한 기능과 환경에 따라 적절한 클라이언트 툴을 선택하여 DynamoDB를 효과적으로 관리하고 활용할 수 있음
profile
행복한 하루 보내세요

0개의 댓글