Among Us - Yellow Crewmate 19. [AWS] DynamoDB에 대해서 알아보자

AWS/AWS Service

19. [AWS] DynamoDB에 대해서 알아보자

감쟈! 2021. 2. 12. 23:11

DynamoDB

AWS에서 개발한 Key-Value형 NoSQL 데이터베이스 서비스이며, 사용자가 따로 설치, 운영, 확장하지 않아도 원할 때 바로 사용할 수 있다.

 

 

DynamoDB를 사용해야 하는 이유

- 편의성 : 별도로 설치나 관리를 하지 않아도 되서 편리

- 성능 : 데이터 저장 용량에 제한이 없고, 용량이 증가하면 DynamoDB가 알아서 확장하고 분산시킨다.

- 비용 절감 : 사용한 만큼만 요금이 부과 된다.

 

 

 

 

 

 

관계형 DB와 NoSQL DB의 차이

관계형 데이터베이스는 테이블에 데이터를 저장하기 전에, 테이블 구조를 미리 만들어 놓아야 한다. 또한, 테이블 간의 관계를 Pimary key 와 foreign key를 이용하여 정의하는 '스키마'가 필요하다. 미리 정해진 스키마에 맞게 데이터를 추가해야하고, 스키마에 맞지 않으면 데이터를 추가할 수 없다.

 

관계형 데이터베이스 구조도

 

하지만, NoSQL은 스키마가 필요하지 않다. 

 

NoSQL 데이터베이스 구조도

 

 

 

 

Partition Key : 파티션 키는 꼭 필요하며, 1개만  있어야 한다. 테이블에 있는 아이템을 어디에 나눌지 정함.

Sort Key : 정렬할 때 쓰이는 키이며, 꼭 필요한건 아니다.

 

 


요구사항에 맞게 DynamoDB 데이터 구조를 설계해보자.

요구사항

모바일 게임의 db를 설계해보자. 모바일 게임의 요구사항은 다음과 같다.

 

- 주간 전체순위 산출

- 주간 친구순위 산출

- 개인 최고기록 조회

- 개인 최근 점수 목록 조회

 

요구사항에 맞게 DynamoDB 테이블을 생성해보자.

 

 

1.  AWS console에서 DynamoDB를 찾아 'Create table'을 눌러서 테이블을 생성해주자.

Create table

 

 

 

2. DynamoDB 테이블 생성화면이다. 테이블 이름은 유저의 순위를 정하는 테이블인, UserLeaderboard로 정하고, 기본키로는 Number유형의 id와 String 유형의 week를 정해준 뒤, 생성한다.

DynamoDB 테이블 설정

 

 

 

3. UserLeaderboard 테이블이 생성되었다. 다음은 Indexes 항목으로 들어가 인덱스를 생성해주자.

Create index

 

 

4. partition key는 String 형태의 week로 하고, sort key는 Number형태의 TopScore로 해주고 인덱스를 생성한다.

Index 키 값 설정

 

 

 

5. 위에서 생성한 week-TopScore-index가 생성되었다. 마찬가지로 partition key는 number유형의 id, Sort key는 number유형의 TopScore인 인덱스를 하나 더 추가해주자.

index 생성

 

 

 

 

6. 다음은 친구 순위를 산출한 테이블을 생성한다.

 

 

 

 

7. 테이블를 생성한 뒤, 다음과 같은 인덱스를 생성해준다.

 

 

 

 

8. 두개의 테이블이 생성되었다.

 

 

 

 

 

 

9. 다음으로 테이블에 데이터들을 추가해보자.

Items 항목에서 'Create item'을 눌러서 아이템을 추가해주자.

 

 

10. 추가해주는 데이터의 형식은 다음과 같다.

id는 Number 형식의 값이 1이고

week는 String 형식의 값이 2021-02-12이고,

TopScore는 Number 형식의 값이 15985,

Name은 String 형식의 값이 potato로 추가해준다.

create item

 

 

 

11. 다음과 같이 데이터들이 추가된 것을 확인할 수 있다.

 

 

 

12. 지금까지 생성했던 테이블과 데이터를 통해 다음과 같이 데이터를 쿼리할 수 있다.

점수가 높은 순서로 정렬하기

 

 

 

id가 1인 데이터 나열하기

 

점수가 5만점 이상인 데이터 나열하기

 

 

 

 

 

 

 

지금까지 DynamoDB에 대해서 알아보고 테이블 생성 및 데이터 추가하는 과정에 대해서 알아보았다,