在客户端使用dc.js和服务器上的crossfilter

时间:2014-06-12 12:55:44

标签: ajax node.js d3.js dc.js crossfilter

我正在为大型数据集创建交互式可视化。由于数据集的大小,无法在浏览器中加载数据集。我们在节点服务器上使用crossfilter来加载和过滤数据服务器端。我想知道我是否能以某种方式将服务器端交叉滤波器滤波器与dc.js图表​​结合起来。

我现在正在使用d3.js创建图表但想要使用dc.js中已有的各种图表。我们基本上是在服务器端过滤数据,然后在客户端上监听图表上的更改,并在服务器上执行适当的过滤并通过AJAX进行通信。

如果有人可以建议在dc.js客户端和crossfilter服务器之间采用类似的AJAX通信机制,那将非常有用。

2 个答案:

答案 0 :(得分:5)

很想知道你在这里的经历。我的发现是客户端 - 服务器延迟是Crossfilter解决的主要问题之一。感兴趣的是,如果您发现服务器上的Crossfilter实际上为您购买了任何东西,并且交互性足够好,并且在合理的延迟时间内有用。似乎使用数据库可能会更快。

那就是说,在回答你的问题时,根据我的经验,dc.js并不需要Crossfilter维度和组。它只需要工作的对象,如Crossfilter维度和组。因此,如果你为dc.js提供了具有.top()方法的对象,但那些.top()方法实际上是使用AJAX命中服务器并返回一个看起来像Crossfilter返回的数据结构,它应该可以工作。我只使用非常基本的图表来完成此操作,因此如果您使用更高级的功能,则可能必须实现其他方法。我相信你一定要确保方法调用阻塞,直到他们返回数据。

答案 1 :(得分:5)

dc.js和crossfilter之间的耦合不是很紧,这应该是可能的。

最近有一篇关于在dc.js邮件列表上交换crossfilter的讨论,这几乎是同样的问题:

https://groups.google.com/forum/#!topic/dc-js-user-group/fkRoFHuqg4k

您需要编组的主要功能是group.alldimension.filter。对不起,我不知道有人远程访问crossfilter,但我知道有很多人几乎这个,我毫不怀疑它可以工作。

以下是相关问题:https://github.com/dc-js/dc.js/issues/602