2012-05-10 28 views
19

Tôi thích trải nghiệm người dùng về hình khối và muốn sử dụng nó trên đầu trang của chương trình phụ trợ mà chúng tôi có.Sử dụng các nguồn dữ liệu khác cho cubism.js

Tôi đã đọc tài liệu API và một số mã, hầu hết điều này dường như bị trích xuất. Làm thế nào tôi có thể bắt đầu sử dụng các nguồn dữ liệu khác chính xác?

Tôi có một kho dữ liệu khoảng 6k máy riêng lẻ với độ chính xác 5 phút trên khoảng 100 số liệu thống kê.

Tôi muốn truy vấn một số ứng dụng web có số nhận dạng cụ thể cho máy đó và sau đó hiển thị một trang tổng quan tương tự như hình khối thông qua truy vấn kho lưu trữ dữ liệu mongo cụ thể.

Viết webapp hoặc truy vấn tới mongo không phải là vấn đề.

Vấn đề là phù hợp hơn với thực tế rằng hình khối dường như yêu cầu truy vấn bất kỳ lưu trữ dữ liệu nào bạn sử dụng cho từng điểm dữ liệu riêng lẻ (nói rằng bạn có 100 số liệu thống kê trên một cửa sổ trong một tuần ... đắt tiền).

Có cách nào khác để tôi có thể tận dụng công cụ này để xem dữ liệu được tải bằng cách sử dụng một cái gì đó tương tự như mã bên dưới không?

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

Trả lời

19

Cubism chăm sóc khởi và cập nhật cho bạn: yêu cầu ban đầu là cửa sổ có thể nhìn thấy đầy đủ (bắt đầu dừng lại, thường 1.440 điểm dữ liệu), trong khi yêu cầu tiếp theo là chỉ cho một vài số liệu gần đây nhất (7 dữ liệu điểm).

Hãy xem context.metric để biết cách triển khai nguồn dữ liệu mới. Việc thực hiện đơn giản nhất có thể là như thế này:

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); 
    }); 
}); 

Bạn sẽ mở rộng này để thay đổi "/ data" URL cho phù hợp, đi qua trong đầu, dừng lại và lần bước, và bất cứ điều gì khác mà bạn muốn sử dụng để xác định một số liệu. Ví dụ: cả Cube và Graphite đều sử dụng biểu thức chỉ số làm tham số truy vấn bổ sung.

+0

chỉ cần đảm bảo, điều này là dành cho mỗi chỉ số mới. Vì vậy, mỗi khách hàng kết nối với điều này sẽ được thực hiện x truy vấn cơ sở dữ liệu của bạn cho x số liệu. Không có cách nào dễ dàng, bằng cách sử dụng giảm này bằng cách sử dụng cubism? ví dụ: gọi biểu đồ và sau đó có chức năng truy cập? –

+1

Chắc chắn, bạn có thể viết triển khai số liệu thay thế để tìm nạp nhiều chỉ số trong một loạt, nhưng thường thì nó không đáng giá. Trang tổng quan của chúng tôi thường tạo ra hàng trăm yêu cầu đồng thời cho Graphite (được trình duyệt một phần bởi vì trình duyệt sẽ không thực hiện nhiều hơn 4 hoặc 8 yêu cầu đồng thời trên mỗi máy chủ) và không có vấn đề về hiệu suất. Để hợp nhất các yêu cầu đồng thời, bạn sẽ đặt nhiều yêu cầu vào hàng đợi và sử dụng hết thời gian chờ để thực hiện yêu cầu kết hợp. – mbostock

+0

Chỉ để chạy nó bởi người khác có kinh nghiệm trong lĩnh vực này, hãy cho tôi biết nếu bạn nghĩ rằng điều này là giá trị nó: Tôi có khoảng 500GB dữ liệu về n máy. Db được lập chỉ mục theo dấu thời gian, id máy và kết hợp cả hai. Để thực hiện một truy vấn (đây là MongoDB), nó mất khoảng 12 giây để có danh sách 1440 kết quả được sắp xếp cho 1 máy. Vì vậy x * 12 giây = thời gian tải trong đó x là số lượng số liệu. –

Các vấn đề liên quan