-
[73일차] Final Project Day_05교육/코드스테이츠 2023. 3. 13. 22:04
역할 분담
이번 프로젝트에서는 부족한 부분을 공부하는 게 목표인 만큼, VPC와 ECS는 경험이 있어 람다와 DynamoDB 제작을 맡기로 했다.
DynamoDB
Amazon DynamoDB는 완전관리형 NoSQL 서버리스 데이터베이스 서비스이다
DynamoDB의 특징
DynamoDB는 HTTP 통신을 한다.
다른 DB Resource들이 TCP Connection 기반인데 비해, Connectionless 하다.
AWS Lambda나 AppSync같은 서버리스 서비스와 잘 어울린다.
DynamoDB는 프로비저닝 및 온디맨드 용량 모드를 모두 제공하므로 테이블당 용량을 지정하거나 사용한 리소스에 대해서만 비용을 지불함으로써 비용을 최적화할 수 있습니다. 서버를 프로비저닝, 패치 또는 유지 관리하지 않습니다.
Key-Value 데이터베이스이다.
Key를 제외한 테이블의 속성을 미리 정의해둘 필요 없다.
미리 스키마가 만들어져 있어야 하는 RDBMS와 다르게 테이블의 Attribute들을 유연하게 설정할 수 있다
Key의 구성 방법은 크게 두 가지로 나누어진다.
(1) Simple Primary Key
Partition Key 하나만을 Primary Key로 쓰는 것이다.
(2) Composite Primary Key
Partition Key와 Sort Key의 조합으로 Primary Key를 쓰는 것이다.
DynamoDB 용량 모드
DynamoDB는 온디맨드와 프로비저닝 방식의 두 가지 용량 모드가 있다.
온디맨드(On-demand)
온디맨드 방식은 사용한 만큼만 가격을 지불하는 방식
많은 트래픽이 발생할 수록 이전에 도달한 최대 트래픽 수준까지 확장된다.
만약 이전에 도달한 최대 트래픽을 넘는다면 이전의 2배에 해당하는 크기로 자동 조정된다.
프로비저닝(Provisioned)
프로비저닝 방식은 애플리케이션에 필요한 초당 읽기 및 쓰기 횟수를 지정한다.
오토 스케일링을 사용하여 트래픽 변경에 따라 프로비저닝된 용량을 자동으로 조정할 수 있다.
따라서 프로비저닝된 모드를 사용하면 비용을 예측하는데 많은 도움이 된다.
Secondary Index
DynamoDB index에는 두가지 종류가 있습니다.
로컬 보조 인덱스 (Local Secondary Index)
테이블 생성 시 함께 생성.
테이블 생성 후엔 인덱스 생성 불가능.
파티션키는 기존과 동일. 정렬키는 다른 속성으로 지정.
인덱싱된 전체 크기가 10GB이하
최종 일관성 또는 강력한 일관성 선택 가능
최대 5개 생성 가능
글로벌 보조 인덱스 (Global Secondary Index)
테이블 생성 시 생성 가능.
테이블 생성 후에도 인덱스 생성 가능.
파티션키/정렬키 기본 테이블과 다를 수 있음.
크기 제한 없음
최종 일관성만 지원.
최대 20개 생성 가능
쓰기(생성)
aws dynamodb put-item \ --table-name Users \ --item \ '{"ID": {"N": "5"}, "username": {"S": "good"}, "user_point": {"N": "50000"}, "count": {"N": "3"}}'
조회
aws dynamodb get-item --consistent-read --table-name Users --key '{ "ID": {"N": "1"}, "username": {"S": "hoon"}}’
수정
aws dynamodb update-item --table-name Users --key '{ "ID": {"N": "1"}, "username": {"S": "hoon"}}' --update-expression "SET user_point = :user_point" --expression-attribute-values '{":user_point":{"N":"10000"}}' --return-values ALL_NEW
쿼리 확인
aws dynamodb query --table-name Users --key-condition-expression "ID = :ID" --expression-attribute-values '{":ID":{"N":"2"}}’
========================================================================
참고 자료
https://docs.aws.amazon.com/ko_kr/amazondynamodb/latest/developerguide/GettingStartedDynamoDB.html
Getting started with DynamoDB - Amazon DynamoDB
이 페이지에 작업이 필요하다는 점을 알려 주셔서 감사합니다. 실망시켜 드려 죄송합니다. 잠깐 시간을 내어 설명서를 향상시킬 수 있는 방법에 대해 말씀해 주십시오.
docs.aws.amazon.com
https://docs.aws.amazon.com/ko_kr/amazondynamodb/latest/developerguide/HowItWorks.Partitions.html파티션 및 데이터 배포 - Amazon DynamoDB
파티션 및 데이터 배포 Amazon DynamoDB는 데이터를 파티션에 저장합니다. 파티션은 SSD(Solid State Drive)로 백업되는 테이블용 스토리지 할당으로, AWS 리전 내의 여러 가용 영역에 자동으로 복제됩니다.
docs.aws.amazon.com
https://docs.aws.amazon.com/ko_kr/amazondynamodb/latest/developerguide/GSI.html
DynamoDB에서 글로벌 보조 인덱스 사용 - Amazon DynamoDB
잠재적 조절을 피하기 위해서 글로벌 보조 인덱스용 프로비저닝된 쓰기 용량은 새로운 업데이트로 기본 테이블과 글로벌 보조 인덱스가 모두 쓰여지기 때문에 기본 테이블의 쓰기 용량 이상이
docs.aws.amazon.com
https://docs.aws.amazon.com/ko_kr/amazondynamodb/latest/developerguide/BackupRestore.html
DynamoDB에 대한 온디맨드 백업 및 복원 사용 - Amazon DynamoDB
이 페이지에 작업이 필요하다는 점을 알려 주셔서 감사합니다. 실망시켜 드려 죄송합니다. 잠깐 시간을 내어 설명서를 향상시킬 수 있는 방법에 대해 말씀해 주십시오.
docs.aws.amazon.com
https://alphahackerhan.tistory.com/39
60분만에 이해하는 DynamoDB 모델링: DynamoDB Modeling
사실 이 제목은 내가 지은 것은 아니고, AWS re:invent에서 발표될때, "Data modeling with Amazon DynamoDB in 60 minutes" 라는 제목으로 소개가 되서 따라 적어보았다; 도입. 어쨌든 이번 포스트에서 소개하고자
alphahackerhan.tistory.com
'교육 > 코드스테이츠' 카테고리의 다른 글
[76일차] Final Project Day_07 ~ 08 (0) 2023.03.16 [74일차] Final Project Day_06 (0) 2023.03.14 [72일차] Final Project Day_04 (0) 2023.03.11 [71일차] Final Project Day_03 (0) 2023.03.09 [70일차] Final Project Day_02 (0) 2023.03.08