Share
Sign In

DynamoDB & S3

1. DynamoDB

💡
점점 대충하게 되네…

Key

파티션 키는
물리적인 공간인 파티션을 특정하는 키.
그래서 일치하는 값만 가져올 수 있다.
정렬 키는
단순한 인덱스로 파티션 내에서 정렬하는 기준 값이다.
따라서 정렬 키가 있으면, 한 아이템에 파티션 키가 두 번 나올 수 있다.

보조 인덱스

보조 인덱스로 검색 효율을 높일 수 있다. 보조 인덱스를 설정하면 새로운 테이블에 마이그레이션해야 한다.
Local (LSI) : 동일한 파티션 키 내에서 단순히 정보를 분리하고 싶을 때 사용한다. 우선키와 같은 파티션키를 사용한다.
Global (GSI) : 정렬키와는 별개로 특정 키를 인덱스 키로 활용한다. 우선키와 다른 파티션키를 사용한다.

Read/Write Capacity Unit

읽기 (RCU) : 4KB/s SC, 8KB/s EC
쓰기 (WCU) : 1KB/s
Strongly Consistent (SC) : 가장 최신 데이터를 읽음
Eventually Consistent (EC) : 결과적으로는 최신 데이터를 보장하지만 실시간은 아님.

DAX

자주 읽는 값들을 캐싱해서 읽기 속도를 엄청 빠르게 해준다.

Stream

원하는 이벤트가 발생할 때마다 람다 함수로 넘겨서 작업을 진행할 수 있다. 단, 3개 이상의 람다 함수가 스트림을 받으면 throttling이 발생할 수 있다.

Global Table

현재 테이블을 다른 리전으로 확장할 수 있다. 아이템에는 리전과 업데이트 시간 컬럼이 자동으로 생긴다.

Time To Live (TTL)

아이템에 수명을 줄 수 있다. 이 시간이 지나면 아이템은 테이블에서 삭제된다.

활용

S3 → DynamoDB → ElasticSearch
1.
S3의 메타데이터를 저장하는 용도로 DynamoDB를 사용할 수 있다.
1.
이 정보를 ElasticSearch를 통해 분석할 수 있다.

2. S3

S3 이벤트를 밖으로 보낸다.
버킷 정책으로 다른 리소스를 허용한다.
리전 간 복제를 만들 수 있다.
생명주기 규칙을 만들어서 클래스를 옮기거나 지운다.
Glacier 클래스로 전환해 장기 보관한다.
AES-256(S3), KMS 암호화를 한다.
서버 엑세스 로그를 다른 버킷에 남긴다.