Continuous Query Language

Continuous Query Language

Die Continuous Query Language (CQL) ist eine deklarative Anfragesprache für Datenströme in Data Stream Management Systemen. Sie stellt eine Erweiterung der SQL dar. Die CQL wurde bis Januar 2006 im Rahmen des STREAM-Projekts an der Stanford University entwickelt.

Arten der Umwandlungen zwischen Strömen und Relationen in CQL

Inhaltsverzeichnis

Bestandteile

Die wesentliche Erweiterung von CQL zu SQL besteht darin, dass zusätzlich zu Relationen auch Datenströme als Datentypen existieren. Datenströme lassen sich als potentiell unendliche Folge von Zeit-Wertepaaren auffassen. Für die Umwandlung zwischen Strömen und Relationen (siehe Abbildung) gibt es zwei verschiedene Arten von Operatoren.

Zur Umwandlung von Strömen in Relationen ist dies

  • der Fenster-Operator [...]

und zur Umwandlung von Relationen in Ströme

  • der Insert-Stream-Operator ISTREAM
  • der Delete-Stream-Operator DSTREAM
  • der Relation-Stream-Operator RSTREAM

Zusätzlich gibt es den Stichproben-Operator SAMPLE für die Auswahl aus einem Datenstrom. Für die Transformation zwischen Relationen können die herkömmlichen Operatoren aus SQL verwendet werden. Die Umwandlung von Strömen in andere Ströme findet über den Umweg von Relationen statt. Die Operatoren sind weiter unten im Einzelnen erklärt.

Beispiele

Es werden kontinuierlich Wetterdaten gemessen, die als Datenstrom in einer Applikation ankommen. Der folgende CQL-Ausdruck liefert mit Hilfe eines Fenster-Operators die Durchschnittstemperatur der letzten 24 Stunden:

SELECT AVG(Temperatur) FROM Wetter [Range 1 Day]

Da es sich um eine kontinuierliche Anfrage handelt, wird diese per Istream standardmäßig wieder in einen Datenstrom umgewandelt. Die vollständige Anfrage lautet also:

SELECT ISTREAM(AVG(Temperatur) FROM Wetter [Range 1 Day])

In einer anderen Datenbank werden von einem Blitzortungssystem erkannte Blitze mit ihren Koordinaten eingetragen. Folgende Anfrage erzeugt daraus einen Datenstrom:

SELECT ISTREAM(position) FROM Blitz

In Kombination mit weiteren Daten lässt sich beispielsweise ein Datenstrom von Blitzen in ausgewählten Gebieten erzeugen und als aktuelle Blitzwarnung ausgeben.

Die Operatoren im Einzelnen

Fenster

Zur Umwandlung von Strömen in Relationen wird ein Fenster definiert. Die Syntax dafür ist S [W] wobei S ein Strom und W ein Fenster ist. Das Fenster kann durch einen Zeitraum oder durch eine Anzahl von Tupeln angegeben werden:

[Rows 100] liefert beispielsweise die jeweils 100 letzten Tupel
[Range 5 Seconds] liefert beispielsweise die Tupel der letzten 5 Sekunden

Wird kein Fenster angegeben, so wird [∞] angenommen, das heißt die Relation enthält alle Tupel aus dem Datenstrom bis zum aktuellen Zeitpunkt. Zusätzlich kann eine Beschränkung durch eine WHERE-Klausel und bei durch Tupelanzahl-basierten Fenstern eine Gruppierung mit PARTITION BY angegeben werden.

In folgendem Beispiel sei ein Strom „Bestellung“ mit den Attributen „Kunde“ und „Zahlungsart“ gegeben. Folgende Anfrage liefert jeweils die 5 letzten Bestellungen eines jeden Kunden, der mit Kreditkarte gezahlt hat.

SELECT * FROM Bestellungen B
[PARTITION BY B.Kunde ROWS 5]
WHERE B.Zahlungsart = 'Kreditkarte'

In Verbindung mit dem RSTREAM-Operator sind zusätzlich die Schlüsselwörter NOW und SLIDE möglich (siehe dort).

Insert-Stream

Mit dem ISTREAM-Operator wird aus einer Relation ein Datenstrom erstellt, bei dem jedes Mal, wenn ein Tupel in die Relation eingefügt wird, eine Kopie an den Datenstrom gesandt wird – allerdings nur, wenn es sich bei den eingefügten Tupeln nicht um Duplikate handelt. Die folgende Anfrage liefert mit jeder neuen Bestellung die Anzahl der Bestellungen innerhalb der letzten Stunde:

SELECT ISTREAM(COUNT(*)) From Bestellungen B [Range 1 Hour]

Delete-Stream

Mit dem DSTREAM-Operator wird aus einer Relation ein Datenstrom erstellt, bei dem jedes Mal, wenn ein Tupel aus einer Relation entfernt wird, dieses Tupel an den Datenstrom gesandt wird. Die folgende Anfrage liefert die gelöschten Kunden als Datenstrom:

DSTREAM (SELECT * FROM Kunden)

Relation-Stream

Der RSTREAM Operator wandelt eine gesamte Relation (beispielsweise eine gesamte Datenbanktabelle) in einen Datenstrom um, das heißt alle Tupel, die zum gegenwärtigen Zeitpunkt in der Relation enthalten sind, werden an den Datenstrom gesandt.

Das Schlüsselwort NOW für die Länge eines Fensters liefert in Verbindung mit dem RSTREAM-Operator den aktuellen Wert. In folgendem Beispiel seien zwei Ströme Verbindungsaufbau und Verbindungsende gegeben, die jeweils den Anfang und das Ende einer Kommunikationsverbindung liefern. Die folgende Anfrage liefert fortlaufend alle abgeschlossenen Verbindungen, die höchstens 5 Minuten gedauert haben.

SELECT RSTREAM(A.*)
FROM Verbindungsaufbau [Range 5 Minutes] A, Verbindungsende [Now] E
WHERE A.id = E.id

Mit dem Schlüsselwort SLIDE kann für ein Fenster angegeben werden, wie oft es aktualisiert werden soll. Die folgende Anfrage liefert beispielsweise täglich das gleitende Monatsmittel der gesamten Bestellsumme aus einem Strom von Bestellungen:

SELECT RSTREAM( AVG(B.Summe) ) FROM Bestellungen B [Range 1 Year Slide 1 Month]

Samples

Um eine zufällige Auswahl aus einem Stream zu bekommen, gibt es den SAMPLE-Operator, dem eine Prozentzahl übergeben wird. Beispielsweise filtert die Anfrage SELECT * FROM T SAMPLE(10) aus dem Stream T jedes Element mit einer Wahrscheinlichkeit von 90% heraus, so dass im Durchschnitt nur jedes zehnte in den Ergebnisstrom übernommen wird.

Bewertung

Ein wesentlicher Vorteil der CQL ist, dass sie direkt auf der – nur teilweise deklarativen – SQL aufbaut und die Anfragen deklarativ formuliert werden können. Dies setzt jedoch im DSMS effiziente Verfahren zur Umformulierung der Anfrage in einen Anfrageplan voraus.

Mit STREAM konkurrierende Systeme verwenden entweder direkt ein imperatives Modell zur Formulierung von Anfragen (beispielsweise Aurora/Borealis) oder besitzen eine mit CQL vergleichbare Syntax (TelegraphCQ) beziehungsweise ermöglichen prinzipiell auch die Ausführung von CQL-Anfragen (PIPES).

Die Verarbeitung von Anfragen über XML-Datenströmen stellt ein eigenes Forschungsgebiet dar, in dessen Rahmen auf XPath statt auf SQL aufbauende Anfragesprachen entwickelt werden.

Siehe auch

Literatur

Weblinks

Dies ist ein als lesenswert ausgezeichneter Artikel.
Dieser Artikel wurde am 7. Juni 2005 in dieser Version in die Liste der lesenswerten Artikel aufgenommen.

Wikimedia Foundation.

Игры ⚽ Поможем сделать НИР

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Structured Query Language — SQL (das Kürzel für Structured Query Language; offizielle Aussprache [ɛskjuːˈɛl], häufig auch [ˈsiːkwəl] →SEQUEL), ist eine Datenbanksprache zur Definition, Abfrage und Manipulation von Daten in relationalen Datenbanken. SQL ist von ANSI und ISO… …   Deutsch Wikipedia

  • language — /lang gwij/, n. 1. a body of words and the systems for their use common to a people who are of the same community or nation, the same geographical area, or the same cultural tradition: the two languages of Belgium; a Bantu language; the French… …   Universalium

  • Language Integrated Query — LINQ redirects here. For the card game, see Linq (card game). Language Integrated Query Influenced by SQL, Haskell Language Integrated Query (LINQ, pronounced link ) is a Microsoft .NET Framework component that adds native data querying… …   Wikipedia

  • Past Continuous (novel) — Infobox Book | name = Past Continuous title orig = Zikhron Devarim (זכרון דברים) translator = Dalya Bilu image caption = Overlook Press 2004 reprint author = Yaakov Shabtai cover artist = Yehudah Nayman country = Israel language = Hebrew… …   Wikipedia

  • English language spelling reform — For hundreds of years, many groups and individuals have advocated spelling reform for English. Spelling reformers seek to make English spelling more consistent and more phonetic, so that spellings match pronunciations and follow the alphabetic… …   Wikipedia

  • Ukrainian language — Infobox Language name=Ukrainian nativename=українська мова ukrayins ka mova pronunciation= [ukrɑˈjinʲsʲkɑ ˈmɔʋɑ] states=See article speakers=39 million|rank=26 Spoken in= Ukraine, Moldova, Vojvodina, USA, Brazil, Portugal. familycolor=Indo… …   Wikipedia

  • Natural language processing — (NLP) is a field of computer science and linguistics concerned with the interactions between computers and human (natural) languages; it began as a branch of artificial intelligence.[1] In theory, natural language processing is a very attractive… …   Wikipedia

  • SQL-92 — SQL (das Kürzel für Structured Query Language; offizielle Aussprache [ɛskjuːˈɛl], häufig auch [ˈsiːkwəl] →SEQUEL), ist eine Datenbanksprache zur Definition, Abfrage und Manipulation von Daten in relationalen Datenbanken. SQL ist von ANSI und ISO… …   Deutsch Wikipedia

  • SQL-99 — SQL (das Kürzel für Structured Query Language; offizielle Aussprache [ɛskjuːˈɛl], häufig auch [ˈsiːkwəl] →SEQUEL), ist eine Datenbanksprache zur Definition, Abfrage und Manipulation von Daten in relationalen Datenbanken. SQL ist von ANSI und ISO… …   Deutsch Wikipedia

  • DSMS — Ein Data Stream Management System (DSMS) ist ein Datenbanksystem zur Verwaltung von kontinuierlichen Datenströmen. Es ist vergleichbar mit einem Datenbankverwaltungssystem (DBMS), welches für Datenbanken eingesetzt wird. Im Gegensatz zu einem… …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”