Introduzione allo streaming dei dati
Negli ultimi anni, la necessità di disporre di dati in tempo reale è cresciuta esponenzialmente. Le organizzazioni stanno costruendo sempre più applicazioni e piattaforme che sfruttano i flussi di dati per fornire analisi in tempo reale e machine learning a supporto della crescita aziendale. Raccogliendo, elaborando e analizzando i dati in modo continuo, i leader possono ottenere insight immediati, prendere decisioni più rapide e formulare previsioni più accurate.
Le aziende possono sfruttare lo streaming dei dati in tempo reale per monitorare aspetti come le transazioni nei sistemi operativi e le potenziali frodi, oltre che per alimentare modelli di pricing dinamico. Nel frattempo, la proliferazione dell'Internet of Things (IoT) fa sì che dispositivi e sensori di uso quotidiano trasmettono enormi quantità di dati grezzi, e l'accesso immediato a questi set di dati può aiutare a risolvere potenziali problemi o a fornire raccomandazioni specifiche in base alla localizzazione.
In sintesi, i dati in tempo reale hanno il potenziale di trasformare un'organizzazione generando nuove e innovative opportunità o offrendo informazioni più approfondite sui set di dati esistenti.
Ecco altre informazioni utili

Il grande libro dell'ingegneria dei dati
Sviluppa rapidamente le tue competenze con questa guida essenziale all'era dell'AI.

Introduzione all'ETL
Scopri come funzionano le pipeline ETL con questa guida tecnica di O'Reilly.

Impara subito l'ingegneria dei dati
Guarda 4 video e supera un quiz per guadagnare un badge.
Streaming vs. elaborazione batch
Per gestire i propri dati, le organizzazioni si sono tradizionalmente affidate all'elaborazione batch, che consiste nella raccolta e nell'elaborazione dei dati in grandi blocchi, o "batch", a intervalli prestabiliti. Oggi l'uso dell'elaborazione batch è limitato ai casi in cui le aziende hanno bisogno di dati aggiornati tempestivamente, ma non in tempo reale. Ne sono esempi applicazioni come la previsione delle vendite, la gestione delle scorte, l’ingestione di dati da mainframe o l’elaborazione di sondaggi sui consumatori.
Tuttavia, per competere nell’attuale contesto di business globale, le organizzazioni hanno sempre più bisogno di accedere ai dati man mano che vengono raccolti. Lo streaming dei dati aiuta le organizzazioni a prendere decisioni tempestive, garantendo che i dati vengano elaborati rapidamente, con precisione e quasi in tempo reale. Dal momento che elabora i dati nel giro di secondi o millisecondi, lo streaming è la soluzione ideale per casi d'uso come il trading ad alta frequenza, il real-time bidding, l'elaborazione dei log, l'analisi in tempo reale o il rilevamento delle frodi.
Anche se molte organizzazioni riconoscono la necessità di disporre di dati in streaming, la transizione dall’elaborazione batch a quella in streaming può risultare difficile, per via di diversi fattori:
- Nuove API e linguaggi da imparare. Può essere difficile permettere ai team di dati esistenti di continuare a usare i linguaggi e gli strumenti che già conoscono.
- Strumenti operativi complessi da costruire. Le organizzazioni potrebbero incontrare difficoltà nel distribuire e gestire pipeline di dati in streaming che funzionino in modo affidabile nei loro ambienti di produzione.
- Dati in tempo reale e storici su sistemi separati. Modelli di governance incompatibili potrebbero ostacolare la corretta gestione degli accessi per utenti e gruppi.
Databricks aiuta i clienti a superare la tradizionale separazione tra dati batch e dati in streaming con la Data Intelligence Platform. Integrando analisi in tempo reale, machine learning (ML) e applicazioni in un'unica piattaforma, le organizzazioni possono semplificare l’elaborazione dei dati grazie a un ambiente unico che gestisce sia i dati batch sia quelli in streaming.
La Databricks Data Intelligence Platform permette di:
- Costruire pipeline e applicazioni di streaming più velocemente. Utilizza i linguaggi e gli strumenti che già conosci grazie ad API unificate per batch e streaming in SQL e Python. Sblocca analisi in tempo reale, ML e applicazioni a beneficio di tutta l'organizzazione.
- Semplificare le attività operative con strumenti automatizzati. Implementa e gestisci facilmente pipeline in tempo reale e applicazioni in produzione. Gli strumenti automatizzati semplificano l'orchestrazione delle attività, la tolleranza e il ripristino di guasti, le verifiche e i controlli automatici (checkpoint), l'ottimizzazione delle prestazioni e l'autoscalabilità.
- Unificare la governance per tutti i dati in tempo reale su diversi cloud. Unity Catalog mette a disposizione un modello di governance omogeneo per tutti i dati in streaming e batch, semplificando le modalità di scoperta, accesso e condivisione dei dati in tempo reale.
Streaming vs. elaborazione in tempo reale
Streaming ed elaborazione in tempo reale sono concetti strettamente correlati e vengono spesso utilizzati in modo intercambiabile. Tuttavia, presentano distinzioni sottili ma importanti.
"Dati in streaming" si riferisce ai flussi continui generati dai dati in transito. È un approccio alla pipeline di dati in cui i dati vengono elaborati in piccoli blocchi o eventi man mano che vengono generati. "Elaborazione in tempo reale", invece, pone l'accento sull'immediatezza dell'analisi e della risposta, con l'obiettivo di fornire informazioni con un ritardo minimo rispetto al momento in cui i dati vengono ricevuti. In altre parole, un sistema di dati in streaming acquisisce dati in tempo reale e li elabora non appena arrivano.
È importante notare che, anche all'interno dello "streaming in tempo reale", esiste un'ulteriore distinzione tra "tempo reale" e "quasi in tempo reale", principalmente per quanto riguarda la latenza. Si parla di dati in tempo reale in riferimento a sistemi che analizzano e agiscono sui dati con ritardi trascurabili, in genere nell'ordine di millisecondi dalla loro generazione. Questi sistemi sono progettati per scenari in cui un'azione immediata è fondamentale, come il trading azionario automatizzato, i sistemi di monitoraggio medico o il rilevamento delle frodi nelle transazioni finanziarie.
L'elaborazione quasi in tempo reale, invece, comporta un leggero ritardo, generalmente misurato in secondi. Questo approccio è adatto a situazioni in cui non è necessario un intervento istantaneo, ma sono comunque preferibili aggiornamenti tempestivi, come nel caso dei feed dei social media, del tracciamento logistico e dell'aggregazione dei dati per le dashboard operative.
Elaborazione incrementale nelle pipeline di dati
Sebbene l'elaborazione in streaming possa essere la scelta giusta per alcune organizzazioni, può risultare costosa e richiedere molte risorse per essere eseguita. Un modo per ottenere i vantaggi dello streaming senza un'elaborazione continua dei dati è l'incrementalizzazione. Questo metodo elabora solo i dati nuovi, modificati o aggiornati, invece dell'intero dataset.
Un esempio di come può essere eseguita l'incrementalizzazione è tramite le viste materializzate in Databricks. Una vista materializzata è un oggetto di database che memorizza i risultati di una query sotto forma di tabella fisica. A differenza delle normali viste di database, che sono virtuali e ricavano i dati da tabelle sottostanti, le viste materializzate contengono dati pre-elaborati che vengono aggiornati progressivamente in base a un calendario o su richiesta. La pre-elaborazione dei dati consente di accorciare i tempi di risposta alle query e migliorare le prestazioni in alcuni scenari.
Le viste materializzate possono risultare utili quando si elaborano set di dati ridotti anziché dataset completi. In generale, l'incrementalizzazione dei dati all'interno di una pipeline può aumentare l'efficienza riducendo lo sforzo computazionale, il tempo e il consumo di risorse. Ciò è particolarmente vantaggioso per pipeline su larga scala, dove l'elaborazione degli aggiornamenti consente un'analisi e un processo decisionale più rapidi.
Considerazioni e compromessi nello streaming
Mentre le organizzazioni implementano flussi di dati in tempo reale, ci sono alcuni fattori importanti da considerare nella progettazione dell'architettura di elaborazione. Il modo in cui viene progettato il sistema può introdurre compromessi significativi e dipende dai carichi di lavoro e dagli obiettivi di business dell’azienda. Tra le caratteristiche da valutare ci sono, ad esempio:
Latenza: è il tempo necessario per elaborare e consegnare i dati dal momento in cui vengono ricevuti. La bassa latenza dei dati è fondamentale per applicazioni in tempo reale come il rilevamento delle frodi o lo streaming video in diretta, ma può essere costosa da mantenere.
Optare per una latenza più elevata nei dati può invece essere ideale per i flussi di lavoro che richiedono solo report periodici o in cui l'elaborazione e le decisioni immediate non sono critiche. I sistemi che archiviano dati di log o generano rapporti giornalieri o settimanali sulle vendite di solito sfruttano flussi di dati a latenza più alta.
Throughput: è una misura del volume di dati che un sistema può elaborare nel tempo, di solito espressa in eventi al secondo. Un throughput elevato è fondamentale per l'IoT poiché consente di gestire flussi di dati massivi in modo efficiente. Tuttavia, livelli più alti di throughput comportano un certo compromesso sulla latenza.
Costo: per molte organizzazioni, il costo è il fattore determinante nel determinare il giusto livello di latenza e throughput per i propri sistemi. Per alcuni carichi di lavoro che richiedono un'elaborazione dei dati tempestiva, potrebbe valere la pena investire nella progettazione di un sistema a bassa latenza e ad alto throughput. Se invece le esigenze sui dati non sono immediate, o i carichi di lavoro richiedono l'elaborazione di batch di dati più grandi, allora un sistema con latenza più elevata potrebbe essere la scelta giusta.
Non tutte le architetture di streaming sono uguali, ed è importante trovare il giusto equilibrio per soddisfare sia le esigenze dei carichi di lavoro che i vincoli di budget. In pratica, si tratta di accedere ai propri dati al momento giusto, quando davvero servono, piuttosto che in tempo reale.
Architettura di Spark Streaming
Apache SparkTM Structured Streaming è la tecnologia chiave che sblocca lo streaming dei dati sulla Databricks Data Intelligence Platform, mettendo a disposizione un'API unificata per l'elaborazione batch e in streaming. Spark è un progetto open source che suddivide i flussi di dati continui in piccoli batch gestibili per l'elaborazione. Structured Streaming consente di prendere le stesse operazioni eseguite in modalità batch utilizzando le API strutturate di Spark ed eseguirle in modalità streaming. Questo approccio riduce la latenza e permette l'elaborazione incrementale, con latenze fino a un minimo di 250 ms.
In Structured Streaming, i dati vengono trattati come una tabella infinita ed elaborati in modo incrementale. Spark raccoglie i dati in arrivo su un breve intervallo di tempo, forma un batch e poi lo elabora come un normale job batch. Questo approccio combina la semplicità dell'elaborazione batch con funzionalità quasi in tempo reale e include checkpoint che garantiscono tolleranza ai guasti e recupero in caso di errore.
L'approccio di Spark alla pipeline di dati è progettato per utilizzare in modo efficiente le risorse. La pipeline inizia con l'ingestione di dati grezzi, che vengono poi filtrati, aggregati o mappati fino a raggiungere il data sink. Tuttavia, ogni fase elabora i dati in modo incrementale mentre attraversano la pipeline, rilevando eventuali anomalie o errori prima che vengano archiviati in un database.
Per i carichi di lavoro che richiedono un'elevata reattività, Spark offre una modalità di elaborazione continua che offre funzionalità in tempo reale elaborando ogni record singolarmente, non appena arriva. Puoi trovare maggiori informazioni sulla gestione dei dati in streaming su Databricks qui.
ETL in streaming
L'ETL (estrazione, trasformazione, caricamento) in streaming aiuta le organizzazioni a elaborare e analizzare i dati in tempo reale o quasi in tempo reale per soddisfare le esigenze delle applicazioni e dei flussi di lavoro data-driven. L'ETL è solitamente eseguito in batch; l'ETL in streaming, invece, acquisisce i dati man mano che vengono generati, in modo da renderli disponibili per l'analisi quasi immediatamente.
L'ETL in streaming riduce al minimo la latenza elaborando i dati in modo incrementale, consentendo aggiornamenti continui invece di attendere un set di dati da processare in batch. Inoltre, riduce i rischi legati a dati obsoleti o irrilevanti, garantendo che le decisioni siano basate sulle informazioni più recenti disponibili.
Qualsiasi strumento ETL deve includere la capacità di scalare man mano che un'azienda cresce. Databricks ha lanciato DLT come primo framework ETL che utilizza un approccio dichiarativo semplice per costruire pipeline di dati affidabili. I team possono utilizzare i linguaggi e gli strumenti che già conoscono, come SQL e Python, per creare ed eseguire pipeline di dati batch e streaming in un unico ambiente, con impostazioni di aggiornamento controllabili e automatizzate. Questo non solo fa risparmiare tempo, ma riduce anche la complessità operativa. Indipendentemente dalla destinazione dei dati, la costruzione di pipeline di dati in streaming sulla Databricks Data Intelligence Platform evita perdite di tempo nel passaggio da dati grezzi a dati puliti.
Analisi in streaming
Come abbiamo visto, lo streaming dei dati offre un'elaborazione continua dei dati a bassa latenza e la possibilità di trasmettere analisi in tempo reale man mano che si verificano gli eventi. L'accesso a dati grezzi in tempo reale (o quasi in tempo reale) può essere fondamentale per le operazioni aziendali, poiché consente alle figure decisionali di basarsi su informazioni aggiornate e rilevanti. Alcuni dei vantaggi dell'analisi in streaming includono:
Visualizzazione dei dati. Tenere sotto controllo le informazioni aziendali più importanti può aiutare le organizzazioni a gestire quotidianamente gli indicatori di prestazione (KPI). I dati in streaming possono essere monitorati in tempo reale affinché le aziende sappiano che cosa sta accadendo in ogni momento.
Informazioni approfondite e dettagliate. Le dashboard in tempo reale possono avvisare quando si verifica un evento aziendale fuori dall'ordinario. Ad esempio, possono automatizzare il rilevamento e la risposta a una minaccia o segnalare un'area in cui indagare un comportamento anomalo.
Maggiore competitività. Le aziende che puntano a ottenere un vantaggio competitivo possono utilizzare dati in streaming per individuare rapidamente tendenze e fissare parametri di riferimento (benchmark). In questo modo, guadagnano un vantaggio rispetto ai concorrenti che si affidano all'analisi batch.
Riduzione delle perdite evitabili. L'analisi in streaming consente di prevenire o almeno ridurre i danni provocati da incidenti quali violazioni di sicurezza, problemi di produzione o disdette dei clienti.
Analisi di attività operative di routine. L'analisi in streaming aiuta le organizzazioni a raccogliere ed estrarre informazioni immediate e fruibili dai dati in tempo reale. Quando i leader aziendali hanno accesso a dati pertinenti, tempestivi e affidabili, possono essere sicuri di prendere decisioni valide.
Streaming per AI/ML
Man mano che i modelli di intelligenza artificiale (AI) e ML si sviluppano e maturano, l'elaborazione batch tradizionale può faticare a tenere il passo con il volume e la varietà dei dati richiesti da queste applicazioni. I ritardi nella trasmissione dei dati possono portare a risposte inaccurate e a un aumento dell'inefficienza delle applicazioni.
I dati in streaming forniscono un flusso continuo di informazioni in tempo reale basate sui dati più recenti disponibili, garantendo che i modelli di AI/ML si adattino e producano previsioni man mano che gli eventi si verificano. Ci sono due modi in cui lo streaming dei dati aiuta a preparare i modelli di AI:
Addestramento dell'AI: nelle fasi iniziali dello sviluppo di modelli di AI/ML, i dati in streaming sono fondamentali per l'addestramento, fornendo grandi set di dati strutturati o non strutturati. I modelli vengono addestrati a riconoscere schemi o correlazioni e quindi a formulare previsioni iniziali basate su parametri casuali o predefiniti. Questo processo viene ripetuto e perfezionato con grandi quantità di dati, migliorando progressivamente l'accuratezza e l'affidabilità del modello. Imparando da schemi e tendenze, così come da eventuali deviazioni in essi, i modelli sviluppano output e previsioni sempre più precisi.
Inferenza AI: una volta che un sistema AI/ML è stato addestrato, può essere distribuito in un ambiente di produzione dove utilizza i parametri appresi in fase di addestramento per formulare previsioni (inferenze) a partire dai dati in ingresso. I dati in streaming forniscono informazioni nuove e inedite, mentre i modelli generano insight e previsioni quasi istantanei.
Organizzazioni di vari settori utilizzano le informazioni fornite da AI addestrate su set di dati in streaming. I rivenditori di prodotti per la salute e il benessere sfruttano i report in tempo reale sui dati dei clienti per aiutare i farmacisti a fornire raccomandazioni e consigli personalizzati. Le aziende di telecomunicazioni possono impiegare il machine learning in tempo reale per rilevare attività fraudolente come sblocchi illegali di dispositivi e furti di identità. Dal canto loro, i retailer possono utilizzare i dati in streaming per automatizzare il pricing in tempo reale sulla base delle scorte e dei fattori di mercato.
Sebbene i dati in streaming siano fondamentali per questi modelli, è importante ricordare che la loro integrazione con l'AI e il ML comporta una serie di sfide specifiche. Tra queste:
Volume dei dati: le organizzazioni hanno a disposizione enormi quantità di informazioni, come dati sui clienti, sulle transazioni, sull'uso dei dispositivi e altro ancora. Gestire tutti questi dati e integrarli in un modello di AI/ML richiede un'architettura dati robusta e capacità di elaborazione scalabili e resilienti.
Qualità dei dati: sebbene la quantità di dati cresca in maniera esponenziale, non tutti i dati sono di alta qualità e accurati. Spesso provengono da sistemi diversi, sono in formati eterogenei e possono risultare incompleti o incoerenti. Perché i modelli di AI/ML funzionino bene, i dati devono essere testati e validati continuamente per garantirne l'affidabilità.
Pipeline di dati: costruire pipeline di dati robuste ed efficienti per gestire l'acquisizione, la trasformazione e la distribuzione dei dati in tempo reale per sistemi di AI/ML può essere complesso. È fondamentale che l'organizzazione investa in un'infrastruttura scalabile in grado di gestire grandi modelli di ingestione ed elaborazione dei dati.
Databricks affronta questi problemi tramite Mosaic AI, che fornisce ai clienti strumenti unificati per creare, distribuire, valutare e governare soluzioni di AI e ML. Gli utenti ricevono output accurati personalizzati con i dati aziendali e possono addestrare e distribuire i propri modelli linguistici di grandi dimensioni (LLM) personalizzati a un costo 10 volte inferiore.
Streaming su Databricks
Implementare lo streaming dei dati in un'organizzazione può richiedere un notevole sforzo. Databricks lo rende meno oneroso semplificando il processo. La Databricks Data Intelligence Platform offre analisi in tempo reale, machine learning e applicazioni, tutto su un'unica piattaforma. Creando applicazioni di streaming su Databricks, è possibile:
- Abilitare tutti i team di dati a costruire facilmente carichi di lavoro di streaming con i linguaggi e gli strumenti che già conoscono e le API che già utilizzano.
- Semplificare sviluppo e attività operative sfruttando funzionalità pronte all'uso che automatizzano molti degli aspetti di produzione associati alla costruzione e alla manutenzione di pipeline di dati in tempo reale.
- Eliminare i silos di dati e centralizzare i modelli di sicurezza e governance con una singola piattaforma per dati in streaming e batch.
Inoltre, grazie a DLT, i clienti dispongono di strumenti automatizzati che semplificano l'acquisizione dei dati e i processi ETL, preparando i set di dati per l'utilizzo in analisi in tempo reale, ML e applicazioni operative.
Spark Structured Streaming è il cuore delle funzionalità in tempo reale di Databricks. Adottato da centinaia di migliaia di persone e organizzazioni, fornisce una singola API unificata per l'elaborazione batch e in streaming, semplificando il lavoro di data engineer e sviluppatori che possono costruire applicazioni in tempo reale senza modificare il codice o apprendere nuove competenze.
In tutto il mondo, le organizzazioni hanno sfruttato lo streaming di dati sulla Databricks Data Intelligence Platform per ottimizzare i propri sistemi operativi, gestire reti di pagamento digitali, esplorare nuove opportunità di innovazione nelle energie rinnovabili e contribuire a proteggere i consumatori dalle frodi.
Databricks offre tutte queste funzionalità strettamente integrate per supportare i tuoi casi d'uso in tempo reale su un'unica piattaforma.