Sistema di gestione del flusso di dati

Un sistema di gestione del flusso di dati (DSMS) è un sistema software per la gestione di flussi di dati continui . È paragonabile a un sistema di gestione di database (DBMS) utilizzato per i database. A differenza di un DBMS, in cui vengono eseguite brevemente query per dati statici, un DSMS deve essere in grado di eseguire query continue per flussi di dati. Linguaggi di query speciali come il Continuous Query Language (CQL) possono essere utilizzati per formulare query .

I sistemi di gestione del flusso di dati sono ancora relativamente nuovi nel mondo dei database. Alcuni sviluppi iniziali per scopi generali sono:

C'è anche un numero crescente di progetti più piccoli con obiettivi diversi. A differenza dei dati non scorrevoli, che vengono gestiti quasi esclusivamente con sistemi di gestione di database universali, per i dati mobili vengono ancora utilizzati sistemi sviluppati o adattati appositamente per l'applicazione.

Differenze con DBMS

Image
Elaborazione dati in un DBMS
Image
Elaborazione dei dati in un DSMS

Nei sistemi di database convenzionali, le query a breve termine vengono poste su un database che rimane lo stesso durante la valutazione dei dati (vedi sistema di transazione ). Le query vengono avviate e rimangono nel sistema fino al calcolo e all'output dei risultati. Successivamente, le richieste non sono più disponibili nel sistema. Si dice anche che i dati siano persistenti e le richieste volatili. In un sistema di gestione del flusso di dati, le richieste vengono installate una volta e rimangono nel sistema fino a quando non vengono nuovamente rimosse in modo esplicito. Le richieste vengono valutate su dati in continua evoluzione, ovvero su flussi di dati. Anche i risultati delle indagini vengono continuamente aggiornati, quindi anch'essi generano un flusso di dati. Si dice anche che le richieste siano persistenti e i dati volatili. Questi due principi complementari sono anche noti, ad esempio, nel recupero delle informazioni come richieste ad hoc (nuove richieste per gli stessi documenti) e attività di instradamento (nuovi documenti per richieste specifiche).

La tabella seguente mette a confronto le varie caratteristiche di un Database Management System (DBMS) e un Data Stream Management System (DSMS):

Sistema di gestione della banca dati (DBMS) Sistema di gestione del flusso di dati (DSMS)
Dati persistenti (relazioni) Flussi di dati volatili
Accesso casuale Accesso sequenziale
Richieste una tantum Indagini continue
(Teoricamente) memoria secondaria illimitata Memoria principale limitata
Solo lo stato attuale è rilevante Considerazione dell'ordine in arrivo
velocità di aggiornamento relativamente bassa possibilmente frequenza di aggiornamento estremamente elevata
poco o nessun requisito di tempo Requisiti in tempo reale
Si presume che le date esatte Dati scaduti/non accurati
Elaborazione pianificabile delle richieste Arrivo dati variabili e caratteristiche

Concetti basilari

Come si può già vedere nella tabella sopra, un DSMS ha alcuni concetti di base che differiscono da un DBMS convenzionale. I concetti più importanti sono le richieste continue e le finestre.

Indagini continue

Una richiesta continua viene installata una volta nel sistema e viene eseguita finché non viene nuovamente rimossa. La richiesta ha uno o più flussi di dati di input e uno o più flussi di dati di output. Il risultato di tale richiesta non è quindi un insieme di dati una tantum, come nel caso di una richiesta in un DBMS, ma un flusso di dati stesso. I risultati dovrebbero essere creati quasi in tempo reale, il che significa che la latenza tra l'arrivo di nuovi dati e l'output di un nuovo risultato è molto rilevante.

In caso di richiesta continua è importante definire quando verrà prodotta una nuova edizione. Un modello basato sul tempo genera nuovi output in base all'andamento di un orologio nel tempo, ad esempio l'ora del sistema. Un nuovo problema potrebbe essere generato una volta al minuto. Un altro approccio sono i modelli event-driven (Engl. Event-driven model ) in cui vengono prodotte nuove edizioni quando si verificano determinati eventi nel flusso di dati. Così potrebbe z. Ad esempio, ogni nuovo elemento di dati in un flusso genererà un nuovo output, poiché questo elemento del flusso di dati può influenzare il risultato per questo momento. Poi si parla di un modello guidato da tuple .

finestra

I flussi di dati sono potenzialmente infiniti, quindi generano una quantità potenzialmente infinita di dati. Tuttavia, è disponibile solo una quantità limitata di memoria durante l'elaborazione delle richieste continue, che avviene principalmente nella memoria principale. Windows è un modo per limitare la quantità di dati che devono essere mantenuti in memoria. Un'altra motivazione per l'utilizzo di Windows è l'uso di query continue. Questi dovrebbero fornire risultati per i dati correnti che fluiscono nel DSMS con il flusso di dati. Pertanto, solo i dati attuali sono spesso rilevanti, mentre i dati più vecchi non sono più necessari per i risultati attuali. Per poter esprimere una limitazione della validità degli elementi dei dati, vengono utilizzate le finestre.

Windows limita la visualizzazione del flusso di dati agli elementi più recenti del flusso. Le finestre basate sul tempo e sugli elementi (anche: basate su tuple) sono molto diffuse. Nelle finestre temporali, gli elementi nel flusso di dati vengono mantenuti nel sistema per un certo tempo predeterminato, ad esempio 30 minuti. In una finestra basata su elementi, la finestra contiene un numero massimo di elementi predeterminato, ad esempio i 1000 elementi più recenti. Un esempio di query con una finestra temporale è: "Calcola la media dell'attributo 'x' di tutti gli elementi del flusso di dati per gli ultimi 30 minuti."

Le finestre degli elementi e quelle basate sul tempo possono essere definite in modo diverso. Qui c'è principalmente tra scorrevoli (ingl. Sliding ) e finestre che cadono o rimbalzano (ingl. Tumbling ). La differenza è la dimensione del passo della finestra, chiamata anche periodicità. Una finestra scorrevole avanza con l'avanzamento del flusso di dati in modo tale che la dimensione del passo sia minima. In una finestra basata su elementi, verrebbe rimosso esattamente un elemento per un nuovo elemento aggiunto alla finestra. La dimensione del passo può essere modificata nella misura in cui è la dimensione della finestra, questa viene quindi chiamata finestra a cascata (Engl. Finestra a cascata ). Qui una finestra viene riempita fino alla dimensione specificata. Quando arriva l'elemento successivo, che supererebbe la dimensione specificata della finestra, tutti gli elementi precedenti diventano non validi contemporaneamente e la nuova finestra viene costruita passo dopo passo fino a raggiungere nuovamente la dimensione massima. Questo viene fatto in modo analogo nelle finestre basate sul tempo. Ad esempio, una finestra oscillante sarebbe una finestra di 30 minuti con un incremento di 30 minuti.

Paradigma a un passaggio

Le risorse in termini di tempo di calcolo e spazio di archiviazione per il calcolo dei risultati sui flussi di dati sono limitate. Gli algoritmi che elaborano i flussi di dati quindi in genere non salvano prima i dati completamente e quindi eseguono l'iterazione sull'intero set di dati per generare risultati, ma elaborano ogni singolo elemento nel flusso di dati solo una volta. Questo è chiamato il paradigma one-pass: un elemento di dati passa attraverso un algoritmo solo una volta. Se un nuovo elemento raggiunge l'algoritmo, il risultato del calcolo viene adattato e non è necessario un nuovo accesso all'elemento in un secondo momento. Pertanto l'algoritmo non deve salvare alcun vecchio elemento, solo il risultato intermedio corrente.

Questo funziona per un semplice contatore, ad esempio. Il numero di oggetti dovrebbe essere contato. Se un nuovo elemento arriva all'algoritmo, il contatore viene incrementato di uno, salvato e l'elemento può essere cancellato. È necessario salvare solo la lettura del contatore corrente.

Elaborazione dei flussi e delle relazioni

Image
Struttura di un DSMS

Mentre i dati vengono gestiti in tabelle ( relazioni ) nei sistemi di database convenzionali (relazionali) , i flussi di dati vengono aggiunti come oggetti dati di base in un DSMS. I flussi di dati possono essere intesi come una sequenza continua di coppie tempo-valore. Poiché i flussi di dati sono in linea di principio infiniti, nel frattempo devono essere convertiti in relazioni per l'elaborazione. Al contrario, le relazioni possono essere riconvertite in flussi di dati (vedi figura). L'elaborazione delle relazioni pure può avvenire con metodi convenzionali. La conversione dei flussi in altri flussi avviene attraverso la deviazione delle relazioni. Il Continuous Query Language , che si basa su SQL , offre diversi operatori a questo scopo.

Formulazione, pianificazione e ottimizzazione delle richieste

Come nei sistemi di database convenzionali, le query sono formulate in un linguaggio dichiarativo e ottimizzate per l'esecuzione con l'aiuto di un piano di query. Poiché è necessario elaborare il maggior numero possibile di richieste contemporaneamente, le richieste memorizzate vengono combinate nel modo più intelligente possibile in modo che le richieste parziali possano essere utilizzate più volte.

I componenti di un piano sono operatori, code e stati. Gli operatori corrispondono agli operatori noti dai database convenzionali come il filtraggio, l'ordinamento, l'unione, gli operatori matematici, ecc., nonché l'input e l'output dei flussi di dati. I singoli operatori di un piano sono collegati da code in cui gli oggetti dati vengono scritti in sequenza e letti dall'operatore successivo nello stesso ordine. Come risultati intermedi, ci sono stati come il contenuto di una finestra specificata.

esempio

DSMS-Anfrageplan.png

Un portale di notizie vorrebbe visualizzare le ultime notizie sugli argomenti attualmente più discussi, nonché il volume di notizie per un giorno sulla sua pagina. I messaggi arrivano in un flusso di dati e gli argomenti attualmente importanti in un altro flusso di dati come " zeitgeist ". Ogni messaggio è assegnato a un argomento. In particolare, dovrebbero essere visualizzati i titoli dei messaggi dell'ultima ora sugli ultimi 10 argomenti e il numero di tutti i messaggi correlati nelle ultime 24 ore. Formulate in CQL, queste sono due query:

Q1: SELECT Titel FROM Nachrichten N [Range 1 HOUR], Zeitgeist Z [RANGE 10] WHERE N.Thema = Z.Thema

Q2: SELECT COUNT(*) FROM Nachrichten N [RANGE 1 DAY], Zeitgeist Z [RANGE 10] WHERE N.Thema = Z.Thema

Il DSMS ora utilizza queste richieste per creare un piano il più efficiente possibile, che potrebbe assomigliare a quello mostrato nell'illustrazione seguente, ad esempio. I titoli e gli argomenti dei messaggi vengono prima proiettati e messi in coda. Gli argomenti vengono prima inseriti in una coda e da lì in una finestra di lunghezza 10. Messaggi e finestre sono collegati da un operatore JOIN e arrivano in una finestra che contiene tutti i messaggi di un giorno. Il risultato della query Q2 è determinato da questa finestra utilizzando l'operatore COUNT. Per la query Q1, la finestra più grande è seguita da una finestra più piccola con una durata di un'ora.

letteratura

link internet

Evidenze individuali

  1. Dati - Elenco dei file delle domande del test in inglese (argomenti) ( inglese ) National Institute of Standards and Technology. Estratto il 14 febbraio 2019.
  2. a b c d e Sandra Geisler: Sistemi di gestione del flusso di dati . In: Phokion G. Kolaitis e Maurizio Lenzerini e Nicole Schweikardt (a cura di): Dagstuhl Follow-Ups . nastro 5 . Schloss Dagstuhl - Leibniz Center for Computer Science, Dagstuhl, Germania 2013, ISBN 978-3-939897-61-3 , p. 275–304 , doi : 10.4230 / DFU.Vol5.10452.275 ( dagstuhl.de ).