I flussi di dati sono dati generati in modo continuo da migliaia di origini dati, che generalmente inoltrano record di dati in modo simultaneo e a piccole dosi (nell'ordine dei kilobyte). I flussi di dati sono composti da svariati tipi di dati, ad esempio i file di log generati dai clienti che utilizzano applicazioni Web o su dispositivi mobili, acquisti effettuati su siti di e-commerce, eventi all'interno di videogiochi, informazioni provenienti da social network, dati di transazioni finanziarie, servizi di geolocalizzazione e di telemetria relativi a dispositivi connessi o strumentazioni in data center.

Tutte queste informazioni devono essere elaborate in modo sequenziale e incrementale, record per record o in base a intervalli temporali dinamici, e impiegate per un'ampia gamma di operazioni di analisi, ad esempio correlazione, aggregazione, filtraggio e campionamento. Le informazioni ottenute da queste analisi consentono alle aziende una visione più ampia su molti aspetti del loro business e sulle attività dei clienti, come l'utilizzo dei servizi (a scopo di misurazione e di fatturazione), l'attività dei server, i clic sui siti Web e la geolocalizzazione di dispositivi, persone e asset fisici, consentendo risposte rapide in qualsiasi situazione. Ad esempio, le aziende potranno monitorare i cambiamenti nella percezione dei loro brand e prodotti analizzando flussi provenienti dai social media, prendendo provvedimenti quando necessario.


L'elaborazione in flussi è vantaggiosa nella maggior parte dei casi in cui nuovi dati vengono generati in modo continuo e dinamico. Si applica alla maggior parte dei settori e dei casi d'uso relativi ai Big Data. In genere le aziende iniziano con applicazioni molto semplici, ad esempio la raccolta di log di sistema e calcoli rudimentali come algoritmi di minimax. In un secondo momento, tali applicazioni si evolvono fino a diventare calcoli sofisticati quasi in tempo reale. Inizialmente, vengono impiegate per elaborare flussi di dati in modo da produrre report piuttosto essenziali ed eseguire semplici azioni in risposta, ad esempio generare allarmi quando una determinata misurazione supera una soglia predefinita. Presto, però, le applicazioni iniziano a occuparsi di analisi di dati più sofisticate, ad esempio per l'applicazione di algoritmi di machine learning e l'estrazione di informazioni approfondite a partire dai dati a disposizione. Progressivamente si applicano algoritmi complessi su flussi ed eventi, ad esempio intervalli temporali in cui individuare i più recenti film di successo, rendendo sempre più particolareggiate le analisi.


  • I sensori nei veicoli da trasporto, le apparecchiature industriali e i macchinari agricoli possono inviare dati a un'applicazione di streaming. L'applicazione monitora le prestazioni, rileva anticipatamente eventuali guasti e ordina automaticamente il pezzo di ricambio, evitando i tempi di inattività.
  • Un istituto finanziario monitora le variazioni del mercato azionario in tempo reale, elaborando il valore a rischio e riequilibrando automaticamente i portafogli finanziari in base alle fluttuazioni dei prezzi delle azioni.
  • Un sito Web monitora un sottoinsieme dei dati provenienti da dispositivi mobili consumer elaborando in tempo reale suggerimenti sulle proprietà da visitare in base alla loro geo-localizzazione.
  • Una società che opera nel settore fotovoltaico deve mantenere stabile la corrente per tutti i propri clienti, altrimenti incorrerà in una penale. Perciò ha implementato un'applicazione di flussi di dati che monitora tutti i pannelli solari nel proprio campo e ne pianifica in tempo reale la manutenzione, riducendo al minimo i periodi di bassa resa di ciascun pannello e i relativi costi dovuti alle penali.
  • Un editore di contenuti multimediali può trasmettere in streaming miliardi di record di clickstream dalle sue proprietà online, aggregare i dati e aggiungervi informazioni demografiche sugli utenti; può inoltre ottimizzare il posizionamento dei contenuti sul proprio sito, in modo da offrire contenuti più rilevanti e una migliore esperienza ai propri utenti.
  • Una società di gaming online raccoglie flussi di dati relativi alle interazioni tra giocatori e li inoltra alla propria piattaforma di gaming. Quindi analizza in tempo reale questi dati, creando offerte e soluzioni dinamiche che accrescono il coinvolgimento dei giocatori.

Prima di affrontare i flussi di dati, è bene confrontare e mostrare le differenze tra l'elaborazione in batch e l'elaborazione in flussi. L'elaborazione in batch può essere utilizzata per elaborare query arbitrarie su diversi set di dati. Di norma elabora i risultati da tutti i dati che prende in esame, e consente un'analisi approfondita dei set di Big Data. Le piattaforme che supportano le attività in batch sono, ad esempio, i sistemi basati su MapReduce, come Amazon EMR. L'elaborazione in flussi, invece, richiede l'input di sequenze di dati e l'aggiornamento continuo di parametri, report e statistiche di riepilogo in risposta a ciascun record di dati caricato. Questo tipo di elaborazione è più adatto a funzioni di monitoraggio e di interazione in tempo reale.

  Elaborazione in batch Elaborazione in flussi
Dati a cui si applica Query o elaborazione sulla maggior parte o tutti i dati in un set di dati. Query o elaborazione su dati all'interno di un intervallo temporale specifico o sui record di dati più recenti.
Dimensioni dei dati
Batch di dati di grandi dimensioni.
Singoli record o piccole batch composte da pochi record.
Prestazioni Latenza nell'ordine di ore o minuti. Latenza nell'ordine di secondi o millisecondi.
Analisi Analisi complesse. Funzioni interattive semplici, aggregazione di dati e parametri dinamici.

Molte aziende stanno implementando un modello ibrido frutto della combinazione di entrambi gli approcci, mantenendo un livello di elaborazione in batch e uno di elaborazione in flussi. I dati vengono prima elaborati da una piattaforma di dati in streaming come Amazon Kinesis per estrarre le analisi in tempo reale, quindi vengono memorizzati in soluzioni di storage quali S3, dove vengono trasformati e caricati in modo differente a seconda del caso d'uso di elaborazione in batch.


L'elaborazione di dati in flussi richiede due livelli: un livello di storage e uno di elaborazione. Il livello di storage deve supportare l'ordinamento dei record e una consistenza forte per consentire letture e scritture rapide, poco costose e riproducibili relative a flussi di dati di grandi dimensioni. Il livello di elaborazione ha invece il compito di elaborare i dati provenienti dal livello di storage, eseguire calcoli e quindi inviare notifiche per eliminare i dati non più necessari. Entrambi i livelli, inoltre, dovranno essere sottoposti a un'attenta pianificazione per garantire scalabilità, persistenza e tolleranza ai guasti. Ne consegue che sono diverse le piattaforme in grado di fornire l'infrastruttura necessaria per creare applicazioni di flussi di dati, tra cui Amazon Kinesis Streams, Amazon Kinesis Firehose, Apache Kafka, Apache Flume, Apache Spark Streaming e Apache Storm.


Amazon Web Services (AWS) offre diverse opzioni per lavorare con i flussi di dati. È possibile sfruttare i servizi gestiti di flussi di dati offerti da Amazon Kinesis oppure distribuire e gestire una soluzione di flussi di dati personalizzata nel cloud in Amazon EC2.

Amazon Kinesis è una piattaforma per lo streaming di dati in AWS che offre servizi avanzati per semplificare il caricamento e l'analisi di flussi di dati e che consente di creare applicazioni personalizzate per esigenze specialistiche. I servizi che offre sono due: Amazon Kinesis Firehose e Amazon Kinesis Streams.

Inoltre, è possibile eseguire altre piattaforme di streaming di dati quali Apache Kafka, Apache Flume, Apache Spark Streaming e Apache Storm in Amazon EC2 e Amazon EMR. 

Amazon Kinesis Streams consente di creare applicazioni personalizzate per elaborare o analizzare flussi di dati per esigenze specialistiche. È in grado di acquisire e memorizzare in modo continuo diversi terabyte di dati all'ora da centinaia di migliaia di fonti. Quindi è possibile creare applicazioni che elaborano i dati provenienti da Amazon Kinesis Streams per alimentare pannelli di controllo in tempo reale, generare allarmi, implementare inserzioni pubblicitarie e modelli di prezzo dinamici e molto altro. Amazon Kinesis Streams supporta vari framework di elaborazione in flussi, tra cui Kinesis Client Library (KCL), Apache Storm e Apache Spark Streaming. Ulteriori informazioni su Amazon Kinesis Streams »

Amazon Kinesis Firehose è il mezzo più semplice per caricare flussi di dati in AWS. È in grado di acquisire e caricare automaticamente flussi di dati in Amazon S3 e Amazon Redshift per ottenere analisi in tempo reale con gli strumenti di business intelligence e i pannelli di controllo già in uso. Consente inoltre di implementare in modo rapido un approccio ELT, ottenendo vantaggi immediati dall'uso di flussi di dati. Ulteriori informazioni su Amazon Kinesis Firehose »


È possibile installare altre piattaforme di dati in streaming in Amazon EC2 e Amazon EMR, creando livelli di storage ed elaborazioni personalizzati. Nel momento in cui si crea una soluzione personalizzata per l'uso di flussi di dati in Amazon EC2 e Amazon EMR, è possibile aggirare i problemi causati dal provisioning dell'infrastruttura impiegando una serie di framework di elaborazione e di storage dei flussi. A livello di storage è possibile utilizzare Apache Kafka e Apache Flume. A livello di elaborazione è possibile usare Apache Spark Streaming e Apache Storm.