DynamoDB
•
SSD기반 무제한 스토리지
•
key-value 형태로 저장
•
10m/s 미만의 응답 시간
•
확장이 단순하고 신속함
•
자동 이중화 백업 (3개 지역 분산)
•
관리 부담 감소 사용 편의성
•
비정형 데이터 저장에 유용함
•
완전관리형 NoSQL 데이터베이스
•
서버리스 서비스
백업 및 복구
•
DB 테이블에 대해 온디맨드 백업을 생성하고 특정 시점으로 복구를 활성화
•
특정 시점으로 복구 PITR(Point-in-time recovery)를 사용해 최근 35일 이내 원하는 시점으로 테이블 복원 가능
테이블 클래스
•
Standard
◦
기본형으로 대부분의 워크로드에 권장
•
Standard-IA
◦
애플리케이션 로그, 전자 상거래 주문 내역와 같이 자주 엑세스하지 않는 데이터를 저장하는 테이블에 대한 비용을 줄임
읽기/쓰기 용량 모드
•
온디맨드 모드
◦
초당 읽기/쓰기 처리량을 자동으로 조정
◦
트래픽 예측이 불가능한 경우 사용
•
프로비전드 모드
◦
읽기/쓰기 횟수를 수동으로 조정
◦
트래픽 예측이 가능한 경우 사용
Accelerator (DAX)
•
데이터베이스 앞에 인메모리 캐시를 사용해서 DB의 읽기 성능을 향상시키는 기능
•
마이크로 초 단위의 응답시간을 제공
글로벌 테이블
•
리전간에 데이터베이스를 복제하는 기능
•
모든 리전에서 읽기, 쓰기 가능
•
복제본 테이블에 있는 항목의 모든 변경 사항은 동일한 글로벌 테이블 내의 다른 모든 복제본에 1초 이내로 복제됨
•
하나의 리전에 문제가 발생해도 다른 리전으로 라우팅 되므로 재해 복구 기능을 함
•
사용자는 가까운 리전에서 DB를 사용하기에 더욱 빠른 성능 지원
읽기 일관성
•
데이터를 읽을 때 사용자는 읽기를 최정적 일관된 읽기나 강력한 일관된 읽기로 지정 가능
•
최종적 일관된 읽기
◦
최종 일관성 옵션은 읽기 처리량을 최대화
◦
최종적 일관된 읽기는 최근 완료한 쓰기 결과를 반영하지 못할 수 있음
•
강력한 일관된 읽기
◦
읽기 전에 성공적인 응답을 수신한 모든 식을 반영한 결과를 반환
◦
최종적 일관된 읽기보다 읽기 지연시간이 길어지거나 처리 용량을 많이 사용
S3와 통합
S3로 보내기
•
DynamoDB 테이블의 데이터를 S3 버킷으로 보내는 기능
•
자동 백업인 특정 시점으로 복구(PITR) 기간 내의 데이터만 내보낼 수 있음 (최대 35일)
•
기능 사용을 위해서는 특정 시점으로 복구 PITR가 활성화 되어야함
•
데이터를 DynamoDB JSON 형식 또는 Amazon Ion text format 형식으로만 내보낼 수 있음
•
S3로 내보낸 데이터를 Athena, Glue, Lake Formation 등 다른 AWS 서비스를 사용하여 데이터에 대한 분석과 복잡한 쿼리를 수행 가능
•
테이블 내보내기는 테이블의 읽기 용량을 사용하지 않으며 테이블 성능 및 가용성에 영향을 주지 않음
•
테이블 데이터를 다른 AWS 계정이 소유한 S3 버킷 및 해당 테이블이 있는 리전과 다른 리전으로 내보낼 수 있음
S3에서 가져오기
•
S3의 데이터를 DynamoDB 테이블로 가져오는 기능
•
CSV, DynamoDB JSON 형식 또는 Amazon Ion text format을 가져올 수 있음
Get Item
•
GetItem은 DynamoDB에서 단일 항목(아이템)을 조회하는 API이다.
•
요청 시 지정한 기본 키(primary key)로 단일 아이템을 검색한다.
aws dynamodb get-item \
--table-name YourTableName \
--key '{"YourPrimaryKeyAttributeName": {"S": "YourPrimaryKeyValue"}}'
Shell
복사
Batch Get Item
•
BatchGetItem은 여러 아이템을 동시에 조회하는 API이다.
•
여러 테이블에서 최대 100개 아이템까지 요청할 수 있다.
•
한 번의 요청으로 가져오기 때문에 효율적이다.
•
제한 사항: 최대 아이템 = 100개, 총 데이터 크기 = 16MB
aws dynamodb batch-get-item \
--request-items '{
"YourTableName": {
"Keys": [
{"YourPrimaryKeyAttributeName": {"S": "Value1"}},
{"YourPrimaryKeyAttributeName": {"S": "Value2"}}
]
}
}'
Shell
복사


