Elaborazione continua di dati in movimento man mano che si verificano gli eventi, utilizzando framework di flusso per acquisire, trasformare e instradare flussi ad alta velocità per ottenere informazioni immediate
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.
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:
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:

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.
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.
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.