조회수
MongoDB 보기는 다른 컬렉션 또는 보기의 집계 파이프라인에 의해 내용이 정의되는 읽기 전용 쿼리 가능 객체입니다.
MongoDB는 view 콘텐츠를 디스크에 보존하지 않습니다. view 콘텐츠는 클라이언트가 view를 쿼리할 때 온디맨드 방식으로 계산됩니다.
참고
명확화
이 페이지에서는 표준 뷰에 대해 설명합니다. 온디맨드 구체화된 뷰에 대한 설명은 온디맨드 구체화된 뷰를 참조하세요.
뷰 유형 간의 차이점을 이해하려면 온디맨드 구체화된 뷰와의 비교를 참조하세요.
MongoDB Atlas에서 호스팅되는 배포를 위해 UI에서 구체화된 뷰를 생성 할 수 있습니다.
사용 사례
뷰를 사용하여 다음을 수행할 수 있습니다.
개인 식별 정보(Personally Identifiable Information, PII)를 제외하기 위해 직원 데이터 collection에 대한 view를 생성합니다. PII가 포함되지 않은 직원 데이터에 대한 view를 사용자의 애플리케이션에서 쿼리할 수 있습니다.
센서 데이터 컬렉션에 대한 보기를 만들어 계산된 필드와 메트릭을 추가합니다. 애플리케이션에서
find operations
를 사용하여 계산된 데이터를 쿼리할 수 있습니다.재고 및 주문 내역이 포함된 두 컬렉션을 조인하는 뷰를 생성합니다. 애플리케이션은 기본 파이프라인을 관리하거나 이해하지 않고도 뷰를 쿼리할 수 있습니다.
뷰 만들기 및 관리
뷰를 만들고 관리하는 방법을 알아보려면 다음 리소스를 참조하세요.
온디맨드 구체화된 뷰 비교
MongoDB는 표준 뷰와 온디맨드 구체화된 뷰의 두 가지 뷰 유형을 제공합니다. 두 뷰 유형 모두 집계 파이프라인에서 결과를 반환합니다.
표준 뷰는 뷰를 읽을 때 계산되며 디스크에 저장되지 않습니다.
온디맨드 구체화된 뷰는 디스크에 저장되고 디스크에서 읽혀집니다.
$merge
또는$out
단계를 사용하여 저장된 데이터를 업데이트합니다.
Indexes
표준 뷰는 기본 컬렉션의 인덱스를 사용합니다. 따라서 표준 뷰에서 직접 인덱스를 생성, 제거 또는 다시 작성할 수 없으며 뷰에서 인덱스 목록을 가져올 수 없습니다.
인덱스가 디스크에 저장되므로 온디맨드 구체화된 뷰에서 직접 인덱스를 생성할 수 있습니다.
성능
온디맨드 구체화된 뷰는 쿼리의 일부로 계산되지 않고 디스크에서 읽기 때문에 표준 뷰보다 읽기 성능이 뛰어납니다. 파이프라인의 복잡성과 집계되는 데이터의 크기가 커질수록 이러한 성능 이점이 더 커집니다.
행동
다음 섹션에서는 view와 관련된 동작에 대해 설명합니다.
읽기 전용
보기는 읽기 전용입니다. 뷰에 대한 쓰기 작업은 오류를 반환합니다.
스냅샷 격리
보기는 컬렉션 변경 사항의 타임스탬프를 유지하지 않으며 특정 시점 또는 스냅샷 읽기 격리를 지원하지 않습니다.
파이프라인 보기
뷰의 집계 파이프라인에는 차단 정렬 및 그룹 작업 자단에 대한 100 MB 메모리 제한이 적용됩니다.
MongoDB 6.0부터 실행에 100 메가바이트 이상의 메모리가 필요한 파이프라인 단계에서 기본적으로 임시 파일을 디스크에 씁니다. 이러한 임시 파일은 파이프라인 실행 기간 동안 지속되며 인스턴스의 스토리지 공간에 영향을 줄 수 있습니다. MongoDB의 이전 버전에서는 이 동작을 활성화하려면 개별 find
및 aggregate
명령에 { allowDiskUse: true }
을 전달해야 합니다.
개별 find
및 aggregate
명령은 다음 방법 중 하나를 통해 allowDiskUseByDefault
매개변수를 재정의할 수 있습니다:
1}이 로 설정된 경우 을 사용하여 임시 파일을 디스크에 쓰는 것을 허용합니다.
{ allowDiskUse: true }
allowDiskUseByDefault
false
1}이 로 설정된 경우 을 사용하여 임시 파일을 디스크에 쓰는 것을 금지합니다.
{ allowDiskUse: false }
allowDiskUseByDefault
true
참고
MongoDB Atlas 의 경우, 장기 실행 쿼리가 저장 를 임시 파일로 채우지 않도록 저장 자동 확장 을 구성 하는 것이 좋습니다.
Atlas cluster 가 저장 자동 확장 을 사용하는 경우, 임시 파일로 인해 클러스터 가 다음 저장 계층 으로 확장하다 될 수 있습니다.
Time Series 컬렉션
Time series 컬렉션 은 쓰기 가능한 비실체화 뷰입니다. time series 컬렉션에는 보기 제한이 적용됩니다. 자세한 내용은 Time Series 수집 제한을참조하세요.
time-series 컬렉션 네임스페이스(즉,
system.buckets
접두사가 붙은 컬렉션)에서는 뷰를 만들 수 없습니다.
경고
system.profile
이라는 이름의 time series 컬렉션 또는 뷰를 만들려고 시도하지 마세요. MongoDB 6.3 이상 버전에서 이를 시도하는 경우 IllegalOperation
오류가 반환됩니다. 이전 MongoDB 버전은 충돌합니다.
액세스 제어
배포서버 에서 인증 을 시행하는 경우:
뷰를 만들려면 뷰가 생성된 데이터베이스 에 대한
createCollection
권한 이 있어야 합니다. 또한 생성하려는 뷰의 네임스페이스 에 대한find
권한 이 있는 경우 다음 리소스에 대한find
권한 도 있어야 합니다.새 뷰가 생성되는 소스 컬렉션 또는 뷰입니다.
뷰를 쿼리 하려면 뷰 네임스페이스 에 대한
find
권한 이 있어야 합니다. 소스 컬렉션 또는 뷰 파이프라인 에서 참조된 네임스페이스에 대한find
권한 은 필요하지 않습니다.
데이터베이스 내장 readWrite
역할 이 있는 사용자에게는 나열된 작업을 실행 하는 데 필요한 권한이 있습니다. 필요한 권한을 부여하려면 다음 중 하나를 수행합니다.
필요한 역할 을 가진 사용자를 만듭니다 .