Docs Menu
Docs Home
/
MongoDB 매뉴얼
/ /

조회수

이 페이지의 내용

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

MongoDB 뷰는 다른 컬렉션 또는 뷰의 집계 파이프라인 에 의해 내용이 정의되는 읽기 전용 쿼리 가능 객체입니다.

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

참고

명확화

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

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

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

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

MongoDB는 표준 뷰온디맨드 구체화된 뷰의 두 가지 뷰 유형을 제공합니다. 두 뷰 유형 모두 집계 파이프라인에서 결과를 반환합니다.

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

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

    참고

    $merge 사용 시 변경 스트림 을 사용하여 구체화된 뷰의 변경 사항을 확인할 수 있습니다. $out 사용하는 경우 구체화된 뷰에서 변경 사항을 관찰할 수 없습니다.

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

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

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

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

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

보기는 컬렉션 변경 사항의 타임스탬프를 유지하지 않으며 특정 시점 또는 스냅샷 읽기 격리를 지원하지 않습니다.

뷰의 집계 파이프라인에는 차단 정렬 및 그룹 작업 자단에 대한 100 MB 메모리 제한이 적용됩니다.

MongoDB 6.0 부터는 실행에 100 메가바이트 이상의 메모리가 필요한 파이프라인 단계에서 기본적으로 임시 파일을 디스크에 씁니다. 이러한 임시 파일은 파이프라인 실행 기간 동안 지속되며 인스턴스의 스토리지 공간에 영향을 줄 수 있습니다. MongoDB의 이전 버전에서는 이 동작을 활성화하려면 개별 findaggregate 명령에 { allowDiskUse: true } 을 전달해야 합니다.

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

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

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

참고

MongoDB Atlas 의 경우, 장기 실행 쿼리가 저장 를 임시 파일로 채우지 않도록 저장 자동 확장 을 구성 하는 것이 좋습니다.

Atlas cluster 가 저장 자동 확장 을 사용하는 경우, 임시 파일로 인해 클러스터 가 다음 저장 계층 으로 확장하다 될 수 있습니다.

  • 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 기본 제공 역할이 있는 사용자에게는 나열된 작업을 실행하는 데 필요한 권한이 있습니다. 필요한 역할을 가진 사용자를 만들거나 기존 사용자에게 역할을 부여합니다.

돌아가기

데이터베이스 & collection