The operation code (opcode) of an event record specifies the action to
perform on the underlying store of a window for that event.
In many Event Stream Processor use cases, events are independent of each
other: each carries information about something that happened. In these cases, a stream
of events is a series of independent events. If you define a window on this type of
event stream, each incoming event is inserted into the window. If you think of a window
as a table, the new event is added to the window as a new row.
In other use cases, events deliver new information about previous events.
The ESP Server needs to maintain a current view of the set of information as the
incoming events continuously update it. Two common examples are order books for
securities in capital markets, or open orders in a fulfillment system. In both
applications, incoming events may indicate the need to:
- Add an order to the set of open orders,
- Update the status of an existing open order, or,
- Remove a cancelled or filled order from the set of open
orders.
To handle information sets that are updated by incoming events, Event
Stream Processor recognizes the following opcodes in incoming event records:
- insert – Insert the event record.
- update – Update the record with the specified key. If no such record exists, it is a
runtime error.
- delete – Delete the record with the specified key. If no such record exists, it is a
runtime error.
- upsert – If a record with a matching key exists, update it. If a record with a
matching key does not exist, insert this record.
- safedelete – If a record with a matching key exists, delete it. If a record with a
matching key does not exist, do nothing.
All event records include an opcode. Each stream or window in the project accepts
incoming event records and outputs event records. Output events, including opcodes, are
determined by their source (stream, window, or delta stream) and the processing
specified for it.
Refer to the Streams, Windows, and Delta Streams
topics in the
Programmers Guide for details on how each interprets the
opcodes on incoming event records and generates opcodes for output
records.