Datastroombeheersysteem

Een datastroombeheersysteem (DSMS) is een softwaresysteem voor het beheren van continue gegevensstromen . Het is vergelijkbaar met een databasebeheersysteem (DBMS) dat voor databases wordt gebruikt. In tegenstelling tot een DBMS, waarin kort opvragen naar statische gegevens worden uitgevoerd, moet een DSMS continue opvragingen voor datastromen kunnen uitvoeren. Speciale querytalen zoals de Continuous Query Language (CQL) kunnen worden gebruikt om query's te formuleren .

Datastroombeheersystemen zijn nog relatief nieuw in de databasewereld. Enkele initiële ontwikkelingen voor algemene doeleinden zijn:

Er is ook een groeiend aantal kleinere projecten met verschillende focus. In tegenstelling tot niet-stromende data, die vrijwel uitsluitend met universele databasebeheersystemen wordt beheerd, worden voor het doorstromen van data nog steeds systemen gebruikt die speciaal voor de applicatie zijn ontwikkeld of aangepast.

Verschillen met DBMS

Image
Gegevensverwerking in een DBMS
Image
Gegevensverwerking in een DSMS

In conventionele databasesystemen worden kortetermijnquery's geplaatst op een database die tijdens de gegevensevaluatie dezelfde blijft (zie transactiesysteem ). De zoekopdrachten worden gestart en blijven in het systeem totdat de resultaten zijn berekend en uitgevoerd. Daarna zijn de verzoeken niet meer beschikbaar in het systeem. Er wordt ook gezegd dat de gegevens persistent zijn en de verzoeken vluchtig zijn. In een datastroombeheersysteem worden de verzoeken één keer geïnstalleerd en blijven ze in het systeem totdat ze expliciet weer worden verwijderd. De aanvragen worden geëvalueerd op constant veranderende data, namelijk op datastromen. De resultaten van de onderzoeken worden ook continu bijgewerkt, zodat ze zelf ook resulteren in een datastroom. Er wordt ook gezegd dat de verzoeken persistent zijn en de gegevens vluchtig zijn. Deze twee complementaire principes zijn bijvoorbeeld ook bekend bij het ophalen van informatie als ad-hocverzoeken (nieuwe verzoeken om dezelfde documenten) en routeringstaken (nieuwe documenten voor gespecificeerde verzoeken).

De volgende tabel vergelijkt de verschillende kenmerken van een Database Management System (DBMS) en een Data Stream Management System (DSMS):

Databasebeheersysteem (DBMS) Datastroombeheersysteem (DSMS)
Persistente gegevens (relaties) Vluchtige gegevensstromen
Willekeurige toegang Sequentiële toegang
Eenmalige verzoeken Doorlopende vragen
(Theoretisch) onbeperkte secundaire opslag Beperkt hoofdgeheugen
Alleen de huidige status is relevant Behandeling van de inkomende bestelling
relatief lage updatesnelheid mogelijk extreem hoge updatesnelheid
weinig of geen tijd nodig Realtime vereisten
Exacte data worden verondersteld Verouderde/onnauwkeurige gegevens
Planbare aanvraagverwerking inquiry Aankomst en kenmerken van variabele gegevens

Basisconcepten

Zoals al te zien is in de bovenstaande tabel, heeft een DSMS enkele basisconcepten die verschillen van een conventioneel DBMS. De belangrijkste concepten zijn zowel continue vragen als vensters.

Doorlopende vragen

Een doorlopend verzoek wordt eenmaal in het systeem geïnstalleerd en loopt totdat het weer wordt verwijderd. Het verzoek heeft een of meer invoergegevensstromen en een of meer uitvoergegevensstromen. Het resultaat van zo'n verzoek is dus geen eenmalige set data, zoals bij een verzoek in een DBMS het geval is, maar een datastroom zelf. De resultaten moeten in bijna realtime worden gecreëerd, wat betekent dat de latentie tussen de aankomst van nieuwe gegevens en de uitvoer van een nieuw resultaat zeer relevant is.

Bij een doorlopende aanvraag is het belangrijk om vast te stellen wanneer een nieuwe editie wordt geproduceerd. Een tijdgestuurd model genereert nieuwe outputs op basis van de voortgang van een klok in de tijd, bijvoorbeeld de systeemtijd. Er kan één keer per minuut een nieuw nummer worden gegenereerd. Een andere benadering zijn event-driven modellen (Engl. Event-driven model ) waarin nieuwe edities worden geproduceerd wanneer bepaalde gebeurtenissen in de datastroom plaatsvinden. Zo kon z. Zo zal elk nieuw data-element in een stream een ​​nieuwe output genereren, aangezien dit datastream-element het resultaat voor dit tijdstip kan beïnvloeden. Dan spreekt men van een tupelgedreven model .

venster

Gegevensstromen zijn potentieel oneindig, dus ze genereren een potentieel oneindige hoeveelheid gegevens. Er is echter slechts een beperkte hoeveelheid geheugen beschikbaar tijdens de verwerking van continue verzoeken, wat meestal gebeurt in het hoofdgeheugen. Windows is een manier om de hoeveelheid gegevens die in het geheugen moet worden bewaard te beperken. Een andere motivatie voor het gebruik van windows is het gebruik van continue queries. Deze moeten resultaten opleveren voor de huidige gegevens die met de gegevensstroom in de DSMS stromen. Daarom zijn vaak alleen de huidige gegevens relevant, terwijl oudere gegevens niet meer nodig zijn voor de huidige resultaten. Om een ​​beperking van de geldigheid van data-elementen tot uitdrukking te kunnen brengen, wordt gebruik gemaakt van vensters.

Windows beperkt de weergave van de gegevensstroom tot de nieuwste elementen van de stroom. Op tijd gebaseerde en op elementen gebaseerde (ook: op tuple gebaseerde) vensters zijn wijdverbreid. In op tijd gebaseerde vensters worden de elementen in de datastroom gedurende een bepaalde, vooraf bepaalde tijd, bijvoorbeeld 30 minuten, in het systeem bewaard. Bij een op elementen gebaseerd venster bevat het venster maximaal een vooraf bepaald aantal elementen, bijvoorbeeld de meest recente 1000 elementen. Een voorbeeld van een query met een op tijd gebaseerd venster is: "Bereken het gemiddelde van het 'x'-attribuut van alle gegevensstroomelementen voor de laatste 30 minuten."

Element- en tijdgebaseerde vensters kunnen verschillend worden gedefinieerd. Hier zijn vooral tussen glijdende (engl. Sliding ) en tuimelende of stuiterende (engl. Tumbling ) ramen te onderscheiden. Het verschil is de stapgrootte van het venster, ook wel periodiciteit genoemd. Een schuifvenster beweegt met de voortgang van de datastroom zodanig dat de stapgrootte minimaal is. In een op elementen gebaseerd venster zou precies één element worden verwijderd voor een nieuw element dat aan het venster wordt toegevoegd. De stapgrootte kan worden gewijzigd voor zover het de grootte van het venster is, dit wordt dan een tuimelvenster genoemd (Engl. Tumblingvenster ). Hier wordt een venster gevuld tot de opgegeven maat. Wanneer het volgende element arriveert, dat de opgegeven grootte van het venster zou overschrijden, worden alle voorgaande elementen tegelijkertijd ongeldig en wordt het nieuwe venster stap voor stap opgebouwd totdat het weer de maximale grootte heeft bereikt. Dit gebeurt analoog in op tijd gebaseerde vensters. Een wiebelvenster zou bijvoorbeeld een venster van 30 minuten zijn met een toename van 30 minuten.

One-pass paradigma

De middelen in termen van rekentijd en opslagruimte voor het berekenen van resultaten op datastromen zijn beperkt. Algoritmen die gegevensstromen verwerken, slaan de gegevens daarom meestal niet eerst volledig op en herhalen vervolgens de hele gegevensset om resultaten te genereren, maar verwerken elk afzonderlijk element in de gegevensstroom slechts één keer. Dit wordt het one-pass paradigma genoemd: een data-element doorloopt een algoritme maar één keer. Als een nieuw element het algoritme bereikt, wordt het resultaat van de berekening aangepast en is er op een later tijdstip geen nieuwe toegang tot het element nodig. Daarom hoeft het algoritme geen oude elementen op te slaan, alleen het huidige tussenresultaat.

Dit werkt bijvoorbeeld voor een eenvoudige teller. Het aantal objecten moet worden geteld. Als er een nieuw element bij het algoritme aankomt, wordt de teller met één verhoogd, opgeslagen en kan het element worden verwijderd. Alleen de huidige meterstand hoeft te worden opgeslagen.

Verwerking van stromen en relaties

Image
Structuur van een DSMS

Terwijl de gegevens worden beheerd in tabellen ( relaties ) in conventionele (relationele) databasesystemen , worden gegevensstromen toegevoegd als basisgegevensobjecten in een DSMS. Gegevensstromen kunnen worden opgevat als een continue opeenvolging van tijd-waardeparen. Omdat datastromen in principe oneindig zijn, moeten ze tussentijds worden omgezet in relaties voor verwerking. Omgekeerd kunnen relaties weer worden omgezet in datastromen (zie figuur). De verwerking van zuivere relaties kan met conventionele methoden plaatsvinden. De omzetting van stromen in andere stromen vindt plaats via de omweg van relaties. De op SQL gebaseerde Continuous Query Language biedt hiervoor verschillende operators.

Formuleren, plannen en optimaliseren van aanvragen

Net als in conventionele databasesystemen worden queries geformuleerd in een declaratieve taal en geoptimaliseerd voor uitvoering met behulp van een queryplan. Omdat zoveel mogelijk aanvragen tegelijkertijd moeten worden verwerkt, worden de opgeslagen aanvragen zo slim mogelijk gecombineerd, zodat deelaanvragen meerdere keren kunnen worden gebruikt.

De componenten van een plan zijn operators, wachtrijen en statussen. De operators komen overeen met de operators die bekend zijn uit conventionele databases zoals filteren, sorteren, samenvoegen, wiskundige operators, enz., evenals de invoer en uitvoer van gegevensstromen. De individuele operators van een plan zijn met elkaar verbonden door wachtrijen waarin data-objecten sequentieel worden geschreven en in dezelfde volgorde door de volgende operator worden uitgelezen. Als tussenresultaten zijn er toestanden zoals de inhoud van een bepaald venster.

voorbeeld

DSMS-Anfrageplan.png

Een nieuwsportaal wil het laatste nieuws over de onderwerpen die momenteel het meest worden besproken, evenals het nieuwsvolume voor een dag op zijn pagina weergeven. Berichten komen binnen in de ene datastroom en de actueel belangrijke onderwerpen in een andere datastroom als “ tijdgeest ”. Elk bericht is toegewezen aan een onderwerp. In het bijzonder moeten de berichttitels van het afgelopen uur over de laatste 10 onderwerpen en het aantal gerelateerde berichten van de afgelopen 24 uur worden weergegeven. Geformuleerd in CQL, zijn dit twee queries:

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

De DSMS gebruikt deze onderzoeken nu om een ​​zo efficiënt mogelijk plan te maken, dat er bijvoorbeeld uit zou kunnen zien als in de onderstaande afbeelding. De titels en onderwerpen van de berichten worden eerst geprojecteerd en in een wachtrij geplaatst. De onderwerpen worden eerst in een wachtrij geplaatst en van daaruit in een venster van lengte 10. Berichten en vensters worden gekoppeld door een JOIN-operator en komen terecht in een venster dat alle berichten voor een dag bevat. Het resultaat van query Q2 wordt bepaald vanuit dit venster met behulp van de COUNT-operator. Voor query Q1 wordt het grotere venster gevolgd door een kleiner venster met een lengte van één uur.

literatuur

web links

Individueel bewijs

  1. Gegevens - Engelse testvragen (onderwerpen) Bestandslijst ( Engels ) National Institute of Standards and Technology. Ontvangen 14 februari 2019.
  2. a b c d e Sandra Geisler: Datastroombeheersystemen . In: Phokion G. Kolaitis en Maurizio Lenzerini en Nicole Schweikardt (red.): Dagstuhl Follow-Ups . plakband 5 . Schloss Dagstuhl - Leibniz Centrum voor Computerwetenschappen, Dagstuhl, Duitsland 2013, ISBN 978-3-939897-61-3 , p. 275–304 , doi : 10.4230 / DFU.Vol5.10452.275 ( dagstuhl.de ).