IoTDB is a time-series data management system and the data usually comes in a streaming way.
In the IoT area, when a data point comes, a trigger can be called because of the following scenario:
- (single data point calculation) the data point is an outlier point, or the data value reaches a warning threshold. IoTDB needs to publish the data point to those who subscribed the event.
- (multiply time series data point calculation) a device sends several metrics data to IoTDB, e.g., vehicle d1 sends average speed and running time to IoTDB. Then users may want to get the mileage of the vehicle (speed x time). IoTDB needs to calculate the result and save it to another time series.
- (Time window calculation) a device reports its temperature every second. Though the temperature is not too high, if it keeps increasing in 5 seconds, IoTDB needs to report the event to those who subscribe that.
As there are many streaming computing projects already, we can integrate one of them into IoTDB.
- If IoTDB runs on Edge, we can integrate Apache StreamPipes or Apache Edgent.
- If IOTDB runs on a Server, the above also works and Apache Flink is also a good choice.
The process is:
- User registers a trigger into IoTDB.
- When a data comes, IoTDB save it and check whether there are triggers on it
- If so, call a streaming computing framework to do something;
You may need to know:
- At least one streaming computing project.
- SQL parser or some other DSL parser tool.
You have to modify the source codes of IoTDB server engine module.
Difficulty: A little hard
|Support triggers (hooks)||Closed||Unassigned|
|Trigger module: ANTLR, logical operators, physical plans and authorization||Closed||Unassigned|
|Trigger module: API, executor and management services||Resolved||Unassigned|
|Trigger module: windowing utility||Resolved||Unassigned|
|Trigger module: sink utility||Closed||Unassigned|