弊端:
? ? ? ? 虽然缓存可以减轻维表负担,但是如果事实表数据量很大,每秒千万条,维度表只有百万条,也就是说 你会看到大量的无法关联的数据仍然需要查询维度表.? cache缓存千万数据量内存压力又比较大, 那么怎么减轻维表数据库压力,还能做到低延迟.
以往双流join ; a join b,默认两侧状态都一直保留,虽然可以通过??table.exec.state.ttl? ?配置全局状态过期时间,但是不适合维度表join的场景.
新思路:?
a join b(维度表)? 既然新版本支持了算子级别的state,那么我们配置a的stateTTL是0,立马失效;
b的state配置为永久,即维度表数据永久不失效. 这里的b表需借助flinkCDC通过维表全量数据和后续增量过来,如果你们以前是hbase,这种方法不适合. 这样做到了状态存储了全量维表数据(前提维度表数据量不能太大)??
总结: 维表支持cdc 且数据量不会太大(state存的下 且性能够用) 则可以用方法2
问题:?
[FLINK-34001] doc of "Configure Operator-level State TTL" error - ASF JIRA
目前测试发现 文档写两侧配置ttl=0ms表示不保留状态,但是实际测试发现保留了两侧的状态,且永久保留,目前等待jira回复