2014-12-24 5 views
0

우리는 잠재적으로 매우 커질 수있는 콜렉션을 가지고 있습니다.이 콜렉션은 Bill 관련 데이터를 저장하는 데 사용됩니다. 따라서 이것은 종종보고/분석 목적에 사용됩니다.큰 몽고 컬렉션을 처리하는 방법

수 있습니까 분할) 날이 대규모 수집

일을 처리하는 가장 좋은 approch을 알려 이전 데이터를 (예를 들어 12 개월 기간)? 그러나 여기에서 오래된 데이터를 얻기 위해 필요한 분석 reports.I을 보관하십시오 지난 2 시간 동안 판매 비교를 표시하기 위해이 이전 데이터를 쿼리하려고합니다.

2) 이전 데이터 (12 개월)로 새 컬렉션을 가질 수 있습니까? 따라서 12 개월마다 새 컬렉션을 생성해야합니다. 보고서 생성을 위해이 모든 문서에 액세스하여 쿼리합니다. 그래서 이것은 성능 문제를 일으킬 것입니까?

3) 샤딩으로 갈 수 있습니까?

답변

1

많은 변수가 있습니다. 가장 중요한 것은 사용하는 하드웨어, 데이터 구조 및 쿼리 방법입니다. 분산 네트워크는 단일 시스템보다 데이터를 빠르게 처리 할 수 ​​있어야하지만, 솔루션에 들어가기 전에 예상치 못한 수준의 모의 데이터를 생성 한 다음 다양한 접근 방식을 테스트하는 것이 좋습니다. 진지하게. 많은 양의 데이터를 만들고 문제를 해결하려고 노력하십시오. 재미 있어요! 머지 않아 웹 사이트가 말할 수있는 것보다 문제의 요구 사항에 대해 더 많이 알게 될 것입니다. 직접 응답으로서

:

  1. 아마도, 데이터를 보관하기 전에, 해당 기록 요약 생성 (또는 갱신) 할 수있다. 이러한 요약/단순화는 표현 된 모든 아카이브 된 데이터를 다시로드하지 않고 판매 비교에 사용할 수 있습니다.

  2. 이것은 현명한 것으로 나를 공격합니다. 판매 데이터를 나누면 액세스해야하는 데이터의 양을보다 효과적으로 제어 할 수 있습니다. 어쨌든 사용자는 항상 3 년의 데이터를보고 싶지 않을 것이며, 지난 주만 보길 원할 것입니다.

  3. 실제로 필요할 때 샤딩으로 이동하십시오.

    sharded 클러스터로 변환하는 것이 쉽고 원활하기 때문에 데이터 집합이 작을 때 sharding을 구성 할 때 이점이 거의 없습니다.

당신은 당신의 메모리 맵은 서버의 RAM 한계에 도달 할 때이 시간 알 수 있습니다. MongoDB는 메모리에 보관하기에는 너무 큰 데이터베이스에 대한 읽기 및 쓰기를 지원하지만, 이미 알고있는 것은 SLOW입니다.

+0

귀중한 의견을 보내 주셔서 감사합니다. 1 번에서 언급했듯이 "적절한 통계 요약을 생성 할 수 있습니다.",이 점에 대해 자세히 설명해 주시겠습니까? 새해 데이터와 비교하기 위해 이전 데이터가 필요한 경우 요약을 작성하는 방법은 무엇입니까? 요약 할 수 있습니까? – Roots

+1

그건 당신의 데이터와 당신이 만들고자하는 비교의 종류에 달려 있습니다. 예를 들어, 12 개월을 초과하는 항목은 주 단위로 단순화 할 수 있습니다. 또는 사용자가 조회하는 일반적인 통계는 일일 판매 합계입니다. 모든 판매 기록에서 합계를 합산하는 대신 일일 합계를 미리 계산하여 보관할 수 있습니다. – Miles

+0

고맙습니다. 사전 계산 요약을 저장할 수있는 곳은 어디입니까? 다른 컬렉션에? 이걸 제발 깨달으세요. – Roots

관련 문제