[AWS] DynamoDB 테이블 생성하기

반응형

이번 글에서는 AWS에서 제공하는 NoSQL 분산 데이터베이스인 DynamoDB의 테이블을 생성해보겠습니다.

0. DynamoDB란?

AWS에서 개발한 NoSQL 데이터베이스를 제공하는 서비스입니다.

DynamoDB는 성능과 편의성, 대규모 DB 구축에 필요한 비용을 절감할 수 있습니다.

읽기와 쓰기가 매우 빈번하고 처리 속도가 빨라야 하는 환경, 작은 용량의 데이터가 매우 많을 때, 고가용성(High Availability)의 분산 데이터베이스를 자체 운영하기 부담될 때 DynamoDB를 사용하면 됩니다.

DynamoDB는 성능과 고가용성을 위해 데이터를 3곳의 가용영역(AZ)에 복제해 저장합니다. 또한, 저장할 수 있는 데이터 용량에 제한이 없습니다. 데이터 용량이 증가하면 DynamoDB가 알아서 스토리지를 늘리고 클러스터를 확장하여 데이터를 분산시킵니다.

적합 : 모바일 게임, 소셜 네트워크 서비스
비 적합 : 트랜잭션, 조인과 같은 복잡한 쿼리가 필요한 서비스

자세한 내용은 아래의 책을 참고하시길 바랍니다.

 

아마존 웹 서비스를 다루는 기술:실무에서 알아야 할 기술은 따로 있다!

COUPANG

www.coupang.com

1. DynamoDB 검색

DynamoDB에서 검색을 하려면 반드시 기본키(Primary Key)로 인덱스(Index)를 생성해야합니다. DynamoDB가 지원하는 기본 키 형식은 두 가지입니다.

해시(Hash) 형식 기본 키 : 속성 하나를 기본 키로 사용합니다. 키의 값은 스칼라 데이터 형식만 가능합니다. 일치(Equal) 방식 검색만 지원합니다.

해시와 범위(Range) 형식 기본 키 : 속성 두 개를 기본 키로 사용합니다(복합키). 첫 번째 속성은 해시 기본 키로 사용하고 두 번째 속성은 범위 기본 키로 사용하여 두 가지를 복합적으로 사용합니다. 일치(Equal), 부등호, 포함, ~로 시작등의 검색을 지원합니다.

추가적으로 검색 기능을 위해 보조 인덱스(Secondary Index) 생성을 지원합니다.

로컬 보조 인덱스(Local Secondary Index) : 해시 키는 테이블 인덱스의 해시 기본 키와 같고, 범위 키는 다르게 설정한 것입니다.

글로벌 보조 인덱스(Global Secondary Index) : 해시 키와 범위 키 모두 테이블 인덱스와 다르게 설정한 것입니다.

DynamoDB의 데이터 조회 방법은 두 가지입니다.

Scan : 조건 없이 모든 데이터를 가져옵니다.

Query : 해시 (기본)키에 특정 값을 지정하고, 범위 (기본)키에 조건을 지정해 원하는 데이터를 가져옵니다.

2. DynamoDB 테이블 생성

자 이제 DynamoDB 테이블 생성해보겠습니다.

DynamoDB의 Dashboard탭에서 'Create table' 버튼을 누릅니다.

image.png

DynamoDB 테이블의 이름을 입력하고, 'Add sort key'를 체크합니다.

기본키(Primary key)의 상단 Partition key에는 해시기본키의 속성(Attribute) 이름과 데이터 형식을 입력합니다. 아래는 범위키로 사용할 속성(Attirubte) 이름과 데이터 형식을 입력합니다.

저는 해시키(Partition key)에는 Id(Number)을 아래 범위키(Range key)에는 Week(String)을 선택했습니다.

image.png

입력을 완료하면 'Create' 버튼을 눌러 테이블을 생성합니다. 아래와 같이 간단히 DynamoDB 테이블이 생성되었습니다.

image.png

3. DynamoDB 인덱스 생성

위에서 생성한 테이블에 검색을 위한 인덱스를 추가해보겠습니다.

DynamoDB Dashboard에서 앞서 생성한 테이블을 선택하고, 'Indexs'탭의 'Create Index' 버튼을 눌러줍니다.

image.png

본인의 검색 목적에 맞는 보조 인덱스를 추가해 등록하면 됩니다.

저는 인덱스 해시 키로 Week(String)와 인덱스 범위 키로 TopScore(Number)를 등록했습니다.

image.png

다음으로 'Create index' 버튼을 누르면 아래와 같이 검색 인덱스가 생성되었습니다.

image.png

DynamoDB 쪽 예제는 기본적인 구조는 똑같지만, 화면이 상당부분 달라졌습니다. 혹시라도 이 글을 보시는 분들에게 도움이 되었으면 좋겠습니다.

4. 결론

읽기와 쓰기가 매우 빈번하고 처리 속도가 빨라야하는 환경의 데이터라면?
-> DynamoDB를 쓰자


파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음


반응형

댓글

Designed by JB FACTORY