( 참고 : “FastCampus, 데이터 엔지니어링 올인원” )
[ Data Engineering ]
NoSQL & DynamoDB
1. NoSQL
( NoSQL = Not Only SQL )
Dynamic Schema
- Structure가 미리 정의되어 있지 않다!
- 각 document는 자신만의 unique한 structure를 가질 수 있다
- DB마다 서로 다른 syntax
- 지속적으로 field 추가 가능
Scalability
- SQL : VERTICALLY scalable
- NoSQL : HORIZONTALLY scalable
- partitioning을 통해서!
2. Partition
What is Partition?
- 봐야 하는 데이터의 양을 줄인다/나눈다!
Vertical Partition
-
RDB에서도 사용되는 경우가 있음
-
정규화(Normalization) : 중복되는 데이터를 나누는 것
정규화 이후에도, column에 따라 데이터를 나누는 것
-
ex) 어떤 column의 경우 지속적으로 update
반면, 어떤 column은 거의 변하지 않음
Horizontal Partition
- NoSQL에서 거의 무조건 사용함!
- 특정 artists를 찾아주기 위해, 모오드으은 data를 다 찾아보기 어려움
- row에 따라 데이터를 나누는 것
3. DynamoDB
NoSQL를 제공하는 AWS의 DB
앞서 진행했던 Spotify Project에서, top tracks는 DynamoDB를 사용할 것!
- 어떠한 Key값을 사용하여, 빠르게 access 할지!
위의 DB에 어떤 식으로 데이터를 넣을 수 있을까?