[AWS] DynamoDB #11

­박찬영·2025년 2월 20일

AWS

목록 보기
11/15
post-thumbnail

📌 DynamoDB


NoSQL이란?

  • NoSQL : 관계가 없는 형태의 데이터베이스

    • 관계형 데이터베이스의 데이터 일관성 제약을 일부 완화

    • 스키마 없는 데이터 모델에 최적화, 간단한 데이터 구조(열, 문서, 그래프, 인메모리 키-값 스토어 등)

    • 수평적으로 확장 가능

    • 짧은 지연 시간 및 복원력

  • RDBMS vs NoSQL

    • ACID 속성 : 원자성(Atomicity, 트랜잭션 모두 실행 또는 전혀 실행되지 않음), 일관성(Consistency, 커밋된 트랜잭션은 스키마 준수), 격리성(Isolation, 동시에 일어난 트랜잭션 별도 실행), 내구성(Durability, 마지막 상태로 복구)
RDBMS (관계형 데이터베이스)NoSQL
데이터 모델스키마 적용 (테이블)스키마 X
ACID 속성지원 (원자성, 일관성, 격리성, 내구성)일부 지원
성능디스크 하위 시스템
(쿼리, 인덱스 및 테이블 구조 최적화)
하드웨어 클러스터 크기, 네트워크 지연 시간
확장더 빠른 하드웨어 사용하드웨어 분산 클러스터 사용
APISQL 쿼리문객체 기반 API
(인 메모리 데이터 구조 저장 및 검색)

  • NoSQL 데이터베이스 유형

    • 열 기반 데이터베이스 : 데이터의 열을 읽고 쓰는 데 최적화

    • 문서 데이터베이스 : JSON 또는 XML 형식의 문서와 같은 반정형 데이터, 문서별로 다른 스키마 적용 가능

    • 그래프 데이터베이스 : 정점과 간선을 저장하는 형태의 데이터베이스

    • 인 메모리 키-값 스토어 : 읽기 중심의 애플리케이션 워크로드 또는 컴퓨팅 집약적 워크로드에 최적화


DynamoDB란?

  • DynamoDB : 빠르고 확장 가능한 완전 관리형 클라우드 NoSQL 데이터베이스

    • DAX(Amazon DynamoDB Accelerator) : 가용성이 뛰어난 완전 관리형 인 메모리 캐시Amazon DynamoDB Accelerator) : 가용성이 뛰어난 완전 관리형 인 메모리 캐시

    • 스토리지 요금(사용한 디스크 공간(GB)) + 읽기/쓰기 용량 유닛

  • DynamoDB의 Read 방식

    • Eventually Consistent Read : 최근 완료된 쓰기 작업 결과를 반영하지 않을 수 있어 부실 데이터 포함 가능, 잠시 후에 읽기 요청을 반복하면 최신 데이터 반환

    • Strongly Consistent Read : 모든 쓰기 작업의 업데이트를 반영하여 최신 데이터 반환 (네트워크 지연, 중단이 없어야 함)

  • DynamoDB의 기본 구성 : Table ⊃ Item ⊃ Attribute ⊃ Key(문자열)-Value 방식의 데이터

    • 스칼라 데이터 형식 : Number(N, 최대 38자리), String(S, UTF-8 이진 인코딩 문자열), Binary(B, 압축 텍스트), Boolean(S, 0 또는 1), Null(NULL)

    • 문서 형식 (내포 속성이 있는 복잡한 구조 표현) : List(L, 순서 지정된 값 모음), Map(M, 정렬되지 않은 이름-값 쌍의 모음)

    • 다중 값 형식 (여러 스칼라 값 표현) : String Set(SS, 문자열 집합), Number Set(NS, 숫자 집합), Binary Set(BS, 이진 집합)

  • 파티션 : DynamoDB가 데이터를 저장하는 곳

    • SSD로 백업되는 테이블용 스토리지 할당

    • 하나의 AWS 리전 내의 여러 가용 영역에 자동으로 복제됨

  • DynamoDB의 키 : Item을 구분하는 고유 식별자

    • 기본 키(Primary Key) : Table 내에서 각 Item을 구분하는 고유 식별자, 단순 기본 키(파티션 키)와 복합 기본 키(파티션 키 + 정렬 키)

    • 파티션 키(Partition Key) : 데이터가 저장되어 있는 파티션을 결정하기 위한 키 값, 내부 해시 함수에 대한 입력으로 사용

    • 정렬 키(Sort Key) : 파티션 키가 동일한 모든 항목들을 정렬하는 키 값

  • 보조 인덱스

    • 글로벌 보조 인덱스(Global Secondary Index, GSI) : 파티션 키 및 정렬 키가 테이블의 파티션 키 및 정렬 키와 다를 수 있는 인덱스 (테이블당 최대 20개), 다른 값으로 파티션 나누고 정렬 가능

    • 로컬 보조 인덱스(Local Secondary Index, LSI) : 테이블과 파티션 키는 동일하지만 정렬 키는 다른 인덱스 (테이블당 최대 5개), 파티션 내에서 정렬 가능

글로벌 보조 인덱스로컬 보조 인덱스
키 스키마단순 기본 키(파티션 키)
or 복합 기본 키(파티션 키 + 정렬 키)
복합 기본 키(파티션 키 + 정렬 키)
키 속성기본 테이블 속성기본 테이블의 파티션 키와 동일한 속성
파티션 키 값당 크기 제한크기 제한 없음인덱싱된 모든 항목의 전체 크기 ≤ 10GB
온라인 인덱스 작업테이블 생성할 때 동시 생성 가능
기존 테이블에 추가/삭제 가능
테이블 생성할 때 동시에 생성됨
쿼리 및 파티션전체 테이블(모든 파티션)에 대해 쿼리 가능단일 파티션에 대해 쿼리 가능
읽기 일관성최종 일관성최종 일관성 or 강력한 일관성
할당된 처리량 소비자체 할당 처리량 설정기본 테이블의 읽기/쓰기 용량 단위
프로젝션 속성인덱스로 프로젝션되는 속성만 요청 가능인덱스로 프로젝션되지 않는 속성도 요청 가능

  • 데이터 조회 방식

    • Query : 키 값을 기반으로 데이터를 찾는 방식

    • Scan : 전체 데이터를 가져와서 필터링하는 방식 (Projection Expression 파라미터를 사용하여 일부 속성만 가져올 수 있음)

    • 데이터 조회 시에는 되도록 Query를 사용함



📌 DynamoDB 사용해보기


DynamoDB 테이블 생성하기

  • 테이블 설계

    • 복합 기본 키 : 학번(파티션 키) + 과목명(정렬 키)

    • 글로벌 보조 인덱스 : 과목명(파티션 키) + 점수(정렬 키)

  • 데이터 입력하기

  • 테이블 삭제하기


DynamoDB 데이터 조회하기



📢 세 줄로 정리해보기!

1️⃣ DynamoDB는 완전 관리형 클라우드 NoSQL 데이터베이스다. NoSQL은 관계형 데이터베이스의 데이터 일관성 제약을 일부 완화하여 스키마가 없는 데이터 모델에 최적화된 데이터베이스다.

2️⃣ DynamoDB의 테이블에는 각 아이템을 구분하기 위한 고유 식별자인 기본 키(Primary Key)가 존재한다. 단순 기본 키(파티션 키)와 복합 기본 키(파티션 키 + 정렬 키)가 있는데, 파티션 키(Partition Key)는 데이터가 저장되는 파티션을 결정하고 정렬 키(Sort Key)는 동일한 파티션 내의 항목을 정렬한다.

3️⃣ DynamoDB는 데이터를 조회할 때 키 기반으로 Query 혹은 전체 데이터를 가져와 필터링하는 Scan 할 수 있다. 또한 글로벌 보조 인덱스(Global Secondary Index)(전체 테이블)와 로컬 보조 인덱스(Local Secondary Index)(파티션 내)를 사용할 수 있다.


참고 자료
소플의 처음 만난 AWS
DynamoDB
AWS DynamoDB 사용기_보조 인덱스 사용 위주로
인덱스 정리 (클러스터, 보조 인덱스, B+ 트리)

profile
Develop하는 개발자

0개의 댓글