복붙노트

[MONGODB] {발견} 속도 대 MongoDB를 {집계 $ 일치}

MONGODB

{발견} 속도 대 MongoDB를 {집계 $ 일치}

나는 수백만 개의 행과 MongoDB를 수집하고 난 내 쿼리를 최적화하기 위해 노력하고있어. 나는 현재 내가 원하는 데이터 및 그룹을 검색하는 통합 프레임 워크를 사용하고 있습니다. $ 경기> $ 그룹> $ 그룹> $ 프로젝트 : 내 전형적인 집계 쿼리는 같은입니다

그러나, 나는 마지막 부분이 몇 밀리 초 걸릴 것을, 시작은 가장 느린입니다났습니다.

난 단지 $ 일치 필터 쿼리를 수행하고, 다음 collection.find과 같은 쿼리를 수행했습니다. 찾기 쿼리가 0 또는 1ms의 소요하는 동안 집계 쿼리 ~ 평균 80ms가 소요됩니다.

나는이 문제가없는 것 같다, 그래서 나는 거의 각 필드에 인덱스를 가지고있다. 무엇에 어떤 생각이 잘못 될 수 있을까? 아니면 집계 프레임 워크의 단지 "정상"단점은 무엇입니까?

그러나 나는 내가 요청 후 처리를 많이 수행하는 것 대신 집계 쿼리의 쿼리를 찾아 사용할 수 있습니다 내가 오히려 통합 프레임 워크를 유지하는 것, 그래서이 과정은 $ 그룹 등을 신속하게 수행 할 수 있습니다.

감사,

편집하다 :

여기 내 기준은 다음과 같습니다

{
    "action" : "click",
    "timestamp" : {
            "$gt" : ISODate("2015-01-01T00:00:00Z"),
            "$lt" : ISODate("2015-02-011T00:00:00Z")
    },
    "itemId" : "5"
}

해결법

  1. ==============================

    1.집계 프레임 워크의 주요 목적은 항목의 큰 수의 쿼리를 완화하고 당신에게 홀드 값이 결과의 낮은 번호를 생성하는 것입니다.

    집계 프레임 워크의 주요 목적은 항목의 큰 수의 쿼리를 완화하고 당신에게 홀드 값이 결과의 낮은 번호를 생성하는 것입니다.

    당신이 말한 것처럼, 당신은 또한 여러 찾기 쿼리를 사용하지만 찾기 쿼리에 새 필드를 만들 수 있음을 기억 할 수 있습니다. 한편, $ 조별 리그는 새로운 필드를 정의 할 수 있습니다.

    당신이 통합 프레임 워크의 기능을 달성하고 싶은 경우에, 당신은 거의 확실하게, 초기 발견 (또는 체인 여러 사람)를 실행 끌어 해당 정보를 추가 프로그래밍 언어를 조작해야합니다.

    집계 파이프 라인은 더 오래 걸릴 것 같다 수도 있지만, 적어도 당신은 당신 만의 계정에 하나의 시스템의 성능을 가지고 가야 알 - MongoDB의 엔진.

    그것은 찾기 쿼리에서 반환 된 데이터를 조작에 올 때, 당신이 가장 가능성이 더 때문에 선택의 프로그래밍 언어의 복잡한에 따라 복잡성이 증가, 프로그래밍 언어로 데이터를 조작해야 할 것이다, 반면.

  2. ==============================

    2.당신의 찾기 쿼리) (설명을 사용하여 시도 적이 있습니까? 그것은 당신에게 많은 시간의 발견 () 쿼리 정확히 걸릴 것입니다 방법에 대한 좋은 아이디어를 줄 것이다. 당신은 $와 $ 일치 설명 및 및 다른 매개 변수를 액세스하는 인덱스에 어떤 차이가 있는지 여부를 확인하기위한 동일한 기능을 수행 할 수 있습니다.

    당신의 찾기 쿼리) (설명을 사용하여 시도 적이 있습니까? 그것은 당신에게 많은 시간의 발견 () 쿼리 정확히 걸릴 것입니다 방법에 대한 좋은 아이디어를 줄 것이다. 당신은 $와 $ 일치 설명 및 및 다른 매개 변수를 액세스하는 인덱스에 어떤 차이가 있는지 여부를 확인하기위한 동일한 기능을 수행 할 수 있습니다.

    이 통합 프레임 워크의 $ 일치하는 단계에 의해 반환 된 모든 레코드를 처리 할 수있다, 그래서 또한 통합 프레임 워크의 $ 그룹 부분은 색인을 사용하지 않습니다. 그래서 더 나은 방법을 참조하십시오 쿼리의 작업을 이해하는 결과는 반환 및이 메모리에 맞는지 MongoDB에 의해 처리되도록 설정.

  3. from https://stackoverflow.com/questions/28364319/mongodb-aggregation-match-vs-find-speed by cc-by-sa and MIT license