( 참고 : “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?

  • 봐야 하는 데이터의 양을 줄인다/나눈다!

figure2


Vertical Partition

  • RDB에서도 사용되는 경우가 있음

  • 정규화(Normalization) : 중복되는 데이터를 나누는 것

    정규화 이후에도, column에 따라 데이터를 나누는 것

  • ex) 어떤 column의 경우 지속적으로 update

    반면, 어떤 column은 거의 변하지 않음

figure2


Horizontal Partition

  • NoSQL에서 거의 무조건 사용함!
  • 특정 artists를 찾아주기 위해, 모오드으은 data를 다 찾아보기 어려움
  • row에 따라 데이터를 나누는 것

figure2


3. DynamoDB

NoSQL를 제공하는 AWS의 DB

figure2

앞서 진행했던 Spotify Project에서, top tracks는 DynamoDB를 사용할 것!


  • 어떠한 Key값을 사용하여, 빠르게 access 할지!

figure2


위의 DB에 어떤 식으로 데이터를 넣을 수 있을까?