AWS

[AWS] DynamoDB - 테이블 생성하기

itaeiou 2021. 12. 8. 12:10
반응형

AWS DynamoDB

AWS DynamoDB는 AWS에서 제공하는 서버리스 NoSQL입니다.

Key-Value 데이터베이스로 스키마가 복잡하지 않다는 것이 장점입니다.

비용은 사용한 만큼만 내면 되기 때문에 많은 비용이 들지 않습니다.

주로 읽기/쓰기 요청에 따라 요금이 부과됩니다.

 

AWS 공식 DynamoDB 개발자 가이드는 아래 링크를 참고해주세요.

https://docs.aws.amazon.com/ko_kr/amazondynamodb/latest/developerguide/Introduction.html

 

Amazon DynamoDB란? - Amazon DynamoDB

이 페이지에 작업이 필요하다는 점을 알려 주셔서 감사합니다. 실망시켜 드려 죄송합니다. 잠깐 시간을 내어 설명서를 향상시킬 수 있는 방법에 대해 말씀해 주십시오.

docs.aws.amazon.com

 

Table Key

DynamoDB Table에는 파티션키(Partition Key)와 정렬키(Sort Key)가 있습니다.

Table 생성시 Key만 설정하면 스키마와 상관없이 데이터를 추가할 수 있습니다.

Key를 제외한 Attribute는 데이터를 넣을 때, 자동으로 attribute가 맞춰서 생성된다고 생각하시면 쉽습니다.

 

NoSQL을 처음 써본 저는 처음 Table 생성시 컬럼 입력하는 부분이 없어 당황을 했었습니다ㅠ

DynamoDB는 RDBMS 설계처럼 생각하면 오히려 햇갈리기 쉽다고합니다.

 

기본 키

DynamoDB는 두 가지 기본키 방식이 있습니다.

기본 키는 테이블 생성 시 정해지며, 변경할 수 없습니다.

당연히 기본키는 중복되어선 안됩니다.

  • 파티션 키(Partition Key)
    • 파티션 키 하나로 구성되는 단순 기본 키
    • 내부 해시 함수에 대한 입력으로 파티션 키 값 사용.
  • 파티션 키(Partition Key)와 정렬 키(Sort Key)
    • 파티션 키와 정렬 키로 이루어진 복합 키
    • 정렬 키는 여러개가 올 수 있음.

 

Secondary Index

DynamoDB index에는 두가지 종류가 있습니다.

  • 로컬 보조 인덱스 (Local Secondary Index)
    • 테이블 생성 시 함께 생성.
    • 테이블 생성 후엔 인덱스 생성 불가능.
    • 파티션키는 기존과 동일. 정렬키는 다른 속성으로 지정.
    • 인덱싱된 전체 크기가 10GB이하
    • 최종 일관성 또는 강력한 일관성 선택 가능
    • 최대 5개 생성 가능
  • 글로벌 보조 인덱스 (Global Secondary Index)
    • 테이블 생성 시 생성 가능.
    • 테이블 생성 후에도 인덱스 생성 가능.
    • 파티션키/정렬키 기본 테이블과 다를 수 있음.
    • 크기 제한 없음
    • 최종 일관성만 지원.
    • 최대 20개 생성 가능

https://docs.aws.amazon.com/ko_kr/amazondynamodb/latest/developerguide/SecondaryIndexes.html

 

보조 인덱스를 사용하여 데이터 액세스 향상 - Amazon DynamoDB

보조 인덱스를 사용하여 데이터 액세스 향상 Amazon DynamoDB는 기본 키 값을 지정하여 테이블의 항목에 신속하게 액세스할 수 있습니다. 그러나 많은 애플리케이션에서는 주요 키가 아닌 속성을 가

docs.aws.amazon.com

 

테이블 생성하기

알림 정보 테이블을 예시로 생성해보겠습니다.

 

테이블 명 : NOTIFICATION

파티션 키 : user_id

정렬 키 : uuid

로컬인덱스1 : create_datetime-index (파티션: user_id, 정렬: create_dataetime, 프로젝션: ALL)

로컬인덱스2 : read_yn-index (파티션: user_id, 정렬: read_yn, 프로젝션: ALL)

 

1. AWS Console에 접속해 DynamoDB로 들어갑니다.

2. [테이블 생성]을 클릭합니다.

3. 테이블 이름과 파티션 키를 입력합니다.

테이블 명 : NOTIFICATION

파티션 키 : user_id

정렬 키 : uuid

 

user_id를 파티션키로 지정하고, 정렬키는 중복을 피하기 위해 uuid로 지정했습니다.

uuid 생성 방법이 궁금하다면 아래 링크를 참고해주세요.

https://jane-aeiou.tistory.com/59

 

[Node.js] UUID 생성하기

UUID 란? UUID는 Universally Unique IDentifier의 약어로 범용 고유 식별자 라는 의미입니다. RFC4122에 명시된 네트워크 상에서 교유성이 보장되는 id를 위한 표준 규약입니다. DB를 다룰 때 PK를 주로 auto in..

jane-aeiou.tistory.com

 

4. (로컬 인덱스 생성 시) [설정 사용자 지정]을 클릭합니다.

5. 보조 인덱스에서 [로컬 인덱스 생성]을 클릭합니다.

6. 정렬 키를 입력하고 속성 프로젝션을 선택합니다.

로컬인덱스1 : create_datetime-index (파티션: user_id, 정렬: create_dataetime, 프로젝션: ALL)

로컬인덱스2 : read_yn-index (파티션: user_id, 정렬: read_yn, 프로젝션: ALL)

7. [테이블 생성] 버튼을 클릭합니다. 끝!

반응형