Cost-Based Optimization of Integration Flows - Datenbanken ...
Cost-Based Optimization of Integration Flows - Datenbanken ...
Cost-Based Optimization of Integration Flows - Datenbanken ...
- No tags were found...
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
2.3 <strong>Integration</strong> Flow Meta Model<br />
Flow Meta Model<br />
According to our classification <strong>of</strong> integration flows, our flow meta model defines a plan P<br />
<strong>of</strong> an integration flow as a hierarchy <strong>of</strong> sequences with control-flow semantics that uses<br />
instance-local, materialized intermediates.<br />
In detail, the flow meta model exhibits an instance-based execution model, which means<br />
that each incoming message m i or scheduled time event e i (in case <strong>of</strong> plans that are initiated<br />
by an internal scheduler) conceptually initiates a new instance p i <strong>of</strong> a plan P .<br />
This instance is then executed within a single master thread (except for modeled parallel<br />
subflows) such that no queues between operators are required. As a consequence <strong>of</strong> this execution<br />
model, a plan instance p i has a local state, while a plan P is stateless by definition,<br />
which stands in contrast to standing queries in DSMS. With these control-flow semantics,<br />
both the data flow and the control flow can be appropriately described because data dependencies<br />
as well as temporal dependencies are expressible. The single operators use<br />
local messages as variables (data dependencies), while edges between operators describe<br />
the temporal order <strong>of</strong> these operators. Similar types <strong>of</strong> instance-based process models are<br />
typical for workflow-based integration systems [BPA06, OAS06, WfM05]. Putting it all<br />
together, a plan <strong>of</strong> an integration flow is defined as follows:<br />
Definition 2.1 (Plan). A plan P <strong>of</strong> an integration flow is defined with P = (o, c, s) as<br />
a 3-tuple representation. Let o = {o 1 , o 2 . . . , o m } denote a sequence <strong>of</strong> operators, let c<br />
denote the context <strong>of</strong> P as a set <strong>of</strong> local message variables, and let s denote a set <strong>of</strong><br />
services s = {s 1 , s 2 . . . , s l } that represent outbound adapters. An instance p i <strong>of</strong> a plan<br />
P , with P ⇒ p i , executes the sequence <strong>of</strong> operators exactly once. Each operator o j has a<br />
specific type as well as a unique node identifier nid. We distinguish between atomic and<br />
complex operators, where complex operators recursively contain sequences <strong>of</strong> operators with<br />
o j = {o j,1 , o j,2 . . . , o j,m ′}. A single operator can have multiple input variables and multiple<br />
output variables. Each service s i contains a type, a configuration and a set <strong>of</strong> operations.<br />
Our flow meta model includes specific operator types for integration flows in order<br />
to describe local processing steps and the interaction with external systems. In detail,<br />
this flow meta model defines a set <strong>of</strong> interaction-, control-flow-, and data-flow-oriented<br />
operators by combining common process description languages with the relational algebra.<br />
We use the min-max notation [KE09] to describe the minimal and maximal number <strong>of</strong><br />
input and output messages <strong>of</strong> each specific operator type. In addition, we identify complex<br />
operators that recursively contain arbitrary other operators.<br />
The interaction-oriented operators describe the interaction between the integration platform<br />
and the external systems. These operators use adapters in order to encapsulate the<br />
Table 2.1: Interaction-Oriented Operators<br />
Name Description Input Output Complex<br />
Invoke<br />
Receive<br />
Reply<br />
Actively write/read data to/from<br />
external systems<br />
Passively receive a message from an<br />
invoking client system (listener)<br />
Send a result to the invoking client<br />
system<br />
(0,1) (0,1) No<br />
(0,0) (1,1) No<br />
(1,1) (0,0) No<br />
23