DynamoDB 의 핵심 컴포넌트
- 3 가지 핵심 구성 요소
- Tables
- Items
- Attributes
- 핵심 구성 요소 Example
- A table 은 items 의 컬렉션
- 각 item 은 Attributes 의 컬렉션
- DynamoDB 는 테이블에서 각 item 을 식별하기 위해 primary keys 를 사용한다. 그리고 더 유연한 query 를 위해 secondary indexes 도 있다.
Topics
- Tables, Items, Attributes
- Primary Key
- Secondary Indexes
- DynamoDB Streams
Tables, Items, Attributes
- Table
- rdbms 의 table
- Item
- rdbms 의 row
- Attributes
- rdbms 의 column
- 다른 점은 Attribute 는 Value 로 nested attribute 를 가질 수 있다.
- DynamoDB 는 최대 32 level deep 까지 지원
Primary Key
- 테이블 생성 시 Primary Key 를 정하고, Primary Key 는 테이블 내에서 각 item 의 유니크한 식별자가 된다. 그래서 같은 key 를 가지는 두 item 은 생길 수 없다.
- 두 가지 유형의 primary keys 를 지원한다.
- Partition key
- Simple primary key - one attribute
- partition key 의 값은 내부 hash 함수의 파라미터로 넣어 값을 구한다. 그 값으로 물리 저장소 어디에 저장할지 결정하는 partition key 로 사용한다. 테이블에서 partition key 는 유니크하고, 동일한 partition key value 는 없다.
- Partition key & sort key
- Composite primary key - two attributes
- 첫 번째 속성 → partition key
- simple primary key 와 동일하게 내부 해시 함수를 이용하여 물리 저장소의 파티션을 결정한다. 하지만 다른 점은 테이블에서 동일한 partition key 가 존재할 수 있고 sort key value 에 의해 정렬된다.
- hash attribute 라고도 한다.
- 두 번째 속성 → sort key
- 같은 partition 에 있는 item 을 sort key 를 통해 정렬한다.
- secondary attribute, range attribute 라고도 한다.
- 첫 번째 속성 → partition key
- Composite primary key - two attributes
- Partition key
- primary key
- 허용되는 데이터 타입
- only single value - collection 사용 X
- string, number, binary
- 허용되는 데이터 타입
Secondary Indexes (보조 인덱스)
- 테이블에서 primary key 를 추가하지 않고 대안으로 secondary key 를 추가하여 query 를 유연하게 사용할 수 있다.
- 두 가지 종류의 인덱스
- Gsi(Global Secondary index)
- partition key 와 sort key 로 구성하는 인덱스
- 테이블과 각각 다르게 구성할 수 있다.
- 테이블 당 20개 생성 가능
- Lsi(Local Secondary index)
- 테이블과 동일한 partition key 를 사용하지만,
- sort key 는 다르게 구성한다.
- 테이블 당 5개 생성 가능
- Gsi(Global Secondary index)
DynamoDB Streams
- Optional feature
- TTL 이 만료된 메시지를 DynamoDB Streams 에 넣어주는 기능.
- MQ 처럼 Consume 하는 형태가 아니라 Polling 하는 방식이다. 썩 좋아보이지 않는다…