2012-05-10 2 views
19

私はキュービズムのユーザーエクスペリエンスが好きで、私たちが持っているバックエンドの上でこれを使いたいと思います。cubism.jsの他のデータソースの使用

私はAPIのドキュメントといくつかのコードを読んでいますが、そのほとんどは抽出されているようです。他のデータソースを正確に使用するにはどうすればいいですか?

私は約5万分の精度で約6kの個別のマシンのデータストアを約100程度の統計に持っています。

私はそのマシンの特定の識別子でいくつかのWebアプリケーションを照会し、特定のmongoデータストアを照会することによってキュービズムに似たダッシュボードをレンダリングしたいと思います。

mongoにWebアプリケーションまたはクエリを書き込むことは問題ではありません。

キュービズムでは、個々のデータポイントごとに使用するデータストアを問合せる必要があるように見えます(高価な)。

このツールを使用して、以下のコードに類似した方法でロードされたデータを見る方法がありますか?

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

答えて

19

キュービズムはあなたのために、初期化とアップデートの面倒を見る:最初の要求は、完全な可視ウィンドウである(1440個のデータポイント通常、停止まで)、後続の要求はわずか数最新のメトリックのためにしている間(7データポイント)。

新しいデータソースの実装方法については、context.metricをご覧ください。あなたが停止し、スタートを渡し、適切なステップ回数として「/データ」URLを変更するには、これを拡張し、それ以外のものは何でも識別するために使用したい

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

:最も簡単な実装では、このようなものですメトリック。たとえば、CubeとGraphiteの両方で追加のクエリパラメータとしてメトリック式を使用します。

+0

これは新しいメトリックごとに作成されています。したがって、これに接続された各クライアントは、xメトリックのデータベースに対してxクエリを実行します。簡単な方法はありません。キュービズムを使ってこれを減らしますか?たとえば、チャートを呼び出してアクセサー機能を使用していますか? –

+1

もちろん、バッチで複数のメトリックをフェッチする代替メトリック実装を作成することもできますが、通常はそれが価値がありません。私たちのダッシュボードは、多くの場合、Graphite(ブラウザによって部分的にシリアル化されます。これは、ホストごとに4〜8回以上の同時リクエストは発生しません)、パフォーマンス上の問題はありません。同時リクエストをマージするには、複数のリクエストをキューに入れ、タイムアウトを使用して結合リクエストを作成します。 – mbostock

+0

この分野で経験を積んだ誰かがそれを実行するには、これが価値があると思うかどうか教えてください。私はn台のマシンについて約500GBのデータを持っています。 dbは、タイムスタンプ、マシンID、およびその2つの組み合わせによって索引付けされます。 1つのクエリ(これはMongoDB)を実行するために、1台のマシンに対して1440の結果のソートされたリストを得るのに約12秒かかります。したがって、x * 12秒=ロード時間。ここで、xはメトリックの数です。 –

関連する問題