데이터 모델링
공유하기:
데이터 모델링
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. 베스트 프랙티스
- 애플리케이션의 쿼리 패턴에 맞춰 스키마를 설계하세요.
- 데이터 중복을 두려워하지 마세요 (읽기 성능을 위해 의도적인 중복 사용 가능).