Core Components

Database/DynamoDB 2017. 7. 17. 23:35




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
손가락귀신
정신 못차리면, 벌 받는다.

,