( 참고 : “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에 어떤 식으로 데이터를 넣을 수 있을까?