데이터 모델링

70_Lecture/MongoDB
공유하기:

데이터 모델링

1. 관계 설계 전략

MongoDB에서 관계를 모델링하는 두 가지 주요 방법이 있습니다.

임베딩 (Embedding)

  • 정의: 연관된 데이터를 하나의 문서 내에 중첩된(nested) 필드로 저장.
  • 장점: 단일 읽기 작업으로 데이터를 모두 가져올 수 있어 성능이 뛰어남 (Atomic 작업).
  • 사용 사례: 1:1 관계, 데이터가 적은 1:N 관계.

참조 (Referencing / Linking)

  • 정의: 데이터 간의 참조 정보를 저장 (RDBMS의 Foreign Key와 유사).
  • 장점: 데이터 중복 최소화, 개별 문서 크기 감소.
  • 사용 사례: N:M 관계, 데이터가 계속 늘어나는 대규모 1:N 관계.

2. 데이터 타입 (BSON Types)

  • ObjectId: 12바이트 크기의 유니크한 식별자. 저장 시점 정보 포함.
  • String: UTF-8 형식의 문자열.
  • Number: Double, Int32, Int64, Decimal128 지원.
  • Date: 64비트 정수로 저장되는 UTC 날짜.
  • Binary Data: 이미지, 파일 등을 저장.

3. 문서 제약 사항

  • 최대 크기: 단일 문서의 크기는 16MB를 초과할 수 없습니다.
  • 중첩 깊이: 문서는 최대 100레벨까지 중첩될 수 있습니다.

4. 실습 예시

// 임베딩 예시 (사용자 정보와 주소)
{
  "_id": ObjectId("..."),
  "name": "Chayoung",
  "address": {
    "city": "Seoul",
    "zip": "12345"
  }
}
 
// 참조 예시 (게시글과 작성자)
{
  "_id": ObjectId("..."),
  "title": "MongoDB Study",
  "author_id": ObjectId("...") // User 문서 참조
}

5. 시험 팁 (Certification Tips)

  • 16MB 문서 크기 제한은 시험에 자주 출현합니다.
  • 데이터가 무제한으로 늘어날 경우(애플리케이션 로그 등) 임베딩 대신 참조를 선택해야 합니다.
  • "Data that is accessed together should be stored together" 원칙을 기억하세요.

6. 베스트 프랙티스

  • 애플리케이션의 쿼리 패턴에 맞춰 스키마를 설계하세요.
  • 데이터 중복을 두려워하지 마세요 (읽기 성능을 위해 의도적인 중복 사용 가능).