Ramen Documentation
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).
Part of an operation. Especially, the aggregate operation has a `select` clause, a `where` clause, a `group-by` clause, etc...
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.
An individual message to be processed. In Ramen events are tuples. `Event`, `message` and `tuple` are used interchangeably.
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.
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.
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.
Said of a tuple field that can hold the NULL value. Most fields should not be nullable as it implies expensive runtime checks.
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.
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.
Fixed sized FIFO buffer used by workers to exchange tuples.
A function that requires an internal state in order to output a result. Aggregation functions are a special case of stateful functions.
A function that requires nothing more than its parameters to compute its result. For instance, all arithmetic functions are stateless.
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.
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.
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).
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.
One of the possibly many executables generated and run by Ramen to carry out some operation on the data stream.