Introducing BAD-CQ
a. Active datasets
Active datasets are like regular datasets that can be
inserted/upserted/deleted with statements and fed with data feeds
directly. Records stored in active datasets contain an additional
active timestamp field (implemented using meta-records). The active
timestamp is assigned inside the storage, right before persistence.
This patch introduced new syntactic components to enable creating
active datasets. It also created a BAD query translator to make sure
all DML statements can operate on active datasets.
b. Continuous channels
Continuous channels are built on repetitive channels but provide
continuous query semantics. To ensure that, this patch introduced an
active timestamp manager on each node to manage channel execution
times locally. Active timestamp managers are a local class that is
tied to a JVM on a node. There is also an optimization rule for
ensuring continuous query semantics in a distributed environment.
c. Active functions
Active functions are used for helping users create continuous queries.
They were added through the extension APIs.
d. BAD Islands
As an application built on BAD-CQ, BAD islands show how we connect
data channels to data feeds and share data between different BAD
systems declaratively.
e. Cleanups and fixes
This patch also cleaned up the BAD codebase and introduced tests for
metadata, optimizer, and runtime. It fixed a type inferencing issue in
InsertBrokerNotifierForChannelRule when there is a group-by in the
query. Also, it optimized the broker notification delivery to use
separate threads.
Change-Id: I77263c3fedd03205b83fe13978649b33fccda11c
239 files changed