Best practice per la rotazione di set di dati di grandi dimensioni?

0

[modifica] Risulta che ci sono 1,5 milioni di record ... Il database SQL impiega circa 17-20 secondi per eseguire la query. Sarebbe meglio avere Java per gestire i join e riorganizzare in quel caso? Poiché si tratta di un'app Web, se più utenti ottengono esportazioni di Excel, le lunghe interrogazioni ridurrebbero le prestazioni generali del sito? [/ Edit]

Ho un set di dati che contiene circa 70.000 record. Per motivi di semplicità, supponiamo che i dati al momento siano:

ID utente | Domanda Risposta

Nella nostra applicazione web, i dati devono essere ruotati di 90 gradi ed esportati in Excel, in modo tale che abbiamo il seguente:

ID utente | Domanda 1 | Domanda 2 | Domanda 3 ....

Penso che finiremo con circa 50 colonne.

I dati devono essere riorganizzati sul lato del database usando le tabelle pivot o dovrebbero essere riorganizzati sul lato dell'applicazione? Quale soluzione sarebbe la più semplice da mantenere? Quale soluzione avrebbe le migliori prestazioni?

    
posta Pete 30.08.2013 - 21:33
fonte

2 risposte

1

Dato che stai esportando i dati, in questo caso generalmente creerei manualmente il file di esportazione nel codice. Tira indietro le righe ordinate per l'id utente e passa attraverso di esse. Mentre il set di dati sarebbe grande, la query stessa sarebbe molto semplice e non dovrebbe sottolineare molto il database. Non è necessario caricare altrimenti il server sql mantenendo il data set "compilato" mantenuto quando non è necessario.

    
risposta data 31.08.2013 - 00:18
fonte
0

Dipende.

Normalmente i livelli di app sono più semplici da scalare orizzontalmente rispetto ai database. Quindi, quando possibile, fare di più sul livello dell'app (o client), e meno sul DB ti permette di gettare l'hardware sul problema se 100 utenti decidono di eseguire la loro query di 20 secondi contemporaneamente.

Se non ti interessa la scalabilità, allora guarderei prima il piano di spiegazioni per la query e cosa ne causerebbe la lentezza. Potrebbe essere possibile renderlo più veloce lato server.

    
risposta data 31.08.2013 - 00:20
fonte

Leggi altre domande sui tag