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 버전은 충돌합니다.

배포서버 에서 인증 을 시행하는 경우:

  • 뷰를 만들려면 뷰가 생성된 데이터베이스 에 대한 권한 이 있어야 합니다.createCollection 또한 생성하려는 뷰의 네임스페이스 에 대한 권한 이 있는 find 경우 find 다음 리소스에 대한 권한 도 있어야 합니다.

    • 새 뷰가 생성되는 소스 컬렉션 또는 뷰입니다.

    • 뷰 파이프라인 에서참조되는 모든 컬렉션 또는 뷰입니다.

  • 뷰를 쿼리 하려면 뷰 네임스페이스 에 대한 find 권한 이 있어야 합니다. 소스 컬렉션 또는 뷰 파이프라인 에서 참조된 네임스페이스에 대한 find 권한 은 필요하지 않습니다.

readWrite 데이터베이스 내장 역할 이 있는 사용자에게는 나열된 작업을 실행 하는 데 필요한 권한이 있습니다. 필요한 권한을 부여하려면 다음 중 하나를 수행합니다.

돌아가기

데이터베이스 & collection