Flink Streaming SQL
0.核心概念
0.1 流 VS 表
0.2 动态表
动态表(Dynamic Table),就是数据会随着时间变化的表,可以想象成就是数据库中⼀张被不断更新的表。
动态表是虚拟的存在着,它并不需要实际的存储来落地。
0.3 流表⼆像性
我们发现流与表有非常紧密的关系,流可以看做动态表,动态表可以看做流。我们称之为流表二象性(duality)。
1.处理流程
流->动态表->持续查询->⽣成动态表(查询结果)-> 转化成流
1.1流转换为动态表
1.1.1 追加模式
1.1.2 更新模式
1.2 动态表的查询
1.2.1 连续查询
• 流式 SQL 可以想象成连续查询(Continuous Query),连续查询会⼀直运⾏,当每个数据到来,都会持续增量地更新计算结果,从⽽产⽣另⼀个动态表。⽽这个结果动态表(也就是流)会作为另⼀个 SQL
(连续查询)的输⼊接着计算,从⽽串起整个数据流图
• 连续查询作用于动态表并又会产⽣动态表;连续查询不会终⽌并会根据其输⼊表(动态表)上的更新来更新其结果表(动态表)
1.2.3 动态表转换为流
动态表可像传统表⼀样被INSERT、UPDATE、DELETE修改。
Flink的Table API & SQL支持三种⽅式编码动态表上的更改。