Date: Fri, 29 Mar 2024 16:34:14 +0100 (CET) Message-ID: <465719721.183.1711726454636@vmisdata19.uni-oldenburg.de> Subject: Exported From Confluence MIME-Version: 1.0 Content-Type: multipart/related; boundary="----=_Part_182_1267425768.1711726454635" ------=_Part_182_1267425768.1711726454635 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Content-Location: file:///C:/exported.html
This document describes the basic concepts of the Odysseus operator fram= ework and shows how to extend the framework with new operators. In Odysseus= an operator consumes events streams, does some calculations and produces r= esults event streams. Different operators can be connected by a publish/sub= scribe concept to form an operator plan (or query plan).
A logical operator can be compared to an algebra operator. It contains n= ot the concrete algorithms for the processing of data but describes what to= do with the data, e.g. in a projection it states the attributes to deliver= , and in a join it gives the join predicates. A physical operator is one po= ssible implementation of an algorithm to process the operation. So, differe= nt physical operators can be provided for the same logical operator. Logica= l operators are translated by transformation rules to physical operators.= p>
A typical approach to describe queries is done by declarative query lang= uages like SQL. Odysseus also provides a stream optimized version of SQL na= med CQL. Because data stream queries are often hard to express with Select-= From-Where clauses, Odysseus also provides a more operator based query lang= uage named PQL. Within this language the logical operators are the basic bu= ilding blocks. Further information to PQL can be found in the corresponding= documentation The Odysseus Procedural Query Language (PQL) F= ramework.
Physical operators are divided into operators that add data to the syste= ms (sources), remove data from the system (sinks) and process data (pipes).= In a more query plan like view, the sources are operators with no input bu= t with output port, the sinks are operators with only inputs ports and the = pipes are both sources and sinks. Odysseus provides basic implementations f= or sources (AbstractSource), sinks (AbstractSinks) and pipes (AbstractPipe)= that must be used to create own operators. The abstract implementations pr= ovide most necessary common processing code to concentrate on special proce= ssing for the concrete operator. In the following we will demonstrate the c= reation of a simple route operator, that routes data tuples to different ou= tput ports depending on some predicates. The physical operators are connect= ed by a subscription.
The Odysseus framework calls the operator. Odysseus implements the open = - next - close Protocoll:
TODO: Interaction between sources and sinks
Open, next, close, transfer, process_open, process_next, process_clos= e
A rather simple way for the creation of user defined operators is to use= the UDO-PQL Operator. For further information see PQL The Od= ysseus Procedural Query Language (PQL) Framework