Glossary

Aggregation Function

A function that build a result value out of several input values. The result is finalized and output when some given condition is met (see commit).

Clause

Part of an operation. Especially, the aggregate operation has a `select` clause, a `where` clause, a `group-by` clause, etc...

Commit

When several incoming tuples are aggregated into a single group, a condition must be specified that, when met, will trigger the output of the aggregated value. This is called to _commit_ the group. What happens to that group after the result tuple has been output depends on the flush clause; By default it will merely be reset (tumbling windows), but it is also possible to resume the aggregation from where it was or to expels oldest events (sliding window) or even other behaviors.

Event

An individual message to be processed. In Ramen events are tuples. `Event`, `message` and `tuple` are used interchangeably.

Fully Qualified Name

The fully qualified name of an operation is the name of the program it belongs to, followed by a slash ("/"), followed by the operation name. Those FQ names are globally unique.

Group

Within the context of an operation, a `group` refers to an aggregation group, ie. the set of tuples sharing the same key and aggregated together. This group lives (in RAM) until it is committed, when it can be deleted or downsized before resuming the operation. Aggregation groups are therefore closely related to the concept of windows.

Notification

In addition to tuples, workers also output so called `notifications` using the `notify` clause. Those follow a particular format and are not intended for other workers but for the alerter process, that may eventually send an alert to users.

Nullable

Said of a tuple field that can hold the NULL value. Most fields should not be nullable as it implies expensive runtime checks.

Operation

An operation is a statement in the SQL-inspired specific language, describing how to produce some output from some inputs. Operation have names that must be unique within a program. Every operation has an input and an output type, which is the types of the tuples they consume and produce. Operations can receive tuples from any other operations of the same program or from any operations of any other program already compiled.

Program

Containing one or several operations. This is the smallest subset of the configuration that can be edited/compiled/started/stopped. Inside a program functions are allowed to form cycles. In addition to a set of operations, a program also has a name. Those names must be globally unique.

Ring-Buffer

Fixed sized FIFO buffer used by workers to exchange tuples.

Stateful function

A function that requires an internal state in order to output a result. Aggregation functions are a special case of stateful functions.

Stateless function

A function that requires nothing more than its parameters to compute its result. For instance, all arithmetic functions are stateless.

Stream Processor

A software which purpose is to perform user defined computations on a theoretically infinite stream of data. See: https://en.wikipedia.org/wiki/Data_stream_management_system.

Timeseries

A time series is a series of values indexed by time. Timeseries can be extracted from Ramen if additional information about event times are provided. See: https://en.wikipedia.org/wiki/Time_series.

Tuple

What is consumed and produced by functions. A set of values, each of its own type. Those values are called "fields" and beside its type a field also has a name that must be unique in the tuple. For instance, { "name": "John Dae"; "age": 42; "is_male": true } is a tuple with 3 fields (here represented in JSON for convenience; Ramen does not encode tuples as JSON internally).

Windowing

In a stream processor, _windowing_ refers to how incoming events are batched for aggregation. Usually windows are either sliding or tumbling, with variations (see for instance this picture). Ramen is rather unique in this regard that it has no notion of a window, especially not one bound to time, since it has no preconception of time. Instead, Ramen has explicit conditions for when to stop an aggregation (to commit the group), and what to keep from one aggregation to the next. This makes it possible to implement many windowing behavior, including tumbling and sliding windows.

Worker

One of the possibly many executables generated and run by Ramen to carry out some operation on the data stream.