2012-05-10 2 views
19

나는 cubism의 사용자 경험을 좋아하고 우리가 가지고있는 백엔드 위에 이것을 사용하고 싶습니다.cubism.js에 대한 다른 데이터 소스 사용

나는 API 문서와 일부 코드를 읽었으며, 대부분이 추출 된 것으로 보인다. 다른 데이터 소스를 정확히 사용하려면 어떻게해야합니까?

약 100,000 개 정도의 통계에 5 분 정밀도의 약 6k 개별 시스템 데이터 저장소가 있습니다.

특정 웹 응용 프로그램에 해당 시스템에 대한 특정 식별자를 쿼리 한 다음 특정 몽고 데이터 저장소를 쿼리하여 입체파와 비슷한 대시 보드를 렌더링하고 싶습니다.

mongo에 webapp 또는 쿼리를 쓰는 것이 중요하지 않습니다.

큐비즘은 각 개별 데이터 포인트에 대해 사용하는 데이터 저장소 (일주일에 100 개 ... 비싸다고 가정)를 쿼리해야하는 것처럼 보입니다.

이 도구를 사용하여 아래 코드와 비슷한 것을 사용하여로드 된 데이터를 볼 수있는 또 다른 방법이 있습니까?

var data = []; 
d3.json("/initial", function(json) { data.concat(json); }); 
d3.json("/update", function(json) { data.push(json); }); 

답변

19

입체파 당신을 위해 초기화 및 업데이트를 돌봐 : 초기 요청이 전체 눈에 보이는 창이 후속 요청은 단지 몇 가장 최근의 통계에 대한 반면, (일반적으로 1,440 데이터 포인트를 중지 시작)입니다 (7 데이터 전철기).

새 데이터 소스를 구현하는 방법은 context.metric을 참조하십시오.

var foo = context.metric(function(start, stop, step, callback) { 
    d3.json("/data", function(data) { 
    if (!data) return callback(new Error("unable to load data")); 
    callback(null, data); 
    }); 
}); 

당신이, 시작을 전달, 적절하게 "/ 데이터"URL을 변경 단계 시간을 중지하고 확장 할 것이며, 어떤 다른 당신은을 식별하는 데 사용할 : 가장 간단한 구현은 다음과 같다 미터법. 예를 들어 Cube와 Graphite는 메트릭 표현식을 추가 쿼리 매개 변수로 사용합니다.

+0

이것은 각 새로운 측정 항목에 대한 내용입니다. 그래서 이것에 연결된 각 클라이언트는 x 메트릭에 대해 데이터베이스에 대한 x 쿼리를 작성합니다. 큐비즘을 사용하여 이것을 줄이는 것은 쉬운 방법이 아닙니다. 예 : 차트를 호출 한 다음 접근 자 기능이 있습니까? –

+1

물론, 배치에서 여러 메트릭을 가져 오는 대체 메트릭 구현을 작성할 수는 있지만 일반적으로 그럴 가치는 없습니다. 우리의 대시 보드는 종종 Graphite에 수백 개의 동시 요청을합니다 (호스트 당 4 개 또는 8 개의 동시 요청을 처리하지 않기 때문에 부분적으로 브라우저에 의해 직렬화됩니다). 성능 문제는 없습니다. 동시 요청을 병합하려면 여러 요청을 대기열에 넣고 시간 제한을 사용하여 결합 된 요청을 만드십시오. – mbostock

+0

이 영역에서 경험이있는 다른 사람이이 프로그램을 실행하기에 가치가 있다고 생각한다면 말해주십시오 : n 대의 컴퓨터에 대해 약 500GB의 데이터가 있습니다. db는 타임 스탬프, 컴퓨터 ID 및이 두 가지 조합으로 인덱싱됩니다. 하나의 쿼리 (MongoDB)를 수행하기 위해서는 1 대의 기계에 대해 1440 개의 결과 목록을 정렬하는 데 약 12 ​​초가 걸립니다. 따라서 x * 12 초 =로드 시간. 여기서 x는 메트릭 수입니다. –

관련 문제