Utilizzando dc.js sul clientide con crossfilter sul server

Sto lavorando alla creazione di visualizzazioni interattive per set di dati di grandi dimensioni. I set di dati non possono essere caricati nel browser a causa delle loro dimensioni. Stiamo utilizzando crossfilter su un server nodo per caricare e filtrare il lato server dei dati. Mi stavo chiedendo se potevo in qualche modo accoppiare i filtri crossfilter lato server con i grafici dc.js.

Sto usando d3.js in questo momento per creare grafici ma voglio usare i vari grafici che sono già presenti in dc.js. Fondamentalmente stiamo filtrando i dati sul lato server e ascoltando le modifiche sul grafico sul lato client ed eseguendo il filtro appropriato sul server e comunicando tramite AJAX.

Se qualcuno potesse suggerire un modo per incorporare un meccanismo di comunicazione AJAX simile tra il client dc.js e il server crossfilter, sarebbe molto utile.

L’accoppiamento tra dc.js e crossfilter non è molto stretto e ciò dovrebbe essere ansible.

C’è stata una recente conversazione sullo swapping di crossfilter, che è quasi lo stesso problema, sulla mailing list dc.js:

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

Le funzioni principali che dovrai eseguire marshall sono group.all e dimension.filter . Scusate, non so di nessuno che acceda al filtro incrociato da remoto, ma conosco abbastanza gente che fa quasi questo, che non ho dubbi che possa funzionare.

Ecco un problema correlato: https://github.com/dc-js/dc.js/issues/602

Curioso di ascoltare un po ‘di più sulla tua esperienza qui. I miei risultati sono stati che la latenza client-server è uno dei problemi principali a cui si rivolge Crossfilter. Interessato a sapere se trovi che Crossfilter sul server ti compra effettivamente qualcosa e se l’interattività è sufficiente per essere utile con un ragionevole ritardo di latenza. Sembra che potrebbe essere più veloce utilizzare un database.

Detto questo, in risposta alla tua domanda, nella mia esperienza dc.js non richiede dimensioni e gruppi di Crossfilter. Richiede solo oggetti che funzionano come dimensioni e gruppi di Crossfilter. Quindi se fornite dc.js con oggetti che hanno metodi .top () ma quei metodi .top () colpiscono effettivamente il server usando AJAX e restituiscono una struttura dati che assomiglia a ciò che restituisce Crossfilter, dovrebbe funzionare. L’ho fatto solo con grafici molto semplici, quindi potresti dover implementare altri metodi se stai utilizzando funzionalità più avanzate. Credo che vorrai essere sicuro di fare bloccare il metodo fino a quando non restituiranno i dati.