DynamoDBsms Not Only SQL인 데이터베이스이다. 매우 빠른 쿼리 속도를 가지고 있으며 Auto-Scaling 기능을 탑재하여 데이터의 크기에 따라 테이블이 확대, 축소 될수 있으며 이를 통해 비용을 절감할 수 있다. NoSQL이므로 테이블 생성 시 스키마 생성이 필요 없으며 key-value데이터 모델을 지원한다.
DynamoDB는 PK를 사용하여 데이터 쿼리를 날린다. DynamoDB에는 두가지의 PK 유형이 존재한다.
접근 관리는 AWS IAM으로 관리한다. IAM을 통해 테이블 생성과 접근 권한을 부여할 수 있다. 특정 테이블만, 특정 데이터만 접근 가능케 해주는 특별한 IAM이 존재한다.
index란 특정 컬럼만을 사용하여 쿼리를 날린다. 이를 통해 테이블 전체가 아닌 기준점을 사용하여 쿼리가 이루어지고 매우 빠르게 쿼리를 날릴 수 있다는 이점때문에 Index가 중요한 개념이다. DynamoDB에서는 두 가지 종류의 Index가 존재한다.
DAX는 dynamodb에서 제공하는 클러스터 In-memory 캐시이다. 이 캐시를 통해 10배 이상의 속도 향상이 되며 읽기 요청만 해당사항이 존재한다. 예를 들어 Black Friday라는 날이 있는데, 이 날의 쇼핑몰에는 수많은 사람이 방문을 하게 된다. 수많은 읽기 요청이 일어난다는 것이다. 이 상황에서 Dax를 사용하면 사용자에게 더 빠른 정보를 제공할 수 있다.
Dax캐싱 시스템
테이블에 데이터를 삽입하고 업데이트 할 때에도 DAX에 반영한다.
읽기 요청에 맞는 데이터가 DAX에 들어있을시 DAX에서도 데이터를 즉시 반환한다. (Cache Hit)
읽기 전용이기 때문에 쓰기 요청이 많은 어플리케이션에는 부적합하다.
읽기 요청이 많지 않은 어플리케이션에서는 부적절하다. 캐시 미스가 발생하면 비용이 많이 든다.
아직 모든 지역에서 제공하지 않는다.
dynamoDB Streams는 event가 발생할 때 시간에 따라 event를 기록하는 역할을 한다. Log는 즉각 암호화가 일어나며 24시간 동안 보관된다. 주로 이벤트를 기록하고 이벤트 발생을외부로 알리는 용도로 사용되며(Lambda Function) 이벤트 전&후에 대한 상황 보관을 한다.
이벤트를 기록하고 발생을 외부로 알리는 역할을 하기 때문에 Lambda Function과 함께 쓰이는 경우가 많다.