Curracurrong logo

Curracurrong

Curracurrong is a light-weight stream query processing engine designed for distributed environments, developed at the School of IT at the University of Sydney. The system architecture and implementation is intended to provide a good trade-off between productivity, flexibility, and energy-efficiency. Productivity is obtained with new query language for stream processing, where computation is represented in the form of a stream graph. Nodes in the stream graph represent computation elements called stream operators and edges represent FIFO channels between operators.

The model hierarchically composes stream graphs built from individual operators that may be filters, pipelines, and splitters-joiners, similar to other stream programming languages such as StreamIt. The system supports data rate annotations for stream operators that allows static computations of communication bandwidths. An extensible stream operator library offers flexibility in designing complex applications.

Curracurrong system has two main components: a server that works as a query processor; and run-time environment which has administrator, communicator, and scheduler. User-written queries are translated by the server and operators are energy-efficiently deployed on SunSPOT sensor nodes. Each SunSPOT node has run-time environment that receieves and sends administrative messages, communicates with other other nodes and schedules operator execution on the node. An example query and corresponding stream graph in Curracurrong would be:

            query Average =
                (Sense[node="1.1.1.1", rate=100] ->
                Select[field=3] ->
                AverageFilter[window=5] |
                Sense[node="1.1.1.2", rate=50] ->
                Select[field=3] ->
                AverageFilter[window=5] |
                Sense[node="1.1.1.3", rate=200] ->
                Select[field=3] ->
                AverageFilter[window=5])
			
StreamGraph

Some features of Curracurrong include:

  • In-network data processing
  • Energy-efficient operator placement
  • Time triggered query execution
  • Query visualization
  • Easily extendable built-in operator library
  • Easily extendable (custom sensors, custom data types, etc)

This work was sponsored by the grant "Computing with nearly-consistent data", Fekete A, Scholz B; Australian Research Council (ARC)/Discovery Projects (DP) DP1096445.