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 più record di dati vengono raccolti e archiviati prima di essere elaborati insieme in un'unica operazione.
- Elaborazione dei flussi, in cui un'origine dati viene monitorata costantemente ed elaborata in tempo reale quando si verificano nuovi eventi di dati.
Informazioni sull'elaborazione batch
Nell'elaborazione batch gli elementi di dati appena arrivati 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.
Ecco alcuni vantaggi dell'elaborazione batch:
- È possibile elaborare grandi volumi di dati in un momento appropriato.
- È possibile pianificare l'esecuzione in un momento in cui i computer o i sistemi sarebbero altrimenti inattivi, ad esempio durante la notte o durante gli orari non di punta.
Ecco alcuni svantaggi dell'elaborazione batch:
- C'è un ritardo tra l'inserimento dei dati e il recupero dei risultati.
- È necessario che tutti i dati di input di un processo batch siano pronti prima di poter elaborare un batch. Ciò significa che i dati devono essere controllati attentamente. Problemi relativi ai dati, errori e arresti anomali del programma che si verificano durante i processi batch comportano l'arresto dell'intero processo. Prima di poter eseguire di nuovo il processo, è necessario controllare attentamente i dati di input. Anche piccoli errori nei dati possono impedire l'esecuzione di un processo batch.
Informazioni sull'elaborazione di flussi
Con l'elaborazione di flussi, ogni nuova unità di dati viene elaborata al momento dell'arrivo. A differenza dell'elaborazione batch, non c'è alcun tempo di attesa fino al successivo intervallo di elaborazione batch e i dati vengono elaborati singolarmente e non 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 nostro ipotetico problema di conteggio delle auto potrebbe essere applicare un approccio basato sul flusso, conteggiando le auto in tempo reale mentre 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 di flusso reali:
- 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 di flussi è ideale per operazioni in cui la rapidità è un fattore strategico e 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 dei dati: l'elaborazione batch può elaborare tutti i dati presenti 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).
Dimensione dei dati: l'elaborazione batch è adatta per gestire in modo efficiente set di dati di grandi dimensioni. L'elaborazione di flussi è destinata a singoli record o micro batch costituiti da pochi record.
Prestazioni: la latenza è il tempo impiegato per ricevere ed elaborare i 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: l'elaborazione batch si usa in genere per l'esecuzione di 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 l'analisi o la visualizzazione dei dati in tempo reale non sono necessarie, le tecnologie di flusso vengono spesso usate per acquisire dati in tempo reale e archiviarli in un archivio dati per l'elaborazione batch successiva (questo equivale a reindirizzare tutte le automobili che transitano lungo una strada in un parcheggio prima di conteggiarle).
Il diagramma seguente illustra alcuni modi in cui l'elaborazione batch e dei flussi può essere combinata in un'architettura di analisi dei dati su larga scala.
- Gli eventi di dati di un'origine dati di flusso vengono acquisiti in tempo reale.
- I dati provenienti da 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 flusso 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 salvati in modo permanente 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 soluzioni comunemente usate per l'elaborazione combinata dei dati batch e di flusso includono architetture lambda e differenziali. I dettagli di queste architetture esulano dall'ambito di questo corso, ma basti sapere che tali architetture incorporano tecnologie per l'elaborazione dei dati batch su larga scala e l'elaborazione dei flussi in tempo reale per creare una soluzione di analisi end-to-end.