请问下各位大佬们,基于以下场景,我Doris该怎么处理和解决??困扰了自己挺长时间的

Viewed 147


我是用Doris开发了一个自助的BI系统,现在描述下我的场景和实际存在的问题:

  1. A表、B表、C表三表通过一定的条件进行关联后得到D表(关联 =>左、右关联、全关联、上下合并等)
  2. D表再通过一定的聚合计算得到E表 (聚合计算 => 计数、求和、平均数、最大、最小值等)
  3. E表还可以再跟F表进行关联得到新的数据表。

当前模式:
我通过A、B、C三表关联得到的D表是一个物理表(新的大宽表D表),并不是表视图view,因为后期有发现如果是表视图,当数据量大的话查询会非常慢,虽然表视图可以不用关心前面三张表的数据的新增和修改的问题。然后再通过这张大宽表去sum或者count去计算得到的数据再存储到新的聚合物理表供仪表板查询。以此类推可以继续配置下去。
我的问题:
由于我是三表关联后的大宽表,变成需要处理去A、B、C表的增量更新数据,才能够保证D表是能进行增量更新的。但是实际这种自助型的BI系统很难处理三表关联后的大宽表D表的增量更新,而且还很难做增量计算。也因此导致我每次A、B、C表有数据更新,我都要清除D表,再重新将三张表关联的结果再插入D表,而且后面的表也是要跟着删除和插入操作,层级越多,这样的模式也是极具消耗性能的。有考虑过物化视图,但是物化视图又不能嵌套,而且条件字段是固定的,实际仪表板查询的统计结果字段的条件可能是不固定的。请问下大佬们,在这种自助型BI系统,如果我用Doris,有没有比较好的具体解决方案来处理类似的问题??实现多表关联的增量更新以及增量计算??

3 Answers

我理解异步物化视图应该能解决你的问题。

异步物化视图是基于预计算的,表的列和条件是固定的,而自助BI系统实际统计的条件列并不完全固定,而且如果一张表需要统计的列数据过于多的话,物化视图数量也会变多。而且如果只是单纯的多表关联没有做统计计算的话,也还是用物化视图吗?还是用什么存储合适?大佬们?而且如果我A表做了物化视图,B表做了物化视图,但是我现在又要A和B的物化视图的统计结果合并或者关联起来,再做一次物化视图得到两个的统计结果,这个时候怎么办?物化视图是基于物理表的。

你这种要把ABC洗成一个大宽表的场景,为什么不考虑clickhouse?。
doris的话,我感觉你就不需要洗成D表,直接ABC join关联查询。或者 把ABC按照某种关系直接聚合到E表。