一、时序数据及其特点
时序数据(Time Series Data)是基于绝对稳固频率继续产生的一系列指标监测数据,比方一年内的道琼斯指数、一天内不同工夫点的测量气温等。时序数据有以下几个特点:
- 历史数据的不变性
- 数据的有效性
- 数据的时效性
- 结构化的数据
- 数据的大量性
二、时序数据库根本架构
针对时序数据的特点,时序数据库个别具备以下个性:
- 高速的数据入库
- 数据的生命周期治理
- 数据的流解决
- 高效的数据查问
- 定制的数据压缩
三、流计算介绍
流计算次要是指针对实时获取来自不同数据源的海量数据,通过实时剖析解决,从而取得有价值的信息。常见的业务场景包含实时事件的快速反应,市场变动的实时告警,实时数据的交互剖析等。流计算个别包含如下几方面的性能:
1)过滤和转换(filter & map)
2)聚合以及窗口函数(reduce,aggregation/window)
3)多数据流合并以及模式匹配(joining & pattern detection)
4)从流到块解决
四、时序数据库对流计算的反对
- 案例一:应用定制化的流计算 API,如上面例子所示:
from(bucket: "mydb")
|> range(start: -1h)
|> filter(fn: (r) => r["_measurement"] == "mymeasurement")
|> map(fn: (r) => ({r with value: r.value * 2}))
|> filter(fn: (r) => r.value > 100)
|> aggregateWindow(every: 1m, fn: sum, createEmpty: false)
|> group(columns: ["location"])
|> join(tables: {stream1: {bucket: "mydb", measurement: "stream1", start: -1h}, stream2: {bucket: "mydb", measurement: "stream2", start: -1h}}, on: ["location"])
|> alert(name: "value_above_threshold", message: "Value is above threshold", crit: (r) => r.value > 100)
|> to(bucket: "mydb", measurement: "output", tagColumns: ["location"])
- 案例二:应用类 SQL 指令,创立流计算以及定义流计算规定,如下:
CREATE STREAM current_stream
TRIGGER AT_ONCE
INTO current_stream_output_stb AS
SELECT
_wstart as start,
_wend as end,
max(current) as max_current
FROM meters
WHERE voltage <= 220
INTEVAL (5S) SLIDING (1s);