스키마 개선
이 페이지의 내용
스키마는 컬렉션, 인덱스 및 문서 를 포함하는 클러스터의 아키텍처입니다. 개발 프로세스 초기에 스키마 설계를 고려하세요.
서버리스 인스턴스의 경우 Schema Advisor 에 액세스 할 수 없습니다.
스키마 설계 패턴
자주 사용되는 디자인 패턴을 기반으로 스키마를 모델링할 수 있습니다. 패턴으로 구축 블로그 시리즈에서는 자주 사용되는 다음과 같은 디자인 패턴에 대해 설명합니다.
배열이 잘 작동하는 상황에 대해 알아보려면 다음 디자인 패턴을 참조하세요.
각 영화가 일부 국가에서만 개봉하는 영화 데이터와 같이 고유한 속성 조합이 있는 데이터를 처리하려면 속성 패턴을 사용합니다.
버킷 패턴은 시간 범위 데이터와 같이 긴밀하게 그룹화되거나 순차적인 데이터를 처리할 때 사용합니다.
다형성 패턴을 사용하면 여러 스포츠 종목의 선수 기록과 같이 동일한 컬렉션에서 서로 다른 형태의 문서를 처리할 수 있습니다.
작업 세트의 문서를 관리 가능한 크기로 유지하기 위한 전략에 대해 알아보려면 다음 패턴을 참조하세요.
확장 참조 패턴을 사용해 자주 읽는 데이터의 일부를 큰 문서에서 작은 문서로 복제할 수 있습니다.
서브셋 패턴을 사용하면 배열 필드가 큰 문서의 크기를 줄일 수 있습니다.
표준 컬렉션에서 소수의 대용량 문서를 처리하려면 이상값 패턴을 사용하세요.
유연한 데이터 모델을 스키마에 통합하는 방법을 알아보려면 MongoDB.live 2020의 다음 프레젠테이션을 참조하세요:
MongoDB의엔티티 관계에 대해 알아보고, MongoDB를 사용한 데이터 모델링으로 구현한 예시를 살펴보세요.
고급 스키마 설계 패턴을 통해 스키마에 통합할 수 있는 고급 데이터 모델링 디자인 패턴에 대해 알아보세요.
스키마 추천
Atlas는 일반적인 스키마 설계 문제를 감지하는 두 가지 방법을 제공하며 MongoDB의 권장사항을 따르는 수정을 제안합니다.
Performance Advisor 는 가장 활동적인 collection과 collection에서 느리게 실행되는 쿼리로 문서를 샘플링하여 클러스터 에 대한 전체적인 스키마 권장 사항을 제공합니다.
Atlas UI 는 해당 컬렉션 의 문서를 샘플링하여 특정 컬렉션 에 대한 스키마 제안을 제공합니다.
Performance Advisor 또는 데이터 탐색기에서 제공되는 추천을 적용하는 방법에 대해 자세히 알아보려면 다음 페이지를 참조하세요.
스키마 개선 | 추천하는 이유 |
---|---|
데이터에 대해 너무 많은 $lookup 작업을 실행하고 있습니다. MongoDB의 풍부한 스키마 모델을 활용하여 관련 데이터를 하나의 컬렉션에 포함하세요. | |
많은 요소를 가진 배열 필드가 문서에 포함되어 있어 쿼리 성능이 저하될 수 있습니다. | |
컬렉션에 디스크 공간을 소모하고 쓰기 (write) 성능을 저하시킬 수 있는 불필요한 인덱스가 있습니다. | |
문서가 너무 커서 자주 사용하는 쿼리의 성능이 저하될 수 있습니다. | |
데이터베이스에 컬렉션 수가 너무 많아서 불필요한 디스크 공간 사용량이 발생할 수 있습니다. | |
비효율적인 정규식 일치에 의존하는 쿼리를 실행하고 있습니다. $ 검색 집계 파이프라인 단계를 사용하는 Atlas Search 쿼리 를 활용하세요. |
스키마 추천의 제한 사항
컬렉션에 대한 스키마 추천은 부분적으로 해당 컬렉션의 문서를 무작위로 샘플링하여 이루어집니다. 이 샘플링은 스키마가 분석될 때마다 수행되므로 동일한 컬렉션에 대해 다른 시간에 다른 추천이 표시될 수 있습니다.
Performance Advisor 는 느린 쿼리를 모니터링하여 특정 스키마 문제, 즉 너무 많은
$lookup
작업 및 대소문자를 구분하는 정규식 쿼리에 인덱스 를 활용하지 않는 것을 인식합니다. 클러스터 가 장기 실행 쿼리를 지속적으로 수신하지 않는 경우, Performance Advisor 는 해당 클러스터 에 대한 모든 잠재적 개선 사항을 제안하지 않거나 개선 사항이 제안되는 모든 이유를 표시하지 않을 수 있습니다.Performance Advisor는
top
명령의 출력을 기반으로 가장 활성화된 20개의 컬렉션을 분석합니다. 특정 컬렉션에 대한 추천을 보려면 Atlas UI에서 해당 컬렉션을 확인하세요.Performance Advisor 와 Atlas UI 모두 time-series 컬렉션에 대한 스키마 제안을 제공하지 않습니다.