Entity hierarchy for the STREAM system

There are a number of components in the implementation of our system: operators implement relational algebra operations such as joins and projections, queues hold tuples between operators, and synopses materialize collections of tuples. Each of these is a subclass of a generic Entity class. Each entity has a table of attribute-values pairs called its Control Table (CT for short), and each entity exports an interface to query and update its CT.

This file is automatically generated from the entity-descriptors.xml file used by the system to construct entities.

entity (abstract)
Extends
Parameters
NameData TypeDescription
publishes-statestring Does this entity publish its state to the state stream? To avoid a feedback loop, entities should not publish state to the state stream if they are themselves part of a query which contains the state stream in its FROM clause. Anything but "no" means "yes".
commentsstring A space for any comments the developer (or compiler) has about the entity. Ignored by the system.
monitorinteger Should this entity publish monitoring properties to the EntityUpdate stream?
queryinteger The ID of the query (if any) that this entity is associated with.
Abstract supertype of all entity types.


schema
Extendsentity
Parameters
NameData TypeDescription
column-typestring array type of the column - one of "INTEGER", "FLOAT", "BYTE", "CHAR"
column-leninteger array length of column - This is required only if column is of type "CHAR"
column-countinteger The number of columns in this schema
catalog-descriptionstring A human-readable version of the schema
A schema describes the format of data received from an input stream.


queue (abstract)
Extendsentity
Parameters
NameData TypeDescription
schemaschema The schema for tuples in this queue.
tuple-flowinteger Used by the rate of tuple flow monitor
Queues are used to pass tuples between operators.


object-queue (abstract)
Extendsqueue
Parameters
NameData TypeDescription
Abstract supertype of all arbitrary-sized-object queue types. Note that this queue does not support the StrTuple enqueue/dequeue interface.


var-len-obj-queue
Extendsobject-queue
Parameters
NameData TypeDescription
Object queues that can be used to pass arbitrary variable size objects between operators. The queue is implemented as a single page grabbed from the memory manager. Note that this queue does not support the StrTuple enqueue/dequeue interface.


interface-output-queue
Extendsobject-queue
Parameters
NameData TypeDescription
Object queue used by the programmable interface to get the results The operator InterfaceOutputOperator writes to it


fixed-len-obj-queue
Extendsobject-queue
Parameters
NameData TypeDescription
object-sizeinteger The (fixed) size of objects that are transferred in this queue.
Object queues that can be used to pass arbitrary fixed size objects between operators. The queue is implemented as a single page grabbed from the memory manager. Note that this queue does not support the StrTuple enqueue/dequeue interface.


stream-queue
Extendsfixed-len-obj-queue
Parameters
NameData TypeDescription
stream-namestring The name of the stream handled by this stream queue.
A queue that is used to receive the raw output of a stream. Tuples from the network manager are added copied into a stream queue for that stream.


simple-queue
Extendsqueue
Parameters
NameData TypeDescription
memoryinteger The number of tuples that can be stored at one time in this queue.
A simple implementation of a queue. Uses an array in the heap to store contents currently. We will make the implementation page-based soon. Not thread safe.


`
multiplier-queue
Extendssimple-queue
Parameters
NameData TypeDescription
stream-namestring The name of the stream handled by this multiplier queue.
sourceentity The relation-shepherd or stream-shepherd providing tuples to this queue
Wraps a simple queue. Does not add any functionality to simple queues. Multiplier queues are the source of tuple references (aka StrTuples), and not the actual tuples, from the Stream Shepherd.


synopsis (abstract)
Extendsentity
Parameters
NameData TypeDescription
Synopses store intermediate data generated executing the query plan.


tuple-synopsis (abstract)
Extendssynopsis
Parameters
NameData TypeDescription
schemaschema The schema for tuples in this synopsis
Interface for all synopses which are bags of tuples.


unmaterialized-synopsis
Extendstuple-synopsis
Parameters
NameData TypeDescription
A tuple-synopsis that does not materialize itself. It simply does allocate memory for the tuple data so that the tuple can exist in queues, but does not keep a reference to the page or any state regarding its content. As a result, all operations other than insertTuple() are no-ops.


shared-tuple-synopsis-store (abstract)
Extendstuple-synopsis
Parameters
NameData TypeDescription
Shared relational store.


shared-window-synopsis-store
Extendstuple-synopsis
Parameters
NameData TypeDescription
Shared relational store.


shared-rand-synopsis-store
Extendstuple-synopsis
Parameters
NameData TypeDescription
Shared store for multiple time-based, tuple-based, and now windows.


shared-time-synopsis-stub
Extendstuple-synopsis
Parameters
NameData TypeDescription
storeshared-window-synopsis-store The shared store.
ownerstring "true" if this stub is the owner, "false" otherwise
Stub to access shared store for multiple time-based, tuple-based, and now windows. Each stub corresponds to a specific window.


shared-tuple-synopsis-stub
Extendstuple-synopsis
Parameters
NameData TypeDescription
storeshared-tuple-synopsis-store The shared store.
ownerstring "true" if this stub is the owner, "false" otherwise
Stub to access shared relational store, including shared window stores.


partition-synopsis-store
Extendstuple-synopsis
Parameters
NameData TypeDescription
partition-bystring The columns to partition this synopsis by, each in the form "[StreamID:offset:type:length]" where type is one of i=INTEGER, f=FLOAT, c=CHAR
Shared partitioned synopsis (shared in the sense that it has a writer and multiple readers - not multiple partitioned window specifications)


partition-synopsis-stub
Extendstuple-synopsis
Parameters
NameData TypeDescription
storeshared-tuple-synopsis-store The shared store.
ownerstring "true" if this stub is the owner, "false" otherwise
Stub for access shared partition store


partition-wrapper
Extendstuple-synopsis
Parameters
NameData TypeDescription
storeshared-tuple-synopsis-store The shared store.
ownerstring "true" if this stub is the owner, "false" otherwise
Stub for access shared partition store


propeller (abstract)
Extendsentity
Parameters
NameData TypeDescription
child-propellerpropeller The child propeller which will be invoked after this propeller is invoked.
Abstract supertype of all propeller types.


join-propeller
Extendspropeller
Parameters
NameData TypeDescription
stream-numinteger The index of the stream/queue corresponding to the local synopsis.
predicatestring The predicate is a single predicate representing a join condition and is parsed by the propeller. A conjunction of join predicates is registered by using this attribute multiple times.
storetuple-synopsis The synopsis store to access each input relation.
stubtuple-synopsis The synopsis stub to access each synopsis store.
schemaschema
selectivity-estimated-predicatestring We estimate the selectivity of this predicate at run-time via sampling. The predicate is a single predicate representing a join condition and is parsed by the propeller.
Joins incoming tuples with a local synopsis.


output-propeller
Extendspropeller
Parameters
NameData TypeDescription
input-schemaschema array An array of schemas, one for each of the inputs to the propeller join.
numstreamsinteger Number of input streams.
output-storetuple-synopsis The synopsis store where the output relation is materialized.
output-queuequeue
Outputs the result of an n-way join into its output queue.


operator (abstract)
Extendsentity
Parameters
NameData TypeDescription
Abstract supertype of all operator types.


unary-operator (abstract)
Extendsoperator
Parameters
NameData TypeDescription
input-queuequeue The queue that this operator reads tuples from
output-queuequeue The queue where this queue sends its output
An operator with exactly one input and one output


binary-operator (abstract)
Extendsoperator
Parameters
NameData TypeDescription
left-input-queuequeue The first queue that this operator reads tuples from
right-input-queuequeue The second queue that this operator reads tuples from
output-queuequeue The queue where this queue sends its output
An operator with exactly two inputs and one output


terminal-operator (abstract)
Extendsoperator
Parameters
NameData TypeDescription
cqlstring The CQL for the query that generated this terminal operator
input-queuequeue The queue that this operator reads tuples from
Terminal operators sit at the top of query plans and have an input, but no outputs within the system.


seq-window
Extendsunary-operator
Parameters
NameData TypeDescription
part-storesynopsis array The partition stores used.
output-queuequeue array An array of output queues, one for each window specification.
shared-storesynopsis The shared store used.
typestring Used only when creating a new window: the type of the new window
sizeinteger Used only when creating a new window: the size of the new window
window-output-queuequeue Used only when creating a new window: the output queue for tuples in the new window
partition-bystring if this is a PARTITION window, the columns to partition by
A sequential window operator implements one or more time or tuple-based windows. You can register new time or tuple-based windows dynamically with this operator. To register a new window you need to specify: 1. the window type in ROWS (tuple), RANGE (time), NOW (now) (done using the "type" attribute) 2. the window size (done using the "size" attribute): - number of tuples for ROWS - number of seconds for RANGE 3. the ouptut queue for the +/- tuples in the window (done using the "window-output-queue" attribute) The type, size, and window-output-queue attributes must be in this order in the XML fragment describing a new window to be added to the sequential window operator.


shared-rel-op
Extendsoperator
Parameters
NameData TypeDescription
output-queuequeue array An array of output queues, one for each operator sharing this relation.
shared-storesynopsis The shared store used.
relation-output-queuequeue The output queue registered dynamically for tuples for a client operator.
input-queuestream-queue The input queue from the Network Manager.
This operator materializes a relation that is streamed to it as input. The relation can be shared among multiple client operators, each of which registers a queue with this operator at run-time. This class is the relational equivalent of the SeqWindow operator.


printer
Extendsterminal-operator
Parameters
NameData TypeDescription
A printer operator writes its tuples to standard output -- for testing purposes only.


interface-output
Extendsoperator
Parameters
NameData TypeDescription
input-queuequeue
output-queueobject-queue
This output operator is used by the programmable interface to the DSMS.


stream-glue
Extendsunary-operator
Parameters
NameData TypeDescription
cqlview-stream-namestring Name of the derived stream.
Connects the output from a stream CQLVIEW to the input of a shared window operator. This operator simply forwards each input tuple to the input queue of the shared window operator for that (derived) stream. The derived stream has to be explicitly registered before the CQLVIEW is registered.


rel-glue
Extendsunary-operator
Parameters
NameData TypeDescription
cqlview-relation-namestring Name of the derived relation.
Connects the output from a relational CQLVIEW to the input of a shared relation operator. This operator simply forwards each input tuple to the input queue of the shared relation operator for that (derived) relation. The derived relation has to be explicitly registered before the CQLVIEW is registered.


output
Extendsterminal-operator
Parameters
NameData TypeDescription
hostnamestring Hostname where the client is listening.
portinteger Port where the client is listening.
column-namesstring The column names for the client to display. The list should be comma-delimited, such as "R.name,R.num,S.name,S.num". This is an optional property.
An output operator sends tuples to a client over the network.


plan-shepherd
Extendsoperator
Parameters
NameData TypeDescription
tuple-sizeinteger The (fixed) size of tuples in the underlying stream.
input-queuestream-queue
The Plan Shepherd operator reads tuples from the "QueryPlan" stream which it gets from the StreamQueue for the "QueryPlan" stream. These tuples represent query plans. The plan shepherd enters these plans into the global query network.


command-shepherd
Extendsoperator
Parameters
NameData TypeDescription
input-queuestream-queue
One stop shop for commands sent to the DSMS.


stream-shepherd
Extendsoperator
Parameters
NameData TypeDescription
output-queuequeue array
tuple-sizeinteger The (fixed) size of tuples in the underlying stream.
add-multiplier-queuequeue Add the specified queue to the operator's output queue set.
remove-multiplier-queuequeue Remove the specified queue from the operator's output queue set.
input-queuestream-queue
The Stream Shepherd operator for a stream S reads tuples of S from the StreamQueue of S, stores each tuple in a synopsis, creates a reference (StrTuple) to the tuple, and copies the reference into each of the output queues.


relation-shepherd
Extendsoperator
Parameters
NameData TypeDescription
output-queuequeue array
tuple-sizeinteger The (fixed) size of tuples in the underlying stream.
add-multiplier-queuequeue Add the specified queue to the operator's output queue set.
remove-multiplier-queuequeue Remove the specified queue from the operator's output queue set.
input-queuestream-queue
The Relation Shepherd operator The relational dual of stream-shepherd. for a relation R reads tuples of R from the StreamQueue of R, stores each tuple in a synopsis, creates a reference (StrTuple) to the tuple, and copies the reference into each of the output queues.


select
Extendsunary-operator
Parameters
NameData TypeDescription
filter-condstring array A single predicate representing a filter condition.
predicatestring The predicate is a SQL-style condition which is parsed by the operator.
Outputs a subset of its input tuples based on a filter predicate.


project
Extendsunary-operator
Parameters
NameData TypeDescription
project-liststring A list of attributes to project, each in the form "[StreamID:offset:type:length]" where type is one of i=INTEGER, f=FLOAT, c=CHAR
Implements projection.


binary-join
Extendsbinary-operator
Parameters
NameData TypeDescription
synopsis-storetuple-synopsis array The synopsis store to access each input relation. Note: the order of the synopses must exactly match the order of the queues.
join-condstring array A single predicate representing a join condition.
predicatestring The predicate is a single predicate representing a join condition and is parsed by the operator. A conjunction of join predicates is registered by using this attribute multiple times.
output-storetuple-synopsis The join operator puts its output tuples into this relational synopsis.
join-selectivityinteger Join selectivity
An operator which performs a join over two streams or relations.


n-way-propeller-join
Extendsoperator
Parameters
NameData TypeDescription
synopsis-storetuple-synopsis array The synopsis store to access each input relation. Note: the order of the synopses must exactly match the order of the queues.
synopsis-stubtuple-synopsis array The synopsis stub to access each input synopsis store.
input-queuequeue array The input queues.
propellerpropeller array One propeller per input queue to handle tuples that arrive in that queue.
numstreamsinteger Number of input streams.
output-queuequeue
output-propellerpropeller
runtime-profilinginteger Set to true is we want to use run-time profiling to estimate, e.g., the selectivity of join predicates. Has to be turned on explicitly. False (i.e., 0) by default.
profiling-startup-intervalinteger To avoid start-up descrepancies during profiling, we can set the "profiling-startup-interval" to some non-zero. This setting will ensure that profiling will be started only after "profiling-startup-interval" tuples have been seen since the "runtime-profiling" was set to true. Default value is 1000 which will usually be much smaller than the window sizes.
selectivity-sampling-intervalinteger The default interval in number of tuples at which sampling must be done for estimating join selectivity. Ideally we would want to vary the sampling interval dynamically, on a per-stream basis, etc.
arrival-rate-sampling-intervalinteger The default interval in number of tuples at which sampling must be done for estimating the arrival rate. Ideally we would want to vary the sampling interval dynamically, on a per-stream basis, etc.
sample-window-sizeinteger The last "sample-window-size" samples are stored.
profile-output-queuequeue The collected statistics are output in this queue. The Optimizer is the consumer of this queue.
An n-way symmetric join.


antisemijoin
Extendsbinary-operator
Parameters
NameData TypeDescription
synopsis-storetuple-synopsis array The synopsis store to access each input relation. Note: the order of the synopses must exactly match the order of the queues.
join-condstring array A single predicate representing a join condition.
predicatestring The predicate is a single predicate representing a join condition and is parsed by the operator. A conjunction of join predicates is registered by using this attribute multiple times.
An anti-semijoin operator


union
Extendsbinary-operator
Parameters
NameData TypeDescription
An implementation of a bag union


plan-shepherd
Extendsoperator
Parameters
NameData TypeDescription
input-queuequeue
tuple-sizeinteger
Processes plans that arrive in the "QueryPlan" stream.


command-shepherd
Extendsoperator
Parameters
NameData TypeDescription
input-queuequeue
Processes commands that arrive in the "command-stream" stream.


aggregate
Extendsunary-operator
Parameters
NameData TypeDescription
aggregate-liststring A list of columns (in "[StreamID:offset:type:length]" format) that are aggregated by this operator.
aggregate-opsstring A list of aggregation operations over the aggregate-list columns, where 1=AVG, 2=MIN, 3=MAX, 4=COUNT, 5=SUM
group-bystring A list of columns that are used to group tuples
input-storetuple-synopsis The synopsis where input is stored (if necessary)
output-storetuple-synopsis The synopsis where output from this operator is stored.
Implements grouped aggregation.


duplicate-eliminate
Extendsunary-operator
Parameters
NameData TypeDescription
Duplicate elimination operator.


x-stream (abstract)
Extendsunary-operator
Parameters
NameData TypeDescription
Parent of i-stream, r-stream, and d-stream


i-stream
Extendsx-stream
Parameters
NameData TypeDescription
Implements ISTREAM semantics. Sends inserts while dropping deletes.


r-stream
Extendsx-stream
Parameters
NameData TypeDescription
Implements RSTREAM semantics. Sends snapshot of its relation at every instant.


d-stream
Extendsx-stream
Parameters
NameData TypeDescription
Implements DSTREAM semantics. Sends deletes while dropping inserts.


relation-materializer
Extendsunary-operator
Parameters
NameData TypeDescription
shared-storesynopsis The synopsis where tuples of the materialization are stored.
Materializes the relation that is specified by tuples read from its input queue.