기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Amazon DocumentDB 8.0에서 보기 사용
-
이제 Amazon DocumentDB 8.0에서 뷰를 지원합니다. 지정된 집계 작업을 기반으로 데이터를 제공하는 가상 컬렉션으로 함수를 봅니다. 뷰를 생성할 때 하나 이상의 소스 컬렉션에서 데이터를 변환하는 쿼리를 정의합니다. Amazon DocumentDB 8.0은 추가 스토리지 리소스를 소비하지 않고 뷰에 액세스할 때마다이 쿼리를 실행합니다. 표준 컬렉션과 달리 Amazon DocumentDB 8.0의 뷰는 문서를 디스크에 저장하지 않으므로 변환되거나 필터링된 데이터를 애플리케이션에 제공하는 효율적인 솔루션입니다. Amazon DocumentDB에서 뷰를 생성하려면 createView 명령 또는 db.createView() 헬퍼 메서드를 사용할 수 있습니다.
db.createView("viewName","sourceCollection", [ { $match: { status: "active" } }, { $project: { _id: 1, name: 1, email: 1 } } ] )이렇게 하면 활성 문서만 포함하고 _id, 이름 및 이메일 필드만 프로젝트하는 "sourceCollection"을 기반으로 "viewName"이라는 뷰가 생성됩니다. Amazon DocumentDB의 보기는 읽기 전용입니다. 뷰에 대한 쓰기 작업은 오류를 반환합니다. 대규모 데이터 세트로 최적의 성능을 위해 뷰 파이프라인을 구성하여 효율성을 극대화할 수 있습니다. 복잡한 집계 파이프라인의 경우 $match 단계를 파이프라인의 첫 번째 단계 또는 초기 단계로 사용하여 후속 단계에서 처리해야 하는 문서 수를 줄여 쿼리 성능을 개선하는 것이 좋습니다.
모범 사례
보기에서 따라야 할 몇 가지 모범 사례는 다음과 같습니다.
조기 필터링: 뷰 파이프라인 초기에 $match 단계를 사용하여 처리되는 데이터의 양을 줄입니다.
복잡한 집계 방지: 복잡한 집계로 자주 액세스하는 뷰의 경우 주기적으로 업데이트되는 사전 계산된 결과로 별도의 컬렉션을 생성하는 것이 좋습니다.
인덱스 계획: 뷰 파이프라인, 특히 $match 및 $sort 작업에 사용되는 필드가 소스 컬렉션에서 제대로 인덱싱되었는지 확인합니다.
쿼리 최적화: explain 명령을 사용하여 뷰 쿼리가 실행되는 방식을 이해하고 그에 따라 최적화합니다.
뷰에 대한 대안: Amazon DocumentDB 뷰와 MongoDB 뷰의 기능적 차이를 고려할 때 제한 사항이 발생할 때 뷰 대신 예약된 업데이트가 있는 정기 컬렉션을 사용하는 것이 좋습니다.
집계자 연산자 호환성
Amazon DocumentDB는 호환성을 계속 확장하면서 뷰 정의에서 많은 집계 연산자를 지원합니다. 뷰를 사용할 때는 다음과 같은 지원되는 연산자에 집중하세요.
문서 필터링을 위한 $match
필드 선택 및 변환을 위한 $project
계산된 필드를 추가하기 위한 $addFields
결과 주문에 대한 $sort
페이지 매김에 대한 $limit 및 $skip
$currentOp, $replaceRoot 및 $geoNear와 같은 일부 특수 연산자는 현재 뷰 정의가 아닌 직접 집계 쿼리에서 작동합니다.
인덱스 및 뷰 활용
Amazon DocumentDB 8.0의 뷰는 기본 컬렉션의 인덱스를 사용합니다. 따라서 뷰에서 인덱스를 직접 생성, 삭제 또는 재구축할 수 없습니다. 그러나 소스 컬렉션에서 잘 설계된 인덱스는 보기 쿼리 성능을 크게 개선할 수 있습니다. 다음은 보기에서 쿼리 성능을 최적화하기 위한 몇 가지 단계입니다.
뷰의 파이프라인, 특히 $match 및 $sort 작업에 사용되는 소스 컬렉션 필드에 적절한 인덱스가 있는지 확인합니다.
explain() 메서드를 사용하여 쿼리 실행 계획을 분석하고 인덱스 사용량을 확인합니다. 예:
db.viewName.find({...}).explain()