[몽고DB 완벽 가이드] 책을 보고 정리한 내용입니다.
스키마 설계 고려 사항
- 제약 사항
- 쿼리 및 쓰기의 접근 패턴
- 관계 유형
- 카디널리티
스키마 설계 패턴
- 다형성 패턴 : 컬렉션 내 모든 도큐먼트가 유사하지만 동일하지 않는 구조를 가질 때 적합
- 속성 패턴 : 정렬하거나 쿼리하려는 도큐먼트에 필드의 서브셋이 있는 경우, 정렬하려는 필드가 도큐먼트의 서브셋에만 존재하는 경우에 적합
- 버킷 패턴 : 데이터가 일정 기간 동안 스트림으로 유입되는 시계열 데이터에 적합
- 이상치 패턴 : 드물게 도큐먼트의 쿼리가 애플리케이션의 정상적인 패턴을 벗어날 때 사용
- 계산된 패턴 : 데이터를 자주 계산해야 할 때나 데이터 접근 패턴이 읽기 집약적일 때 사용
- 서브셋 패턴 : 장비의 램 용량을 초과하는 작업 셋이 있을 때 사용
- 확장된 참조 패턴 : 각각 고유한 컬렉션이 있는 여러 논리 엔티티 또는 '사물'이 있고 특정 기능을 위해 엔티티들을 모을 때 사용
- 근사 패턴 : 리소스가 많이 드는 계산이 필요하지만 높은 정확도가 반드시 필요하지는 않은 상황에 유용
- 트리 패턴 : 쿼리가 많고 구조적으로 주로 계층적인 데이터가 았을 때 적용
- 사전 할당 패턴 : 주로 MMAP 스토리지 엔진과 함께 사용
- 도큐먼트 버전 관리 패턴 : 도큐먼트의 이전 버전을 유지하는 ㅐㅁ커니즘을 제공
정규화 vs 비정규화
데이터를 얼마나 정규화 할지는 늘 중요한 문제이다.
정규화 : 컬렉션 간의 참조를 이용해 데이터를 여러 컬렉션으로 나누는 작업.
비정규화 : 모든 데잍를 하나의 도큐먼트에 내장하는 것.