Comprendere l'elaborazione batch e dei flussi
L'elaborazione dati è semplicemente la conversione dei dati non elaborati in informazioni significative tramite un processo. Esistono due modi generali per elaborare i dati:
- Elaborazione batch, in cui vengono raccolti e archiviati più record di dati prima di essere elaborati insieme in un'unica operazione.
- Elaborazione del flusso, in cui un'origine di dati viene costantemente monitorata ed elaborata in tempo reale man mano che si verificano nuovi eventi di dati.
Informazioni sull'elaborazione batch
Nell'elaborazione batch, i nuovi elementi di dati in arrivo vengono raccolti e archiviati e l'intero gruppo viene elaborato insieme come batch. Il momento esatto in cui ogni gruppo viene elaborato può essere determinato in diversi modi. È ad esempio possibile elaborare i dati in base a un intervallo di tempo pianificato (ad esempio, ogni ora) oppure attivare il processo quando viene raggiunta una determinata quantità di dati o come risultato di un altro evento.
Si supponga, ad esempio, di voler analizzare il traffico stradale conteggiando il numero di auto presenti su un tratto di strada. Con un approccio basato sull'elaborazione batch si dovrebbero riunire le auto in un parcheggio per poi conteggiarle in un'unica operazione mentre sono ferme.
Se la strada è trafficata, con un numero elevato di auto che transitano a intervalli frequenti, questo approccio può risultare poco pratico. Si noti che non si ottengono risultati fino a quando non si è parcheggiato un batch di auto ed è stato effettuato il conteggio.
Un esempio reale di elaborazione batch è dato dalla fatturazione delle società che gestiscono le carte di credito. Il cliente non riceve una fattura per ogni acquisto effettuato con la carta di credito, bensì una fattura mensile per tutti gli acquisti del mese.
| Aspect | Vantaggi dell'elaborazione batch | Svantaggi dell'elaborazione batch |
|---|---|---|
| Capacità di elaborazione | Grandi volumi di dati possono essere elaborati in modo efficiente in un momento pratico. | Prima di iniziare l'elaborazione, è necessario preparare tutti i dati di input. |
| Utilizzo del sistema | I processi possono essere pianificati durante gli orari di inattività o di minore attività (ad esempio durante la notte), migliorando l'utilizzo delle risorse. | Spesso si verifica un ritardo tra l'input dei dati e la ricezione dei risultati. |
| Affidabilità e gestione degli errori | — | Gli errori nei dati, gli arresti anomali o i malfunzionamenti del programma possono interrompere l'intera elaborazione batch. |
| Convalida dei dati | — | I dati di input devono essere controllati attentamente prima di riesecuzione del processo batch. |
| Impatto degli errori secondari | — | Anche piccoli errori di dati possono impedire l'esecuzione corretta dell'intero processo batch. |
Comprendere l'elaborazione dei flussi
Nell'elaborazione del flusso, ogni nuovo elemento di dati viene elaborato all'arrivo. A differenza dell'elaborazione batch, non c'è attesa fino al successivo intervallo di elaborazione batch: i dati vengono elaborati come singole unità in tempo reale anziché essere elaborati un batch alla volta. L'elaborazione dei dati di flusso è vantaggiosa negli scenari in cui vengono continuamente generati nuovi dati dinamici.
Ad esempio, un approccio migliore al conteggio ipotetico delle automobili potrebbe essere quello di applicare un approccio di streaming , conteggiando le automobili in tempo reale man mano che passano:
In questo approccio non è necessario attendere che tutte le auto siano posteggiate per avviare l'elaborazione ed è possibile aggregare i dati in intervalli di tempo, ad esempio conteggiando il numero di auto che passano ogni minuto.
Ecco alcuni esempi di dati in streaming del mondo reale:
- Un istituto finanziario monitora le fluttuazioni nel mercato azionario in tempo reale, calcola il valore a rischio e ribilancia automaticamente i portafogli in base all'andamento dei prezzi delle azioni.
- Una società di giochi online raccoglie i dati in tempo reale sulle interazioni tra i giocatori e li inserisce nella piattaforma di gioco. Analizza quindi i dati in tempo reale e offre incentivi ed esperienze dinamiche per coinvolgere i giocatori.
- Un sito Web immobiliare monitora un subset di dati dei dispositivi mobili e propone consigli in tempo reale sulle proprietà da visitare in base alla posizione geografica.
L'elaborazione del flusso è ideale per operazioni critiche in tempo reale che richiedono una risposta immediata in tempo reale. Ad esempio, un sistema che monitora fumo e calore in un edificio e deve attivare gli allarmi e sbloccare le porte per consentire ai residenti di fuggire immediatamente in caso di incendio.
Informazioni sulle differenze tra dati batch e di streaming
Oltre alle modalità di gestione dei dati nell'elaborazione batch e di streaming, ci sono altre differenze:
Ambito dati: l'elaborazione batch può elaborare tutti i dati nel set di dati. L'elaborazione di flussi in genere ha accesso solo ai dati più recenti ricevuti o all'interno di una finestra temporale mobile (ad esempio, gli ultimi 30 secondi).
Dimensioni dei dati: l'elaborazione batch è adatta per la gestione efficiente di set di dati di grandi dimensioni. L'elaborazione del flusso è destinata a singoli record o micro batch costituiti da pochi record.
Prestazioni: la latenza è il tempo impiegato per la ricezione e l'elaborazione dei dati. la latenza per l'elaborazione batch è in genere di alcune ore. L'elaborazione di flussi avviene in genere immediatamente, con latenza nell'ordine di secondi o millisecondi.
Analisi: in genere si usa l'elaborazione batch per eseguire analisi complesse. L'elaborazione di flussi viene usata per semplici funzioni di risposta, aggregazioni o calcoli, ad esempio le medie mobili.
Combinare l'elaborazione batch e di flussi
Molte soluzioni di analisi su larga scala includono una combinazione di elaborazione batch e dei flussi, consentendo sia l'analisi cronologica che l'analisi in tempo reale dei dati. È comune che le soluzioni di elaborazione dei flussi acquisiscano i dati in tempo reale, li elaborino filtrandoli o aggregandoli e li presentino usando dashboard e visualizzazioni in tempo reale (ad esempio, presentando il totale parziale delle auto che hanno transitato in una strada nell'ora corrente), conservando anche i risultati elaborati in un archivio dati per l'analisi cronologica insieme ai dati elaborati in batch (ad esempio, per consentire l'analisi dei volumi di traffico per l'anno precedente).
Anche quando non è necessaria l'analisi in tempo reale o la visualizzazione dei dati, le tecnologie di streaming vengono spesso usate per acquisire dati in tempo reale e archiviarli in un archivio dati per l'elaborazione batch successiva (equivale a reindirizzare tutte le automobili che viaggiano lungo una strada in un parcheggio prima di conteggiarle).
Il diagramma seguente illustra un'architettura lambda, un modello comune per combinare l'elaborazione batch e flusso in una soluzione di analisi dei dati su larga scala.
- Gli eventi dei dati di un'origine dati in streaming vengono acquisiti in tempo reale.
- I dati di altre origini vengono inseriti in un archivio dati (spesso un data lake) per l'elaborazione batch.
- Se l'analisi in tempo reale non è necessaria, i dati di streaming acquisiti vengono scritti nell'archivio dati per l'elaborazione batch successiva.
- Quando è necessaria l'analisi in tempo reale, viene usata una tecnologia di elaborazione dei flussi per preparare i dati di flusso per l'analisi o la visualizzazione in tempo reale, spesso filtrando o aggregando i dati in finestre temporali.
- I dati non di flusso vengono elaborati periodicamente per prepararli per l'analisi e i risultati vengono mantenuti in un archivio dati analitici (spesso definito data warehouse) per l'analisi cronologica.
- I risultati dell'elaborazione dei flussi possono anche essere salvati in modo permanente nell'archivio dati analitici per supportare l'analisi cronologica.
- Gli strumenti analitici e di visualizzazione vengono usati per presentare ed esplorare i dati in tempo reale e cronologici.
Nota
Le architetture di soluzione comunemente usate per l'elaborazione combinata dei dati batch e di flusso includono le architetture lambda e delta. L'architettura kappa è un'alternativa più semplice che elimina completamente il livello batch separato, trattando tutti i dati come flusso continuo e riproducendoli quando è necessaria la rielaborazione cronologica. Piattaforme moderne come Microsoft Fabric e Apache Kafka rendono sempre più pratiche soluzioni in stile kappa. I dettagli di queste architetture non rientrano nell'ambito di questo corso.