AWS

[AWS] DynamoDB

어코링 2024. 2. 14. 12:53
DynamoDB

 

 

 

★ NoSQL(Not Only SQL) 데이터베이스

     Not Only A But Also B : A뿐만아니라 B도 ⭢ SQL 뿐만아니라 

★ 매우 빠른 쿼리 속도

★ Auto-Scaling 기능 탑재

데이터가 추가될시 테이블이 알아서 늘어나고 그렇지 않으면 저절로 사이즈가 줄어듦. ⭢ 비용적인 측면에서도 이점

★ Key-Value 데이터 모델 지원

★ 테이블 생성시 스키마 생성 필요 없음

★ 모바일, 웹, IoT데이터 사용시 추천됨

★ SSD 스토리지 사용 

⭢ 읽고 쓰는데 속도가 아주 빠름

 

DynamoDB의 구성

 

테이블 (Table)

아이템 (Items) - 행(row)과 개념이 비슷함

특징 (Attributes) - 열(column)과 개념이 비슷함

Key-Value (Key : 데이터의 이름, Value : 데이터 자신)

사진의 표를 예로 들자면, Key는 Cust_Id이고 Value는 Cust_Id의 값

예시. JSON(주로), XML

(Key-Value가 뚜렷한 것을 사용)

DynamoDB의 Primary Keys (PK)

PK를 사용하여 데이터 쿼리

DynamoDB에는 두가지의 PK 유형이 있음

  • 파티션키 (Partition Key)
    • 고유 특징 (Unique Attribute)
    • 실제 데이터가 들어가는 위치를 결정해줌
    • 파티션키 사용시 동일한 두개의 데이터가 같은 위치에 저장될 수 없음 !
  • 복합키 (Composite Key)
    • 파티션키 (Partition Key) + 정렬키(Sort Key)
    • 예시 : 똑같은 고객이 다른 날짜에 다른 물건을 구매
      고객 A 구매한 물건 : X 물건 구매 시간 : 오늘 / 고객 A 구매한 물건 : Y 물건 구매 시간 : 다음주
      이데이터가 테이블에 들어있다면 파티션 키가 똑같다. 하지만 정렬키는 다름
    • 파티션키 : 고객아이디, 정렬키 : 날짜(Timestamp)
    • 같은 파티션키의 데이터들은 같은 장소에 보관, 그다음 정렬키에 의해 데이터가 정렬됨

위 사진과 같이 Customer_id가 있고 이 고객이 다른 날짜에 다른 아이템을 구매한다고 가정해보자.

Customer_id만으로 Partition 키를 사용하기는 힘들어보인다.

이럴때 복합키를 사용하면된다.

Partition 키를 고객 아이디로, 정렬 키로 거래 날짜로

DynamoDB 데이터 접근 관리

AWS IAM으로 관리할 수 있음

 테이블 생성과 접근 권한을 부여할 수 있음

 특정 테이블만, 특정 데이터만 접근 가능케 해주는 특별한 IAM 역할 존재

IAM에서 유저를 생성하고 그 유저의 테이블 생성과 접근 권한을 부여할 수 있다.

 뿐만 아니라 IAM의 특별한 역할을 사용하여 특정 유저에게 특정 테이블과 데이터만 접근 가능케 할 수 있다.

예를 들어 전세계의 테이블 안에 정보가 담겨있다고 가정.

유저 아이디와 점수, 등수

본인의 기록을 확인하고 싶을 때 다른 사람들의 데이터는 보이지않게끔 가려하 하는 경우가 있을 것이다.

본인이 세계에세 현재 랭킹이 몇위쯤 되는지 확인하고 싶을 때

이럴 때 사용자 아이디 simonKim을 가지고 있는 유저에게만 저 하나의 데이터만 보여주는 특수 IAM 역할을 부여함으로써 가능해진다.

유저 아이디가 Partition 키가 될것이고 그 Partition 키를 가지고 데이터를 필터링하여 보여주는 것