使用cubism.js的其他数据源

Mil*_*lin 19 json d3.js cubism.js

我喜欢立体主义的用户体验,并希望在我们拥有的后端之上使用它.

我已经阅读了API文档和一些代码,其中大部分内容似乎已被删除.我怎样才能开始准确使用其他数据源?

我有一个大约6k个单独机器的数据存储,精度为5分钟,大约100个左右的统计数据.

我想查询一些具有该机器的特定标识符的Web应用程序,然后通过查询特定的mongo数据存储来呈现类似于立体主义的仪表板.

将webapp或查询写入mongo不是问题.

这个问题更符合这样一个事实:立体主义似乎需要查询你用于每个单独数据点的任何数据存储(假设你在一周的窗口中有100个统计数据......昂贵).

有没有其他方法可以利用此工具查看使用类似下面的代码加载的数据?

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

mbo*_*ock 19

Cubism负责初始化和更新:初始请求是完整的可见窗口(开始停止,通常是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);
  });
});
Run Code Online (Sandbox Code Playgroud)

您可以根据需要对此进行扩展以更改"/ data"URL,传递开始,停止和步骤时间以及您要用于标识度量标准的任何其他内容.例如,Cube和Graphite都使用度量表达式作为附加查询参数.

  • 如果您正确设置索引,我很惊讶它需要12秒才能返回1,440行.如果您要查找特定计算机的值,请确保正确排序索引:计算机ID,然后是时间戳.这样,DB可以使用索引的第二部分(时间)进行范围查询.此外,如果您每行存储大量数据,请告诉Mongo您要返回哪些字段,或将较小的对象存储在单独的集合中. (2认同)