ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [AWS] DynamoDB
    AWS 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 키를 가지고 데이터를 필터링하여 보여주는 것

    'AWS' 카테고리의 다른 글

    [AWS] DynamoDB - Query vs Scan  (0) 2024.02.14
    [AWS] DynamoDB - Index  (0) 2024.02.14
    [AWS] CloudFront 실습  (1) 2024.02.13
    [AWS] CloudFront  (0) 2024.02.13
    [AWS] Lambda 실습2 (Lambda 함수 실행 / cloudwatch)  (1) 2024.02.13
Designed by Tistory.