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:
- Stanford Stream Data Manager (STREAM) aan de Stanford University
- Aurora aan de Brandeis University , Brown University en MIT
- TelegraphCQ in Berkeley
- PipelineDB (zoals TelegraphCQ een uitloper van PostgreSQL )
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
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
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
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
- Brian Babcock, Shivnath Babu, Mayur Data, Rajeev Motwani, Jennifer Widom. Modellen en problemen in datastroomsystemen . In: Proceedings van het 21e ACM Symposium on Principles of Database Systems (PODS 2002)
- Don Carney, Ugur Centintemel, Mitch Cherniack, et al.: Monitoring van streams - een nieuwe klasse van gegevensbeheertoepassingen (PDF; 685 kB) . (VLDB 2002)
- Sandra Geisler: Datastroombeheersystemen . Dagstuhl vervolg. Deel 5. Schloss Dagstuhl-Leibniz Centrum voor Computerwetenschappen, 2013.
- Rajeev Motwani, Jennifer Widom, Arvind Arasu, Brian Babcock, Shivnath Babu, Mayur Datar, Gurmeet Manku, Chris Olston, Justin Rosenstein en Rohit Varma: queryverwerking , resourcebeheer en aanpassing in een datastroombeheersysteem . Stanford, 2002 (CIDR 2003)
- Golab L., Ozsu MT Issues in data stream management , ACM SIGMOD Record Volume 32, Issue 2, pp. 5-14, juni 2003.
- Michael Cammert, Christoph Heinz, Jürgen Krämer, Bernhard Seeger: Verwerking van verzoeken op datastromen . Databasespectrum 11: 5-13, (2004).
- Jürgen Krämer: continue query's over gegevensstromen - semantiek en implementatie . Proefschrift, Philipps University Marburg, (2007).
- Jürgen Krämer, Bernhard Seeger: Semantiek en implementatie van continue schuifvensterquery's over gegevensstromen . (ACM TODS 2009).
web links
- STREAM , Stream Team Homepage
- AURORA , StreamBase Systems, Inc.
- TelegraafCQ
- NigaraST ( Memento van 13 oktober 2007 in het internetarchief )
- QStream
- PIJPEN , RTM-analysator
- StreamGlobe
- Odysseus
- PijplijnDB
- HeroverweegDB
Individueel bewijs
- ↑ Gegevens - Engelse testvragen (onderwerpen) Bestandslijst ( Engels ) National Institute of Standards and Technology. Ontvangen 14 februari 2019.
- ↑ 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 ).