Uso de dc.js en el lado del cliente con filtro cruzado en el servidor

Estoy trabajando en la creación de visualizaciones interactivas para grandes conjuntos de datos. Los conjuntos de datos no se pueden cargar en el navegador debido a su tamaño. Estamos utilizando el filtro cruzado en un servidor de nodo para cargar y filtrar el lado del servidor de datos. Me preguntaba si de alguna manera podría acoplar los filtros de filtro cruzado del lado del servidor con los cuadros de dc.js.

Estoy usando d3.js ahora mismo para crear gráficos, pero quiero usar los diversos gráficos que ya están allí en dc.js. Básicamente, filtramos los datos en el servidor y luego escuchamos los cambios en el gráfico en el lado del cliente y realizamos el filtrado adecuado en el servidor y nos comunicamos a través de AJAX.

Si alguien pudiera sugerir una manera de incorporar un mecanismo de comunicación AJAX similar entre el cliente dc.js y el servidor de filtro cruzado, sería muy útil.

El acoplamiento entre dc.js y el filtro cruzado no es muy ajustado, y esto debería ser posible.

Hubo una conversación reciente sobre el intercambio de filtros cruzados, que es casi el mismo problema, en la lista de correo de dc.js:

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

Las funciones principales que deberá realizar son group.all y dimension.filter . Lo siento, no conozco a nadie que acceda al filtro cruzado de forma remota, pero conozco a suficiente gente haciendo casi esto, que no tengo dudas de que puede funcionar.

Aquí hay un problema relacionado: https://github.com/dc-js/dc.js/issues/602

Tengo curiosidad por escuchar un poco más sobre su experiencia aquí. Mis conclusiones han sido que la latencia cliente-servidor es uno de los principales problemas que aborda Crossfilter. Le interesa saber si Crossfilter en el servidor realmente le compra algo y si la interactividad es lo suficientemente buena como para ser útil con un retraso de latencia razonable. Parece que podría ser más rápido utilizar una base de datos.

Dicho esto, en respuesta a su pregunta, en mi experiencia, dc.js no requiere dimensiones y grupos de filtro cruzado. Solo requiere objetos que funcionen como dimensiones y grupos del filtro cruzado. Entonces, si proporciona a dc.js objetos que tienen métodos .top () pero esos métodos .top () llegan al servidor con AJAX y devuelven una estructura de datos que se parece a lo que devuelve Crossfilter, debería funcionar. Solo lo he hecho con gráficos muy básicos, por lo que es posible que tenga que implementar otros métodos si está utilizando características más avanzadas. Creo que querrá asegurarse de hacer que las llamadas al método se bloqueen hasta que devuelvan los datos.