Generalmente viene utilizzato un buffer per questo tipo di operazione, spesso una struttura di dati FIFO (First In, First Out) in cui, quando arrivano nuove informazioni che sarebbero oltre la capacità del buffer, le informazioni più vecchie (prime) nel buffer sono spurgato per fare spazio ai nuovi dati.
Questo è un po 'come leggere un file riga per riga, emettere i risultati ovunque li desideri e poi leggere la riga successiva. Si cerca lo stesso obiettivo: evitare di bloccare lo script a causa dell'eccessivo utilizzo della memoria.
Quindi, cosa succede quando si dispone di un set di dati che è troppo grande per essere conservato in memoria? In breve, non puoi continuare. O hai bisogno di interrompere il lavoro e restituire qualcosa come "set di risultati troppo grande - ecco le prime n occorrenze", o devi inviare i risultati a un file o qualcosa di simile che ti permetta di estrarre le cose dalla RAM in modo da poter continuare a lavorare .
Un esempio canonico è diventato SAX vs DOM nell'elaborazione XML. Quando i set di dati sono grandi, il lato negativo è che si perde la semplicità e la comodità di essere in grado di spingere tutto nella RAM e non preoccuparsene. Richiede quasi sempre un cambiamento nella strategia e nelle tecniche di codifica per gestire tali problemi.
"Colui che aumenta i dati grezzi, aumenta la complessità della codifica." - Proverbio computerizzato