假设记录表中存有用户每次买东西所花的钱,那么问题来了,如何将用户已购买东西花费金额的
累计和(假设此类统计字段有5个),做降序排列?
PHPz2017-04-18 09:38:48
필터링해야 하는 해당 필드에 대해 mongodb의 인덱스를 활성화합니다(mongodb는 하나의 컬렉션에서 여러 인덱스를 지원합니다). 즉, 해시테이블을 사용하므로 훨씬 빠르며 정렬을 위해 mongodb 자체 API를 사용할 수 있습니다. , 저는 100W
의 상황을 접해본 적이 없는데, 1~10W
의 크기가 500ms
안에 들어가는 것 같다는 기억이 나네요.
또한 계산해야 하는 데이터가 매우 중요하고 호출 빈도가 높은 경우 별도의 컬렉션을 만들고 정기적으로 큐 캐시를 호출하며 시간을 위해 공간을 거래하는 것이 좋습니다. 이 컬렉션은 다음을 가질 수 있습니다. 필드, 사용자 ID, 최근 3시간 동안의 총 구매 건수, 지난 12시간, 지난 24시간, 지난 1일, 지난 달, 과거 총 구매 량 등이 표시됩니다. 공간이 낭비되고 실시간으로 데이터를 반영할 수 없다는 장점이 있지만, 사용자의 쇼핑량을 쿼리하고 싶다면 밀리초 단위로 간단히 쿼리할 수 있다는 이점이 있습니다.
위 내용은 한 가족의 의견이며 참고용입니다
ringa_lee2017-04-18 09:38:48
Mongodb는 여러 컬렉션의 데이터를 처리하는 데 능숙하지 않으므로 데이터 자체를 설계할 때 모두 함께 집계하는 것이 가장 좋습니다.
단일 컬렉션의 쿼리에 대한 인덱스를 생성합니다. 쿼리 사용 순서는 기본 쿼리 -> 집계 -> 맵리듀스입니다. 쿼리 방법은 왼쪽에서 오른쪽으로 점점 더 유연해지며 쿼리 효율성은 다음과 같습니다. 점점 낮아지고 있습니다.
여러 컬렉션 쿼리는 직접 구현해야 하며, 각 컬렉션에서 별도로 쿼리하고 여러 쿼리 결과를 처리해야 합니다.
특히 적시성 요구 사항이 높은 경우 중간 캐시 레이어를 사용하고 업데이트 전략을 설계하세요.