DynamoDB 의 구성요소
- Tables
데이터(Items) 를 저장하는 공간이다 (RDS 의 table 과 유사) - Items
여러 속성들(Attribues) 로 구성된 집합으로 각 Item 은 모두 유일해야 한다. (RDS 의 row, record, tuple 과 유사)
각 Item 을 유일하게 만들 하나 이상의 Primary key Attributes 를 가진다. (한 Item 의 최대 크기는 400KB) - Attributes
더 이상 분리할 수 없는 기본적인 데이터 요소. (RDS 의 field, column 과 유사)
대부분의 Attribute 는 문자열이나 숫자같은 스칼라 값을 가진다.
일부 Attribute 는 내포(nested) Attribute 로 32 Level 까지 지원한다. {key1:{key2:{key3:...{key32:value}}}}
Primary key
Attribute 중 각 Item 을 다른 Items 와 구별해 주는 Attribute 로 테이블 생성시 지정해야 한다. (RDS 의 Index 와 유사)
이 Privary key 를 제외하고는 Attributes 나 데이터 타입을 미리 정의할 필요가 없다. Item 을 업로드할 때 특정 Attribute 를 지정하여 값을 넣으면 생성된다.
각 Privary key 값은 스칼라여야 하며(즉, 단일 값만 가질 수 있음), 데이터 타입은 String, Number, Binary 만 허용된다.
- Partition key
Primary key 로 Partition key 하나만 사용하여 item 식별할 수 있다. Partition key 중복 불가.
DynamoDB 는 Partition key 로 Item 을 파티션(DynamoDB 내부의 물리적 스토리지) 에 균등하게 분산하는데 내부 해시 기능을 사용해서 hash attribute 라고도 한다. - Partition key & sort key
Partition key 와 sort key 두 개의 Attributes 를 사용하여 item 을 식별할 수 있다.
Partition key 중복 허용. Partition key 와 sort key 모두 중복 불가.
Partition key 가 동일한 모든 Items 는 sort key 값을 기준으로 정렬되어 함께 파티션에 저장되며, range attribute 라고도 한다.
쉽게 말해, Partition key 하나만으로 Item 을 유일하게 만들 수 있으면 Partition key 만 사용하면 되고,
Partition key 의 중복이 예상되면 조합했을 때 Item 을 유일하게 만들 수 있는 Attribute 를 Sort key 로 지정하면 된다.
Secondary Indexes
테이블에 하나 이상의 보조 인덱스(Secondary Indexes) 를 생성할 수 있다.
Secondary Indexes 는 Primary key 에 대한 쿼리는 물론이고 대체 키(alternate key) 를 사용한 쿼리 실행이 가능하다.
Primary key 만으로 원하는 데이터를 조회할 수 없을 때, 다른 Attributes 로 Items 를 조회를 해야 할 때 필요하다.
- Global secondary index
Index 의 Partition key & sort key 가 Table 의 Partition key & sort key 와 다를 수 있는 Index. - Local secondary index
Table 과 Partition key 는 동일하지만 sort key 는 다른 Index.
테이블당 최대 5개의 Global secondary index 및 5개의 Local secondary index 를 정의할 수 있다.
DynamoDB 는 기본 테이블의 Item 에 추가, 업데이트, 삭제가 발생하면, 해당 테이블에 속하는 모든 Index 에도 해당하는 Attribues 를 자동으로 동기화 한다.
기본 테이블에서 Index 로 복사되는 Attribute 를 따로 지정하지 않으면 기본 테이블의 key attribues 만 가져온다.
DynamoDB Streams
DynamoDB 의 테이블에서 Streams 을 설정하면, Item 의 추가, 업데이트, 삭제 같은 이벤트이 발생할 때마다 Streams 레코드를 기록한다.
Stream 레코드에는 테이블의 이름, 이벤트 타임스탬프 및 다른 메타데이터가 포함되어 있으며 24시간 후에는 Stream 에서 자동으로 제거된다.
주로 Stream 과 AWS Lambda 를 함께 사용하여 트리거를 만드는데 사용할 수 있다. (예: 회원 데이터가 들어오면 가입 메일 발송하기 등)
WRITTEN BY
- 손가락귀신
정신 못차리면, 벌 받는다.