2013-06-23 1 views
0

내 프로젝트에는 웹 사이트에 핑 요청을 보내고 응답 시간을 측정하고 매분마다 저장하는 서버가 있습니다.응답 시간 통계 웹 사이트에 대한 최상의 Mongodb 데이터 모델

저는 Mongodb을 사용할 것이고 저는 최고의 데이터 모델을 찾고 있습니다. 데이터 모델이 더 좋습니까?

1- 각 웹 사이트 및 각 요청을 문서로 수집합니다. (1000 컬렉션)

또는

2-

모든 웹 사이트에 대한 집합 및 문서와 각 사이트 및 하위 문서와 같은 각 요청을 갖는다.

답변

1

두 솔루션은 MongoDB를 한 특정 제한에 직면한다. 첫 번째로, 각각의 웹 사이트에 콜렉션이 있다고 말했을 때, 콜렉션의 수는 제한되어 있고 각각은 네임 스페이스 엔트리를 가지며 네임 스페이스 크기는 16MB이므로 16000 개 정도의 엔트리가 들어갈 수 있습니다. (네임 스페이스의 크기 증가 할 수있다) 당신이 1000 콜렉션이 예상되고 처리 될 수 있다고 말하면서 제 생각에는 이것은 훨씬 더 나은 해결책입니다. (인덱스는 고유 한 네임 스페이스 항목을 가지며 16.000에 계산됩니다.) 이 경우 임베디드 배열보다 훨씬 쉽게 처리 할 수있는 문서로 항목을 저장할 수 있습니다.

임베디드 어레이 제한 사항. 두 번째 경우의 이러한 제한은 어렵습니다. 문서 크기가 16MB보다 커질 수 없습니다. 이 하나는 BSON 크기이며 문서 내에 상당히 많은 것을 저장할 수 있지만 크기가 다른 거대한 문서를 사용하고 시간이 지나면 크기가 변경되면 저장소가 조각화됩니다. 그 이유는 당신이 이것을 webinar으로 보았을 때 분명해질 것입니다. 기본적으로 이것은 스토리지 사용 측면에서 할 수있는 가치가 있습니다.

추가 분석을 위해 집계 프레임 워크를 사용하려는 경우 내장 배열 개념을 사용하는 것이 더 어려울 것입니다.

+0

감사합니다. 첫 번째 솔루션 (각 웹 사이트 모음)을 사용하겠습니다. 컬렉션이 제한에 도달하면 다른 데이터베이스를 가질 수 있습니다. 내 사이트 수가 증가하면 (1 년 또는 2 년이 걸릴 것이라고 생각합니다) 카산드라와 하둡을 사용하는 것을 고려합니다. –

1

어느 쪽이든 할 수는 있지만 어느 경우이든 데이터베이스의 주기적 성장을 고려해야한다고 생각합니다. 데이터 파일을 확장하는 동안 데이터베이스가 느리게/응답하지 않습니다. (이 설정은 백그라운드에서 발생하므로 잊을 수 있습니다.)

이와 관련된 질문

- MongoDB performance with growing data structure는 특히 "패딩 요인"첫 번째 방법으로

, 당신은 컬렉션의 최대 수에 의해 부과 저장할 수있는 웹 사이트의 수에 상한이 있습니다. http://docs.mongodb.org/manual/reference/limits/을 기반으로 계산할 수 있습니다.

두 번째 접근 방식에서는 #of collection이 중요하지 않지만 데이터베이스의 증가는 고려해야 할 사항입니다.

하나의 방법은 빈 데이터로 초기화하는 것이므로 확장하기 전에 오래 걸립니다.

예를 들어.

{ 
    website: name, 
    responses: [{ 
    time: Jan 1, 2013, 0:1, ... 
    }, 
    { 
    time: Jan 1, 2013, 0:2, ... 
    } 
    ... and so for each minute/interval you expect. 

] 
} 

단점은 초기화하는 데 시간이 오래 걸릴 수 있지만 나중에 걱정해야한다는 것입니다.

어느 쪽이든, 그것은 당신이 지불해야 할 비용입니다. 유일한 질문은 언제입니까? 지금? 또는 나중에?

특히, 자신의 쓰임새를 읽는 고려 - http://docs.mongodb.org/manual/use-cases/hierarchical-aggregation/

+0

문서에서 최대 # 개 모음을 찾을 수 없습니다. –

+0

해결책 2를 선택하겠습니다. –

+1

길이 (length), 숫자 (number), nssize (nssize) 등을 기준으로 최대 콜렉션을 계산해야합니다. 네임 스페이스 섹션을 사용하십시오. 1000 년이면 충분하지만 더 많이 성장할 것으로 예상된다면 어떻게해야하는지 알 필요가 있습니다. – Nasir