본문 바로가기
Data/DataBase

[DynamoDB] 개념 및 사용 방법

by Baest 2025. 2. 8.

 

아마존 DynamoDB는 key-value 및 document 자료 구조를 지원하는 NoSQL 데이터베이스이며, AWS에서 제공하고 있다.

DynamoDB는 다이나모라는 스토리지 시스템의 이름에서 파생된 유사 데이터 모델을 노출하지만 기반이 되는 구현체는 다르다.

 

다이나모 스토리지란?

더보기

다이나모 스토리지: 아마존의 고가용성 키-값 저장소 시스템으로 다이나모DB의 서비스 기반


특징

- 높은 수준의 가용성 제공

- SSD 스토리지에 저장

- 지리적으로 나누어진 데이터센터에 분산저장

- 대규모 성능 제공

- 거의 무제한의 처리량 및 스토리지 제공

 

여기까지가 위키에 나와있는 내용 중 간단한 내용이며, 아래에서 몇가지 개념적인 내용을 살펴보려고 한다.

 

1. 소개 (Amazon DynamoDB 홈페이지 자료)

작동 방식

- 모든 규모에서 고성능 애플리케이션을 실행하도록 설계된 완전관리형의 서버리스 키-값 NoSQL 데이터베이스

- 보안, 지속적인 백업, 자동화된 다중 리전 복제, 인 메모리 캐시 및 내보내기 도구를 제공

 

기능

- 키-값과 문서 데이터 모델을 지원하는 데이터베이스의 일종

- 작은 규모에서 시작했다가 전역으로 확장하여 초당 페타바이트 단위의 데이터와 수천만 건의 읽기 및 쓰기 요청을 지원

- 기존 관계형 데이터베이스에서 역부족인 인터넷 규모의 고성능 애플리케이션을 실행할 수 있도록 설계

 

규모에 따른 성능

- 키-값 및 문서 데이터 모델: 키-값과 문서 데이터 모델을 모두 지원

- Accelerator를 사용하여 지연 시간을 마이크로 초 수준으로 최소화: DynamoDB Accelerator(DAX) 메모리 캐시 지원하여 빠른 읽기 가능

 

서버리스

- 온디맨드와 프로비저닝의 용량 모드를 제공하여 비용 절약 가능

 

엔터프라이즈에 사용 가능

- ACID 트랜잭션 지원

- 저장 중 암호화 지원

- 특정 시점으로 복구 가능

- 온디맨드 백업 및 복원 가능

 

2. 특징

1) NoSQL 데이터베이스

DynamoDB는 NoSQL인데, 쉽게 말해 SQL과 반대라고 보면 된다.

 

- NoSQL 데이터베이스에서는 JOIN 이라는 개념이 없다. 애플리케이션 레벨에서는 구현 가능하다고 하지만 이렇게 사용이 필요하다면, NoSQL 선택이 필요했던 것이 아닐 수 있다.

- JOIN 이라는 개념이 없기 때문에 정규화도 어렵다. 그래서 보통 반정규화를 한다.

 

SQL

- 구조화된 질의 언어이다.

- DB에 정해진 구조(Schema)에 따라 테이블에 저장한다.

- 테이블간 관계가 있으며, 이를 통해 중복 없이 데이터를 다룰 수 있다.

- 대표적으로 MySQL, PostgresSQL, Oracle이 있다.

 

NoSQL

- SQL과 반대되는 개념이다.

- 비관계형 데이터베이스 시스템에서 데이터 조회, 저장, 수정, 삭제한다.

- 정형화되지 않은 구조를 사용한다.

- 대규모 대용량 동시 서비스가 필요한 Instagram, FaceBook 등에서 사용한다.

- 대표적으로 MongoDB, DynamoDB가 있다.

 

2) key-value 데이터베이스

- key를 제외한 테이블 속성을 미리 정의해둘 필요가 없다.

- 데이터 스키마가 구성되어야하는 RDBMS와 달리 DynamoDB는 유연하게 데이터 처리가 가능하다.

 

3) HTTP 통신

- 다른 DB 리소스들을 TCP Connection 기반인데, DynamoDB는 Connectionless 하다.

4) 서버리스 (Serverless)

- 서버리스이기 때문에 DynamoDB를 위한 별도의 서버가 존재하지 않는다. 따라서 요청한 만큼 비용이 발생한다.

 

3. 파티셔닝 원리

 

 

DynamoDB 내부에는 해시 함수(Hash Function)가 존재한다. 파티션 키는 이 해시 함수를 거쳐 데이터를 저장할 파티션을 결정한다.

만약 동일한 파티션 키를 지닌 데이터가 있다면, 물리적으로 가까운 위치에 저장되게 된다.

이때 데이터를 구분하기 위해 정렬 키를 사용하는데, 정렬 키를 사용한다면 동일한 파티션에 저장된 데이터는 정렬 키를 기준으로 순서대로 저장된다.

 

위 이미지에서 파티션 키는 AnimalType이고 정렬 키는 Name이다.

파티션키가 동일한 데이터는 같은 파티션에 저장되고 있으며, 같은 파티션에 저장된 데이터들은 정렬 키를 기준으로 순서대로 저장되는 것을 알 수 있다.

 

 

파티션의 동작 방식

  1. 해시 함수를 통해 파티션 키를 특정 범위 값으로 변환
    • 예를 들어, "user_123" 같은 파티션 키 값이 해시 함수에 의해 0xAF12BC34D... 같은 해시 값으로 변환됨.
  2. 해시 값을 기반으로 특정 파티션에 매핑
    • 해시 값 범위를 기준으로 여러 개의 파티션 (Shard) 이 존재하며, 해당 값이 속한 파티션으로 데이터가 저장됨.
  3. 각 파티션은 내부적으로 여러 개의 데이터 블록을 가짐
    • 하나의 파티션은 최대 10GB까지 데이터를 저장할 수 있음.
    • 데이터가 많아지면 자동으로 새로운 파티션이 추가됨 (Auto Scaling)

 

 

4. Partition Key (파티션 키) 및 Sort Key (정렬 키)

Partition Key

- 파티션 키는 물리적인 공간인 파티션을 구분하기 위한 키

- 스케일이 아무리 커져도 주소를 알고 있기 때문에 데이터를 빠르게 가져올 수 있음

- 파티션 키로 일치하는 값을 가져올 수 있으며, 연산자(=, <, >)를 사용하는 범위지정 방식의 검색은 지원하지 않음

 

 

DynamoDB는 파티션 키를 기반으로 데이터를 분산 저장하기 때문에, 파티션 키 설계가 매우 중요하다.

파티션 키가 특정 값에 집중되면, 특정 파티션에만 부하가 집중된다.

예를 들어, "Korea" 같은 특정 국가명을 파티션 키로 사용하면, 해당 국가의 데이터가 한 파티션에 몰려서 성능 저하 발생한다.

올바른 파티션 키 설계

  • 데이터를 균등하게 분산시키기 위해 랜덤한 값이 포함된 키를 사용해야 함.
  • 예시: UUID, 타임스탬프+랜덤 값 조합, User ID 등을 파티션 키로 설정.

 

 

Sort Key

- 정렬 키는 파티션 안에서 데이터를 정렬하기 위한 키

- DynamoDB에서 지원하는 타입: Number, Binary, String(utf-8 기준 정렬) 타입

- 단순 정렬이기 때문에 파티션의 사이즈가 커져도 데이터를 빠르게 가져올 수 있음

- 파티션 키와 다르게 범위지정 방식의 검색 지원

 

5. 구축 방법

AWS 홈페이지에서 DynamoDB 검색 및 테이블 생성

 

 

6. 사용 방법

- INSERT

 

UPDATE

 

SELECT

 

 

 

References

https://blog.kyobodts.co.kr/2022/03/17/aws-dynamodb/

 

[AWS] DynamoDB란? – 교보DTS 기술 블로그

 

blog.kyobodts.co.kr

 

https://yoo11052.tistory.com/174

 

[AWS] DynamoDB란

DynamoDB DynamoDB는 AWS에서 제공하는 서버리스 기반 Key-Value NoSQL 데이터베이스입니다. DynamoDB를 사용하면 높은 성능과 비용적인 측면에서 이점을 가져올 수 있습니다. DynamoDB 특징 NoSQL 데이터베이스

yoo11052.tistory.com