Database Reference
In-Depth Information
rays emanating from several microphone arrays intersect (“beam forming”),
it is possible to estimate the location of a calling marmot.
Clearly, expressing this kind of signal processing with relational filters and
aggregates is not feasible. Conventional DSMSs handle event processing over
streaming data, but don't provide a convenient way to write user-defined cus-
tom code to handle signal processing operations. In particular, they suffer from
an “impedance mismatch,” where data must be converted back and forth from
its representation in the streaming database to an external language like Java
or C++, or even to a separate system like MATLAB. Signal processing oper-
ations in these external languages are usually coded in terms of operations on
arrays, whereas most DSMSs represent data streams as sequences of tuples.
These sequences need to be packed into and unpacked from arrays and be
passed back and forth. The conversion overheads imposed by this mismatch
also limit the performance of existing stream processing engines when per-
forming signal-processing operations, constraining the applicability of these
existing systems to lower-rate domains.
11.2.3 WaveScope
To support these kinds of applications, we have developed a new program-
ming language called WaveScript and a sensor network runtime system called
WaveScope. 17 WaveScript is a functional programming language that allows
users to compose sensor network programs that perform complex signal and
data processing operations on sensor data.
WaveScript includes several noteworthy features. Its data model introduces
a new basic data type, the signal segment . A signal segment is a sequence
of isochronous (i.e., sampled regularly in time) data values (samples) from
a signal that can be manipulated as a batch. WaveScript natively supports
a set of operations over signal segments. These include various transforms
and spectral analyses, filtering, resampling, and decimation operations. An-
other important feature of WaveScope is that users express both queries and
user-defined functions (UDFs) in the same high-level language (WaveScript).
This approach avoids the cumbersome “back and forth” of converting data
between relational and signal-processing operations. The WaveScript compiler
produces a low-level, asynchronous dataflow graph similar to query plans in
traditional streaming systems. The runtime engine eciently executes the
query plan over multiprocessor PCs or across networked nodes, using both
compiler optimizations and domain-specific rule-based optimizations.
WaveScope allows programs to operate on named data streams, some of
which may come from remote nodes. To simplify programming tasks that in-
volve data from many nodes, programmers can group nodes together, creating
a single, named stream that represents the union or aggregate of many nodes'
data streams.
As with most DSMSs, WaveScope derives a number of benefits from the
use of a high-level programming model. Programmers do not need to worry
Search WWH ::




Custom Search