Come posso analizzare una grande quantità di dati inviati al mio server prima di scriverli su disco?

1

Nota : questo è un follow-up di questa domanda.

Sto sviluppando un sito Web che consente agli utenti di caricare grandi quantità di dati sul mio back-end Java. Una volta convalidato, i dati devono essere archiviati su disco. Qui "grande" significa nell'ordine di 10 KB fino a 100 KB.

Dato che un numero elevato di utenti può inviare grandi blocchi di dati contemporaneamente e che i dati devono prima essere analizzati (convalidati) prima di essere archiviati su disco sul lato server, quali opzioni devo impedire JVM errori di memoria insufficiente durante l'elaborazione dei blocchi di dati? Nota che ogni chunk di dati viene ricevuto al momento dal frontend in un oggetto String .

    
posta Klangen 28.12.2017 - 16:34
fonte

2 risposte

3

Scrivi prima in un file temporaneo

Avere un crash del server perché si sta esaurendo ram è un problema evitabile . Scrivere su un file temporaneo ti permette di ottenere tutti i pezzi in una sola volta e di analizzarli, o di analizzare ogni pezzo quando entra.

Assicurati che il file venga eliminato quando hai finito le tue valutazioni. Se supera il raduno, puoi spostare il file nella sua posizione permanente con il nome file corretto. Una mossa del filesystem di solito è solo la riscrittura di un puntatore sul disco, quindi è incredibilmente veloce.

    
risposta data 28.12.2017 - 23:40
fonte
2

Vorrei echo @Berin Loritsch riguardo all'uso della memoria per gli stessi motivi menzionati.

Tuttavia, vorrei memorizzare i dati in un database e fare la mia analisi da lì.

Probabilmente inizierò un dibattito sulla tempesta di fuoco (non voluta) ma in generale , i database gestiscono l'ordinamento, la ricerca, il controllo, la registrazione, la gestione degli errori, la manipolazione dei dati, la sicurezza, la memorizzazione, ecc. più veloce, più facile, più sicuro) rispetto al file system, almeno nella maggior parte dei casi. I database offrono un modo semplice per mettere in relazione e recuperare i dati memorizzati usando SQL.

Puoi utilizzare tabelle temporanee per le tue operazioni e impegnare i dati (validi) nel database dopo la fase di analisi.

    
risposta data 29.12.2017 - 02:49
fonte

Leggi altre domande sui tag