문서 메뉴

문서 홈애플리케이션 개발MongoDB 매뉴얼

조회수

이 페이지의 내용

  • 사용 사례
  • 뷰 만들기 및 관리
  • 온디맨드 구체화된 뷰 비교
  • 행동
  • 액세스 제어

MongoDB 뷰는 다른 컬렉션 또는 뷰의 aggregation pipeline에 의해 내용이 정의되는 읽기 전용 쿼리 가능 객체입니다.

MongoDB는 view 콘텐츠를 디스크에 보존하지 않습니다. view 콘텐츠는 클라이언트가 view를 쿼리할 때 온디맨드 방식으로 계산됩니다.

참고

명확화

이 페이지에서는 표준 뷰에 대해 설명합니다. 온디맨드 구체화된 뷰에 대한 설명은 온디맨드 구체화된 뷰를 참조하세요.

뷰 유형 간의 차이점을 이해하려면 온디맨드 구체화된 뷰와의 비교를 참조하세요.

뷰를 사용하여 다음을 수행할 수 있습니다.

뷰를 만들고 관리하는 방법을 알아보려면 다음 리소스를 참조하세요.

MongoDB는 표준 뷰온디맨드 구체화된 뷰의 두 가지 뷰 유형을 제공합니다. 두 뷰 유형 모두 aggregation pipeline에서 결과를 반환합니다.

  • 표준 뷰는 뷰를 읽을 때 계산되며 디스크에 저장되지 않습니다.

  • 온디맨드 구체화된 뷰는 디스크에 저장되고 디스크에서 읽혀집니다. $merge 또는 $out 단계를 사용하여 저장된 데이터를 업데이트합니다.

표준 뷰는 기본 컬렉션의 인덱스를 사용합니다. 따라서 표준 뷰에서 직접 인덱스를 생성, 삭제 또는 다시 작성할 수 없으며 뷰에서 인덱스 목록을 가져올 수 없습니다.

인덱스가 디스크에 저장되므로 온디맨드 구체화된 뷰에서 직접 인덱스를 생성할 수 있습니다.

온디맨드 구체화된 뷰는 쿼리의 일부로 계산되지 않고 디스크에서 읽기 때문에 표준 뷰보다 읽기 성능이 뛰어납니다. 파이프라인의 복잡성과 집계되는 데이터의 크기가 커질수록 이러한 성능 이점이 더 커집니다.

다음 섹션에서는 view와 관련된 동작에 대해 설명합니다.

보기는 읽기 전용입니다. 뷰에 대한 쓰기 작업은 오류를 반환합니다.

뷰의 aggregation pipeline에는 블로킹 정렬 및 블로킹 그룹 작업에 대한 100 MB 메모리 제한이 적용됩니다.

MongoDB 6.0부터는 실행에 100메가바이트 이상의 메모리가 필요한 파이프라인 단계는 기본적으로 임시 파일을 디스크에 기록합니다. MongoDB의 이전 버전에서는 이 동작을 활성화하려면 개별 findaggregate 명령에 { allowDiskUse: true } 를 전달해야 합니다.

개별 findaggregate 명령은 다음 방법 중 하나를 통해allowDiskUseByDefault 매개변수를 재정의할 수 있습니다:

  • 1}이 로 설정된 경우 을 사용하여 임시 파일을 디스크에 쓰는 것을 허용합니다.{ allowDiskUse: true } allowDiskUseByDefault false

  • 1}이 로 설정된 경우 을 사용하여 임시 파일을 디스크에 쓰는 것을 금지합니다.{ allowDiskUse: false } allowDiskUseByDefault true

  • Time series 컬렉션 은 쓰기 가능한 비실체화 뷰입니다. time series 컬렉션에는 보기 제한이 적용됩니다. 자세한 내용은 Time Series 수집 제한을참조하세요.

  • time-series 컬렉션 네임스페이스(즉, system.buckets 접두사가 붙은 컬렉션)에서는 뷰를 만들 수 없습니다.

경고

system.profile이라는 이름의 time series 컬렉션 또는 뷰를 만들려고 시도하지 마세요. MongoDB 6.3 이상 버전에서 이를 시도하는 경우 IllegalOperation 오류가 반환됩니다. 이전 MongoDB 버전은 충돌합니다.

배포가 인증을 시행하는 경우 db.createView() 인증된 사용자에게 데이터베이스에 대한 createCollection 권한이 있어야 합니다.

그러나 사용자에게 데이터베이스에 대한 createCollection이(가) 있고 만들 뷰에 대한 find 이(가) 있는 경우 사용자에게 다음과 같은 추가 권한 있어야 합니다.

  • find 소스 컬렉션 또는 뷰에서입니다.

  • pipeline에서 참조된 다른 컬렉션 또는 뷰의 find(있는 경우)

데이터베이스에서 readWrite 기본 제공 역할이 있는 사용자에게는 나열된 작업을 실행하는 데 필요한 권한이 있습니다. 필요한 역할을 가진 사용자를 만들거나 기존 사용자에게 역할을 부여합니다.

← 데이터베이스 및 컬렉션