AWS DynamoDB
AWS DynamoDB는 AWS에서 제공하는 서버리스 NoSQL입니다.
Key-Value 데이터베이스로 스키마가 복잡하지 않다는 것이 장점입니다.
비용은 사용한 만큼만 내면 되기 때문에 많은 비용이 들지 않습니다.
주로 읽기/쓰기 요청에 따라 요금이 부과됩니다.
AWS 공식 DynamoDB 개발자 가이드는 아래 링크를 참고해주세요.
https://docs.aws.amazon.com/ko_kr/amazondynamodb/latest/developerguide/Introduction.html
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
테이블 생성하기
알림 정보 테이블을 예시로 생성해보겠습니다.
테이블 명 : 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
4. (로컬 인덱스 생성 시) [설정 사용자 지정]을 클릭합니다.
5. 보조 인덱스에서 [로컬 인덱스 생성]을 클릭합니다.
6. 정렬 키를 입력하고 속성 프로젝션을 선택합니다.
로컬인덱스1 : create_datetime-index (파티션: user_id, 정렬: create_dataetime, 프로젝션: ALL)
로컬인덱스2 : read_yn-index (파티션: user_id, 정렬: read_yn, 프로젝션: ALL)
7. [테이블 생성] 버튼을 클릭합니다. 끝!
'AWS' 카테고리의 다른 글
[AWS] DynamoDB - query 및 scan 코드 작성 (with Node.js) (0) | 2022.02.15 |
---|---|
[AWS] DynamoDB - CRUD 코드 작성 (with Node.js) (0) | 2021.12.08 |
[AWS] DynamoDB 와 DocumentDB 의 차이점 (0) | 2021.11.02 |
[AWS] Mysql Lambda 생성하기 (0) | 2021.10.18 |
[AWS] Cognito - 회원가입 (with Node.js) (0) | 2021.10.18 |