2014-06-26 21 views
5

ho lavorato su DC e crossfilter js e momento ho un grande insieme di dati con 550.000 righe e dimensione 60MB CSV e sono di fronte a un sacco di problemi con esso come browser si blocca eccDC e crossfilter con grandi serie di dati

Così , Sto cercando di capire come dc e crossfilter si occupano di dataset di grandi dimensioni. http://dc-js.github.io/dc.js/

L'esempio sul loro sito principale è molto fluido e dopo aver visto timelines-> memoria (in consolle) va ad un massimo di 34 MB e lentamente riduce con il tempo

Il mio progetto sta prendendo la memoria in la gamma di 300-500mb per la selezione a discesa, quando si carica un file jSON e rende l'intera visualizzazione

Quindi, 2 domande

  • Qual è il backend per l'esempio sito dc? È possibile trovare l'esatto file di back-end?
  • Come posso ridurre il sovraccarico di dati sulla mia RAM dalla mia applicazione, che è in esecuzione molto lentamente e alla fine si blocca?
+0

Puoi condividere un esempio? Stai parlando di una quantità abbastanza grande di dati, ma non è necessariamente al di fuori dell'ambito di ciò che è gestibile. –

risposta

2

Ciao, puoi provare a eseguire il caricamento dei dati e filtrarli sul server. Ho affrontato un problema simile quando la dimensione del mio set di dati era troppo grande per essere gestita dal browser. Ho pubblicato una domanda qualche settimana fa per implementare lo stesso. Using dc.js on the clientside with crossfilter on the server

Ecco una panoramica su come procedere.

Sul lato client, si desidera creare dimensioni false e gruppi di falsi con funzionalità di base che si aspetta dc.js (https://github.com/dc-js/dc.js/wiki/FAQ#filter-the-data-before-its-charted). Puoi creare i tuoi grafici dc.js sul lato client e collegare le dimensioni e i gruppi falsi ovunque sia necessario.

Ora sul lato server è attivo il crossfilter (https://www.npmjs.org/package/crossfilter). Qui crei le tue dimensioni e gruppi reali.

Le simulazioni hanno una funzione .filter() che sostanzialmente invia una richiesta Ajax al server per eseguire il filtro effettivo. Le informazioni di filtro potrebbero essere codificate sotto forma di stringa di query. Avresti anche bisogno di una funzione .all() sul tuo gruppo falso per restituire i risultati del filtro.

+1

Grazie per questa idea, puoi condividere un esempio su come implementare questo? L'ho letto per un po 'ma non ho potuto capire completamente. –

+0

Puoi per favore condividere un esempio? –

+1

Sì, per favore dammi un giorno. –