DynamoDB
- NoSQL(Not only SQL) 데이터베이스
- 매우 빠른 쿼리 속도
- auto-Scaling 기능 탑재
- key-value 데이터 모델 지원
- 테이블 생성시 스키마 생성 필요 없음
- 모바일, 웹 iot 데이터 사용시 추천됨
- SSD 스토리지 사용
Primary Kye(PK)
- pk를 사용하여 데이터 쿼리
- DynamoDB에는 두가지의 PK 유형이 있음
- partition key
고유 특징(Unique Attribute)
실제 데이터가 들어가는 위치를 결정해줌
파티션키 사용시 동일한 두개의 데이터가 같은 위치에 저장될 수 없음.
- Composite Key 복합키
partition key + sort key
예시 : 똑같은 고객이 다른 날짜에 다른 물건을 구매
파티션 키 : 고객id, 정렬키 : tiemStamp
같은 파티션키의 데이터들은 같은 장소에 보관, 그다음 정렬키에 의해 데이터가 정렬됨.
DynamoDB 데이터 접근 관리
AWS IAM으로 관리 가능.
테이블 생성과 접근 권한을 부여할 수 있음.
특정 테이블만, 특정 데이터만 접근 가능케 해주는 특별한 IAM 역할 존재
Index
특정 컬럼만을 사용하여 쿼리
테이블 전체가 아닌 pivot을 사용해 쿼리가 이뤄짐.
매우 큰 쿼리 성능 효과
두가지의 Index 유형 존재
- Local Secondary Index
- Global Secondary Index
Local Secondary Index(LSI)
테이블 생성시에만 정의해줄 수 있음.
따라서 테이블 생성 후 변경, 삭제 불가능.
똑같은 파티션키 사용 그러나 다른 정렬키 사용.
Global Secondary Index(GSI)
테이블 생성 후에도 추가, 변경, 삭제 가능
다른 파티션키, 정렬키 사용
Query
- pK를 사용하여 데이터 검색
- query 사용시 모든 데이터(컬럼) 반환
- ProjectionExpression 파라미터로 필요한 데이터만 쿼리 가능
Scan
- 모든 데이터를 불러옴(pk x)
- ProjectionExpression 파라미터
- lookup용
scan은 불필요한 데이터까지 조회하게 될 경우가 많기 때문에 성능/비용 측면에서 query를 추천.
Scan은 pk가 없고 데이터가 많지 않을때 사용.
Reference
DynamoDB