반응형
DynamoDB
DynamoDB는 완전 관리형 비관계형 데이터베이스 서비스
- 원활한 확장성 및 빠르고 예측 가능한 성능 제공
- 인프라를 운영하는데 있어 번거로움을 DynamoDB가 대신 도맡아 해줌
- 저장 시 암호화를 제공하여 중요 데이터 보호와 운영 부담 및 복잡성 제거
DynamoDB 주요 이점
- 모든 규모에서도 뛰어난 성능 제공
- 모든 규모에서 일괄적인 10밀리초 미만의 응답시간
- 무제한의 처리량으로 애플리케이션 빌드
- 서버리스
- 서버를 프로비저닝, 패치 또는 관리할 필요가 없음(서버리스니까)
- 설치, 유지 관리 또는 운영할 소프트웨어가 없음
- 엔터프라이즈 사용 가능
- ACID 트랜잭션 지원
- 모든 데이터 저장 시 암호화
- 다중 리전 복제(글로벌 테이블)
- 세분화된 자격 증명 및 액세스 제어 제공
- 대규모의 데이터 즉각적인 백업 수행
DynamoDB 구성 요소
- 테이블
- 항목 : 레코드
- 속성 : 필드
- *기본 키 * : 테이블의 각 항목을 나타내는 고유 식별자
- 단순 기본 키(파티션 키) : 하나의 속성으로 구성된 간단한 기본 키
- 테이블 생성 시 테이블 이름과 더불어 테이블의 기본 키를 지정
- 내부 해시 함수에 대한 입력으로 파티션 키를 사용
- 해시 함수 출력에 따라 ㅎ항목을 저장할 파티션(내부 물리적 스토리지)이 결정
- 경합을 막는 혁할
- 성능 및 효율성 증대
- 원하는 파티션만 조회를 하면 Prunning을 통해 FTS(Full Table Scan)를 막을 수 있다.
- 이러한 특성 때문에 파티션 키를 잘 잡는 것이 중요
- 복합 기본 키 : Partition Key + Sort Key
- 항목이 파티션 키의 해시를 기준으로 파티션에 그룹화 되고, 정렬 키로 항목이 정렬 됨
- 두 키의 합성은 테이블 전체에서 고유해야 함
- 인덱스
DynamoDB 샤딩
DynamoDB가 데이터를 자동으로 관리
- 여러 서버에서 하나 이상의 파티션으로 테이블을 수평적으로 샤딩
- 데이터가 증가하면 리샤딩이 트리거 된다.
- 적응형 용량은 고르지 않은 액세스 패턴을 수용
DynamoDB 적응형 용량
- 기본적으로 사용 가능
- RCU = Read Capacity Unit : 4KB 단위로 1초동안 몇 번 read?
- WCU = Write Capacity Unit : 1KB 단위로 1초동안 몇 번 write?
프로비저닝 방식
RCU : 1000, WCU : 2000 처럼 이미 작업의 양이 정해져있는 경우
온디멘드 방식
RCU와 WCU가 들쭉날쭉한 경우(Ex: 티켓 예매)
인덱스
- 글로벌 보조 인덱스 : 기본 테이블의 파티션 키 및 정렬 키와 다른 파티션 키와 정렬 키가 있는 인덱스
- 기본 테이블과 파티션 키가 다르다. 최대 20개
- 파티션 키가 다르기 때문에 다른 테이블에 저장이 됨 -> RCU, WCU를 함께 사용 할 수 없다.
- 로컬 보조 인덱스 : 기본 테이블과 동일한 파티션 키가 있지만, 정렬 키가 다른 인덱스
- 기본 테이블의 파티션 키 사용, 최대 5개
- 기본 테이블의 정렬 키를 키가 아닌 속성으로 사용
- 기본 테이블과 같은 공간에 저장되기에 RCU, WCU를 함께 사용 할 수 있다.
DynamoDB 트랜잭션
DynamoDB에 대한 ACID 규정 준수를 제공
- 직렬화 가능 격리
- 트랜잭션 활성화 비용 X
- 트랜잭션당 두개의 추가 RCU/WCU
- (강의 자료 더 보기)
배치 처리를 통해 한번에 다량의 트랜잭션 수행
- 왕복 횟수 감소
- 작업을 병렬로 수행
항목 만료
- TTL(TIme to LIve)은 항목이 만료되는 시기를 지정
- 항목별로 설정 가능
- 테이블에서 TTL을 활성화하고 TTL 속성 지정
- 최대 48시간 가능
- 비용이 들지 않는 삭제 방법
- 데이터 아카이빙
- Lambda 함수를 사용하여 데이터 수집
- 테이블에서 기한 경과 데이터 삭제
DynamoDB 스트림
DynamoDB Stream이 DynamoDB 테이블의 항목 수준 수정 사항을 시간 순으로 캡처한다.
- 수정 사항 캡처 및 저장
- PutItem
- UpdateItem
- DeleteItem
- 저장 시 암호화
- 스트림 레코드가 생성
- 읽기 요청 유닛으로 청구
반응형
'Applied > AWS' 카테고리의 다른 글
[AWS] KMS(Key Management Service) 실습 (0) | 2022.11.30 |
---|---|
Yaml 파일이란? (0) | 2022.09.20 |
[AWS] Lambda란? (0) | 2022.09.18 |
[EKS] Kubenetes 명령어 연습하기 (0) | 2022.09.14 |
AWS aurora database 개념 (0) | 2022.09.08 |