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:
- Stanford Stream Data Manager (STREAM) presso la Stanford University
- Aurora alla Brandeis University , Brown University e MIT
- TelegraphCQ a Berkeley
- PipelineDB (come TelegraphCQ una propaggine di PostgreSQL )
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
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
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
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
- Brian Babcock, Shivnath Babu, Mayur Data, Rajeev Motwani, Jennifer Widom. Modelli e problemi nei sistemi di flusso di dati . In: Atti del 21° Simposio ACM sui principi dei sistemi di database (PODS 2002)
- Don Carney, Ugur Centintemel, Mitch Cherniack, et al.: Monitoraggio dei flussi - Una nuova classe di applicazioni per la gestione dei dati (PDF; 685 kB) . (VLDB 2002)
- Sandra Geisler: Sistemi di gestione del flusso di dati . Seguiti di Dagstuhl. Vol. 5. Centro di informatica Schloss Dagstuhl-Leibniz, 2013.
- Rajeev Motwani, Jennifer Widom, Arvind Arasu, Brian Babcock, Shivnath Babu, Mayur Datar, Gurmeet Manku, Chris Olston, Justin Rosenstein e Rohit Varma: elaborazione delle query, gestione delle risorse e approssimazione in un sistema di gestione del flusso di dati . Stanford, 2002 (CIDR 2003)
- Golab L., Ozsu MT Issues in data stream management , ACM SIGMOD Record Volume 32, Issue 2, pp. 5-14, June 2003.
- Michael Cammert, Christoph Heinz, Jürgen Krämer, Bernhard Seeger: elaborazione delle richieste sui flussi di dati . Spettro del database 11: 5-13, (2004).
- Jürgen Krämer: query continue su flussi di dati - Semantica e implementazione . Tesi, Philipps University Marburg, (2007).
- Jürgen Krämer, Bernhard Seeger: Semantica e implementazione di query continue a finestre scorrevoli su flussi di dati . (ACM TODS 2009).
link internet
- STREAM , Stream Team Homepage
- AURORA , StreamBase Systems, Inc.
- TelegrafoCQ
- NigaraST ( Memento del 13 ottobre 2007 in Internet Archive )
- QStream
- TUBI , Analizzatore RTM
- StreamGlobe
- Odisseo
- Pipeline DB
- Ripensare DB
Evidenze individuali
- ↑ Dati - Elenco dei file delle domande del test in inglese (argomenti) ( inglese ) National Institute of Standards and Technology. Estratto il 14 febbraio 2019.
- ↑ 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 ).