-
[AWS] DynamoDBAWS 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 - 파티션키 (Partition Key)