各位大佬架构师们,紧急求助
我们有个报表类的需求,目前架构设计如下
数据量:1TB 左右 数据流转流程 业务数据->( kafka 、flink )->数据仓库( MySQL)->通过 ETL 抽取->Clickhouse->报表呈现
由于我们报表对实时性要求比较高,而且在生成报表的时候涉及到的表多、逻辑也复杂,不得已我们将数据仓库的数据原封不动的同步到了 clickhouse ,后面在进行报表生成计算的时候,全部查 clickhouse 的数据最后生成大宽表。
我知道 clickhouse 是列式存储,对数据得删除和更新都是重量级操作,而我们的数据都是业务数据,更新比较频繁,所以我们采用了先删后插的策略,alter table delete (同步删非异步)。
这就导致我们的数据更新周期最低也要 1 个小时
之前考虑个几种方案
- 使用 ReplacingMergeTree 引擎,只追加数据,不删除,然后查询通过 final 或这 argMax 取最新数据,但是这有两个问题,一:final 没办法进行表关联查询, 二:argMax 对我们改动太大太大,表字段页表字段也比非常多( 100+)
- 对于实时性要求高的报表 不再去查 clickhouse , 直接查数据仓库
我比较中意第二种,因为我是在想不出更好的方案了,想请教下各位架构师们有没有比较好的方案
在此拜谢
