MongoDB Schema Design

javawork·2022년 2월 4일
0

원문

Relational vs. MongoDB Schema Design

Relational

  • 중복 데이터를 허용하지 않음
  • 정규화
  • 쿼리에서 자유로운 모델 디자인

MongoDB

  • No rule, No process, No algorithm
  • 데이터를 어떻게 저장할 것 인가
  • 쿼리 성능 고려

샘플 데이터

Embedding vs. Referencing


Embedding

장점

  • 전체 데이터를 쿼리 한번에 가져옴
  • 무거운 join이나 lookup을 사용하지 않아도 된다
  • 데이터를 atomic하게 한번에 update 할수있다

단점

  • document가 커지고 오버헤드가 생김
  • 16MB document 사이즈 제한

Referencing

장점

  • 작은 document 사이즈
  • 16MB 사이즈 제한을 넘기지 않을 확률이 높다
  • 중복 데이터가 없다
  • 자주 액세스되지 않는 데이터는 쿼리하지 않을수 있다

단점

  • 전체 데이터를 가져오려면 상대적으로 오래 걸림
  • two queries or lookup 하려면 모든 데이터를 가져와야 한다

Types of Relationships

One to One

One to Few

One to Many

One to Squillions

Many to Many

MongoDB Schema Design Rules

  1. embedding을 우선적으로 고려
  2. 데이터를 독립적으로 접근해야 한다면 referencing을 사용
  3. 일반적으로 join과 lookup를 피해야 하지만 사용함으로써 더 나은 스키마 디자인을 만들수 있다면 사용
  4. 배열형태의 데이터가 사이즈 제한없이 늘어나면 안됨
  5. 데이터를 어떻게 모델링할지는 전적으로 데이터를 접근하는 패턴에 달려있음

기타

Polymorphic Pattern

모든 document가 같은 필드를 가져야 하는 것은 아님

Outlier Pattern

특정 필드 데이터가 많을 경우

기타 Pattern

profile
게임 개발자

0개의 댓글