This page lists some of the features and components that are provided by Odysseus. See How to install new features for explanation of how to install a new feature.
Notice that this list is neither complete nor may contain some functions that are not working at the moment. We distinguish between core concepts that are generally given by its framework architecture and additional features that use the framework to extend Odysseus with new concepts and functionalities.
The admission control pays attention to the system load when new queries are added. For example, if the system load is too high, a new query could be refused by the system. For this, it estimates the load of a query by measuring the selectivity and data distribution.
The action feature allows to invoke some actions via web service - e.g. send a command to an actuator
The benchmark feature offers some operators that are able to measure, e.g. the latency for a given query plan. Furthermore, there exists a benchmark runner that can start Odysseus and run some queries several times.
The CEP in these terms provides the possibility to recognize patterns. This can be used, for example, if you want to recognize if a value raises up for some time until it falls for 30%. For this, there is a CEP operator available that can be configured via a SASE+ pattern language
Further Information about theĀ SASE.
The context feature provides a context store that can be used to hold current valid status (e.g. the door is currently open). A store and enrich operator is provided for modifying the store via streams.
The RCP feature provides a user interface for Odysseus and is also called "Studio". Besides an editor for running Odysseus Scripts, it allows visualizing streaming data via different charts, tables or lists. It also gives the possibility to show current status like running queries, installed sources, known users or the visualization of the current query plan. Furthermore, the RCP is also extendable with new views like tables, charts or own views.
The cost model measures some statistics to estimate the behavior of an incoming stream and the selectivity of operators. This allows one to estimate the cost of query plans. This can be used, for example, in the admission control or also for optimization techniques.
Although Odysseus is designed for streaming data, there could be also some static data that is (usually) stored in a database. Therefore, this feature provides drivers and interfaces for opening connections e.g. to a MySQL, Oracle or PostgreSQL database. Furthermore, there are for the one hand a sink and a source operator to write or read static data as streams from the database. For the other hand, there is an enrich operator to enrich streaming objects with static data from a database.
This feature allows the priorization of processing object, e.g. when there are alerts. If this feature is enabled and there are elements with a higher priority than other (normal) ones, they can overtake the normal elements to be processed faster.
The KeyValue Feature allows reading, process and write data as key-value pairs. It includes also wrappers for JSON and BSON data handling. (more information)
This feature provides concepts for learning from data streams. Besides clustering and classification, there exists also a concept for learning frequent patterns from the stream.
This feature bundles all available recovery techniques for the non-distributed version of Odysseus. Among other things it contains techniques for a gap recovery (at-most once), a rollback recovery (at-least-once) and a precise recovery (exactly once).
This featureĀ encapsulates concepts to use Odysseus in a distributed network containing multiple machines.
This feature distributes Odysseus over a network of peers
This feature allows the processing of discrete and continuous probabilistic values.
With this feature, it is possible to write "user defined aggregates" and "user defined functions" in several script languages like Java-Script or Ruby.
As mentioned above, the scheduling feature installs several scheduling mechanism like a priority-based or an aurora-based scheduling
Security punctuations are points in a data streams that tells the processing who is allowed to read the data. Thus, the stream itself can define rights like "as from now you are not allowed to see the next 100 tuples".
This feature allows the definition of service level agreements, which is for example used for an SLA based scheduling
Streaming SPARQL is an extension to SPARQL for querying on RDF data streams
The spatial feature introduces spatial data types like points, lines, polygons, etc., and defines some functions on them, e.g. covers, crosses etc. Thus, a geographic processing is possible.
The testing feature runs Odysseus, starts some predefined queries, inputs some data and checks, if the output is as expected. Thus, this can be seen like unit/black box testing
The Interval Feature adds data types and functions to work with intervals.
As mentioned above, Odysseus has an access operator framework that allows to build different types of adapters. This feature provides some predefined adapters, for example for CSV, Files, HTML, JSON, NMEA, Google Protobuf, RS232 (serial port), TCP socket or Twitter. Furthermore, there is a set of handlers for data handling like for integers or strings etc. There are also concepts for a push and a pull based processing.
The XML Feature contains different operators for processing XML documents.