Cos'è lo streaming dei dati?
Lo streaming dei dati è il processo di trasmissione di un flusso continuo di dati (noto anche come stream) normalmente alimentato in un software di elaborazione del flusso per ricavarne preziose informazioni. Un flusso di dati consiste in una serie di elementi di dati ordinati nel tempo. I dati rappresentano un "evento" o un cambiamento di stato che si è verificato nell'attività ed è utile da conoscere e analizzare da parte dell'azienda, spesso in tempo reale. Alcuni esempi di flussi di dati includono i dati dei sensori, i registri delle attività dai browser web e i registri delle transazioni finanziarie. Un flusso di dati può essere visualizzato come un nastro trasportatore senza fine, che trasporta elementi di dati e li alimenta continuamente in un processore di dati.
Con la crescita dell' Internet of Things (IoT) e le aspettative dei clienti, l'importanza dello streaming dei dati e dell'elaborazione del flusso è aumentata. I dispositivi di monitoraggio personali della salute e i sistemi di sicurezza domestica sono due esempi di fonti di streaming di dati. Un sistema di sicurezza domestica include più sensori di movimento per monitorare diverse aree della casa. Questi sensori generano un flusso di dati trasmessi continuamente a un'infrastruttura di elaborazione che monitora qualsiasi attività inaspettata in tempo reale o salva i dati per analizzare i pattern più difficili da individuare in seguito. I dispositivi di monitoraggio della salute sono un altro esempio di fonti di streaming di dati, tra cui il battito cardiaco, la pressione sanguigna o quelli per il controllo dell'ossigeno. Questi dispositivi generano continuamente dati. L'analisi tempestiva di questi dati è essenziale, poiché da essi potrebbe dipendere la sicurezza della persona.
Quali sono le caratteristiche generali dei flussi di dati?
I dati trasmessi da sensori, browser web e altri sistemi di monitoraggio hanno alcune caratteristiche che li distinguono dai tradizionali dati storici. Seguono alcune caratteristiche chiave dei dati di flusso:
Sensibili al tempo
Ogni elemento in un flusso di dati porta una marca temporale. I flussi di dati sono sensibili al tempo e perdono significato dopo un certo tempo. Per esempio, i dati di un sistema di sicurezza domestica che indicano un movimento sospetto devono essere analizzati e affrontati entro un breve periodo di tempo per rimanere rilevanti.
Continui
Non esiste un inizio o una fine per i dati trasmessi. I flussi di dati sono continui e avvengono in tempo reale, ma non sempre sono oggetto di intervento sul momento, a seconda dei requisiti del sistema.
Eterogenei
I dati di flusso spesso provengono da migliaia di fonti diverse che possono essere geograficamente distanti. A causa della disparità delle fonti, i dati di flusso potrebbero essere un mix di formati diversi.
Imperfetti
A causa della varietà delle loro fonti e dei diversi meccanismi di trasmissione dei dati, un flusso di dati può avere elementi di dati mancanti o danneggiati. Inoltre, gli elementi di dati in un flusso potrebbero arrivare in disordine.
Volatili e irripetibili
Poiché lo streaming dei dati avviene in tempo reale, la trasmissione ripetuta di un flusso è abbastanza difficile. Anche se ci sono disposizioni per la ritrasmissione, i nuovi dati potrebbero non essere gli stessi degli ultimi. Questo rende i flussi di dati altamente volatili. Tuttavia, molti sistemi moderni mantengono una registrazione dei loro flussi di dati, così anche se non è stato possibile accedervi in quel momento, è comunque possibile analizzarli in seguito.

Qual è l'importanza dello streaming dei dati per l'azienda?
I dati nel formato dei flussi sono estremamente importanti nel mondo di oggi. Numerosi dispositivi IoT e utenti internet generano enormi volumi di dati continui e in tempo reale ogni secondo. L'elaborazione di questi dati in tempo reale è sia una sfida che un'opportunità per le organizzazioni.
La natura mutevole dei dati
Tradizionalmente, le organizzazioni raccolgono dati nel tempo, li memorizzano in data warehouse e li elaborano in batch. Questo risparmia la scarsa potenza di calcolo. Negli ultimi anni, la struttura dei dati e le tecnologie di elaborazione sono cambiate notevolmente. L'IoT ha introdotto una vasta gamma di sensori che generano dati di flusso. Anche le carte di credito e le transazioni finanziarie online generano dati in tempo reale che devono essere analizzati e verificati. I browser web generano transazioni online e registri di attività. Lo streaming dei dati e l'elaborazione del flusso sono essenziali per gestire questi tipi di dati.
Grandi volumi di dati
La quantità di dati generata ogni secondo è troppo grande per essere immagazzinata in qualsiasi data warehouse. Pertanto, i dati di flusso sono spesso esaminati sul momento per stabilire se sono dati in tempo reale essenziali o non sono necessari. Di conseguenza, i sistemi possono trasmettere i dati in streaming e analizzarli immediatamente per decidere cosa viene e cosa non viene archiviato, aiutando le organizzazioni a ridurre la perdita dei dati, lo stoccaggio e a risparmiare sui costi dell'infrastruttura.
Esempi di streaming dei dati
Internet of Things: l'IoT comprende un enorme numero di dispositivi che raccolgono dati tramite sensori e li trasmettono in tempo reale a un processore di dati. I dati IoT generano dati di flusso. I dispositivi di monitoraggio della salute indossabili come gli orologi, i sistemi di sicurezza domestica, i sistemi di monitoraggio del traffico, gli scanner biometrici, gli elettrodomestici connessi, i sistemi di cybersicurezza e di privacy generano e trasmettono dati in tempo reale.
Monitoraggio del mercato azionario in tempo reale: i dati finanziari in tempo reale sono spesso trasmessi in un formato di flusso. Elaborare e analizzare i dati finanziari (come i prezzi delle azioni e le tendenze del mercato) aiuta le organizzazioni a prendere decisioni cruciali velocemente.
Registri di attività e transazioni: Internet è anche una fonte importante di dati di flusso in tempo reale. Quando le persone visitano siti web o cliccano su link, i browser web generano registri di attività. Anche le transazioni finanziarie online, come gli acquisti con carta di credito, generano dati cruciali per il tempo che possono essere trasmessi ed elaborati per azioni in tempo reale.
Monitoraggio dei processi: ogni azienda genera miliardi di punti dati dai propri sistemi interni. Con lo streaming di questi dati e l'elaborazione in tempo reale, le aziende sono in grado di monitorare la salute del sistema e agire prima che le cose peggiorino. Per esempio, le aziende manifatturiere dispongono spesso di dispositivi per monitorare la salute della catena di montaggio e rilevare i guasti per la valutazione del rischio nella produzione. Questi dispositivi possono anche trasmettere dati cruciali per il tempo per monitorare le interruzioni e persino prevenirle.
Cos'è l'elaborazione del flusso? Come funziona?
Per elaborare dati in streaming o dal vivo, è necessario un processo molto diverso dalla tradizionale elaborazione in batch. Un processore di flusso raccoglie, analizza e visualizza un flusso continuo di dati. E naturalmente, per l'elaborazione, è necessario iniziare con lo streaming dei dati. Lo streaming dei dati è l'inizio dell'elaborazione del flusso. L'elaborazione del flusso è usata per prendere i flussi di dati e ricavarne informazioni, spesso in tempo reale. A causa della natura esclusiva dei dati in streaming, un processore di flusso deve soddisfare i seguenti requisiti:
Bassa latenza
Un processore di flusso deve lavorare velocemente su flussi continui di dati. La velocità di elaborazione è una preoccupazione primaria a causa di due motivi. In primo luogo, i dati arrivano come un flusso continuo e se il processore è lento e perde dei dati, non può tornare indietro. In secondo luogo, i dati in streaming perdono la loro rilevanza in poco tempo. Qualsiasi ritardo nell'elaborazione causa un deterioramento del valore dei dati.
Scalabilità
I dati in streaming non hanno sempre lo stesso volume. Per esempio, i sensori possono spesso generare bassi volumi di dati, ma occasionalmente, ci potrebbe essere un picco nei dati. Poiché il volume dei dati è imprevedibile, il processore deve aumentare di potenza per gestire grandi volumi di dati, se necessario.
Disponibilità
Un processore di flusso non può permettersi lunghi tempi morti. I dati del flusso sono continui e arrivano in tempo reale. Un processore deve essere tollerante agli errori, cioè deve essere in grado di continuare a funzionare anche se alcuni dei suoi componenti si guastano. Un processore di flusso deve anche essere in grado di raccogliere, elaborare e passare immediatamente le informazioni a un livello superiore per la presentazione.
Quali sono i componenti principali di un processore di flusso?
In generale, ci sono due casi d'uso nell'elaborazione del flusso:
Gestione di flussi di dati
Nella gestione dei flussi di dati, l'obiettivo dell'elaborazione del flusso è creare un riassunto dei dati in entrata o di costruire modelli. Per esempio, da un flusso continuo di dati facciali, un processore di flusso potrebbe essere in grado di creare una lista di caratteristiche facciali. Un altro esempio di questo caso d'uso sono i registri delle attività Internet. Dal flusso costante di dati sui click degli utenti, il processore di flusso cerca di calcolare le preferenze e i gusti dell'utente.
Elaborazione di eventi complessi
L'elaborazione di eventi complessi è il caso d'uso che si applica alla maggior parte dei flussi di dati IoT. In questo caso d'uso, il flusso di dati consiste in flussi di eventi. Il lavoro del processore di flusso è quello di estrarre gli eventi significativi, ricavare informazioni significative e passare rapidamente le informazioni a un livello superiore in modo che possa essere intrapresa un'azione immediata in tempo reale.
Alcuni processori di flusso gestiscono solo uno dei casi d'uso di cui sopra, mentre alcuni processori avanzati li gestiscono entrambi. Indipendentemente dal caso d'uso, un'architettura end-to-end del processore di flusso deve avere le seguenti funzionalità:
Generazione di dati
Il sistema di generazione dei dati denota le varie fonti di dati grezzi, come sensori, sistemi di monitoraggio di transazioni e browser web. Essi producono continuamente dati per il sistema di elaborazione del flusso da consumare.
Raccolta e aggregazione dei dati
Ciascuna delle fonti di generazione di dati di cui sopra è associata a un client, che riceve i dati dalla fonte. Questi sono noti come source client. Un aggregatore raccoglie i dati da diversi client sorgente, inviando i dati in movimento a un buffer di dati centralizzato.
Buffering della messaggistica
I buffer di messaggi prendono i dati del flusso da un agente di aggregazione e li immagazzinano temporaneamente prima di passarli a un processore logico. Esistono due tipi principali di buffer di messaggi: basati su argomenti e basati su code. Nei buffer basati su argomenti, i dati in arrivo sono memorizzati sotto forma di record chiamati argomenti. Uno o più produttori di dati possono contribuire a un argomento. Il buffer di messaggi basato sulla coda è più un sistema di buffering punto a punto, che legge da un singolo produttore e consegna a un singolo consumatore di dati.
Message Broker
I sistemi di raccolta dati, aggregazione e buffering dei messaggi insieme formano un sistema di broker di messaggi. La funzionalità del broker di messaggi è quella di aggregare i dati del flusso da varie fonti, formattarli e passarli a un sistema di elaborazione logica continua.
Elaborazione logica continua
Questo è il nucleo dell'architettura di elaborazione del flusso. Il sottosistema di elaborazione logica continua esegue varie query predefinite sui flussi di dati in entrata per ricavare informazioni utili. Le query possono essere semplici come quelle memorizzate in un file XML. Queste query sono eseguite continuamente sui dati in arrivo. Il sottosistema può definire un linguaggio di comando dichiarativo che consente agli utenti di creare facilmente le query. Il sistema di elaborazione logica continua viene spesso eseguito su macchine distribuite per la scalabilità e la tolleranza agli errori. Nel corso degli anni, il sistema di elaborazione logica si è evoluto per supportare la modifica dinamica delle query e le API di programmazione per facilitare l'interrogazione.
Archiviazione e presentazione
Questi sono due sistemi di supporto nell'elaborazione del flusso. Il sistema di archiviazione mantiene un riassunto del flusso di dati in ingresso e può essere utilizzato per riferimenti futuri. Memorizza anche i risultati delle query eseguite sul flusso continuo di dati. Il sistema di presentazione è usato per consentire agli utenti di visualizzare i dati. Il sistema di presentazione può includere un sistema analitico di livello superiore o avvisi per gli utenti finali.
Elaborazione del flusso ed elaborazione in batch
Tradizionalmente, le organizzazioni raccolgono dati da varie fonti, come registri di vendita, interazioni con i clienti e recensioni, e li archiviano in un data warehouse. Questi dati vengono poi elaborati in batch in un sistema di data analytics. L'elaborazione in batch spesso lavora su dati storici, che non sono cruciali per il tempo. Pur essendo i dati storici importanti, non forniscono le informazioni in tempo reale che molte organizzazioni ricercano oggi. L'elaborazione del flusso rende disponibili informazioni su dati in tempo reale che devono essere elaborati rapidamente.
Con l'elaborazione in batch, c'è la flessibilità di memorizzare ed elaborare i dati a proprio piacimento, mentre l'elaborazione del flusso richiede un'azione in tempo reale o quasi. L'elaborazione in batch gestisce dati che non sono cruciali per il tempo e non hanno bisogno di essere veloci come l'elaborazione del flusso. Rispetto all'elaborazione del flusso, l'elaborazione in batch spesso richiede un'infrastruttura più grande per memorizzare i dati mentre sono in attesa di essere analizzati. Tuttavia, la maggior parte delle organizzazioni per avere successo nel mercato di oggi ha bisogno di una combinazione di elaborazione del flusso e in batch.

Vantaggi dello streaming e dell'elaborazione dei dati
Elaborazione del flusso e alti rendimenti
Le organizzazioni possono trarre in generale un immenso valore dai dati. Le tecniche di elaborazione dei flussi in tempo reale aiutano le organizzazioni a ottenere un vantaggio analizzando i dati sensibili al tempo in modo da poter reagire e rispondere rapidamente a potenziali problemi. Per esempio, l'analisi dei flussi aiuta le organizzazioni finanziarie a monitorare i prezzi delle azioni in tempo reale e a prendere decisioni cruciali per il tempo. Le aiuta ad essere informate sulle tendenze del mercato in tempo reale. I robusti sistemi di visualizzazione, insieme a un'infrastruttura di elaborazione dei flussi in tempo reale, permettono alle organizzazioni di migliorare il loro tempo di risposta ad eventi cruciali.
Ridurre il costo delle infrastrutture
Nell'elaborazione tradizionale dei dati, enormi volumi di dati sono spesso memorizzati in data warehouse. Il costo di questi sistemi di archiviazione e dell'hardware sono spesso un fardello per le organizzazioni. Con l'elaborazione dei flussi, i dati non vengono memorizzati in volumi enormi, quindi i sistemi di elaborazione hanno costi hardware inferiori.
Ridurre le perdite prevenibili
I flussi di dati in tempo reale permettono alle organizzazioni di monitorare continuamente il loro ecosistema aziendale. Tengono le organizzazioni informate su possibili violazioni della sicurezza, problemi di produzione, insoddisfazione dei clienti, crolli finanziari o un imminente sconvolgimento dell'immagine sociale. Con lo streaming e l'elaborazione continua dei dati, le organizzazioni possono evitare questi problemi prevenibili.
Aumentare la competitività e la soddisfazione del cliente
Con l'elaborazione dei dati in tempo reale, le organizzazioni possono risolvere proattivamente i possibili problemi prima che si materializzino. Questo dà loro tempo e vantaggio sulla concorrenza. Anche lo streaming e l'elaborazione dei dati aumentano la soddisfazione dei clienti, poiché i problemi dei clienti possono essere affrontati in tempo reale. Con l'elaborazione dei dati continua e in tempo reale, non vi sono ritardi causati dai dati fermi nei magazzini in attesa di essere elaborati.
Sfide per lo streaming e l'elaborazione dei dati
I sistemi di streaming ed elaborazione dei dati hanno a che fare con dati altamente volatili, in tempo reale e continui. I dati di flusso sono spesso eterogenei e incompleti. La natura stessa dei dati di flusso pone molte sfide allo streaming e all'elaborazione dei dati.
Volume e diversità dei dati
Lo streaming dei dati si occupa di enormi volumi di dati continui e in tempo reale. La perdita di dati e i pacchetti di dati danneggiati sono sfide comuni nello streaming dei dati. I dati di flusso sono spesso eterogenei, provenienti da diverse località geografiche e applicazioni. Per lo streaming dei dati e le applicazioni di elaborazione è una sfida gestire i dati a causa della loro stessa natura.
Tempestività
La rilevanza dei dati di flusso diminuisce nel tempo. Il sistema di streaming ed elaborazione dei dati deve essere abbastanza veloce da analizzare i dati mentre sono ancora rilevanti. Questa natura cruciale per il tempo dei dati di flusso richiede un sistema ad alte prestazioni e tollerante agli errori.
Elasticità
Il volume dei dati di flusso sta aumentando ogni giorno. Per mantenere un certo livello di qualità del servizio, i sistemi di elaborazione dei flussi devono adattarsi al carico in modo dinamico. Le fonti dei dati di flusso non possono sempre trasmettere elevati volumi di dati. In questi casi, i sistemi di elaborazione devono usare solo risorse minime. Quando la domanda aumenta, il sistema deve assegnare dinamicamente più risorse. Questa necessità di elasticità è un'altra sfida dei sistemi di elaborazione dei flussi.
Tolleranza agli errori
L'elaborazione dei flussi avviene continuamente in tempo reale. I dati trasmessi non possono essere ripetuti o ritrasmessi perfettamente. Di conseguenza, i sistemi di elaborazione dei flussi non possono permettersi tempi morti. Contrariamente ai tradizionali sistemi di elaborazione in batch, non vi è molto tempo tra la raccolta e l'elaborazione dei dati. I sistemi devono essere sempre disponibili e devono funzionare sempre. Se una qualsiasi parte del sistema vacilla, non deve influenzare il resto del sistema di elaborazione.