4万字长文ClickHouse应用实战-物化视图在微信的实践

Posted 文宇肃然

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了4万字长文ClickHouse应用实战-物化视图在微信的实践相关的知识,希望对你有一定的参考价值。

前言

ClickHouse广泛用于用户和系统日志查询场景中,借助腾讯云提供基础设施,微信也在分阶段逐步推进clickhouse的建设和应用,目前作为基础建设的一部分,主要针对于OLAP场景,为业务方提供稳定高效的查询服务。在业务场景下,实时事件流上报可能会在不同的日志,以不同的格式、途径写入到clickhouse。在之前的使用中,通过查询多个日志表join实现多个指标的整合。用传统JOIN方式,我们遇到如下困难: 1.每个查询会有非常长的代码,有的甚至1500行、2000行sql,使用和理解上特别痛苦; 2.性能上无法满足业务诉求,日志量大会爆内存不足; 如何将这些数据进行整合,以ClickHouse宽表的方式呈现给上层使用,用户可以在一张表中查到所需的所有指标,避免提供多表带来的代码复杂度和性能开销问题?本文将重点介绍如何通过物化视图有效解决上述场景的问题。在介绍之前,先铺垫一下物化视图的简单使用,包括如何创建,如何增加维度和指标,如何结合字典增维等场景。

准备工作

很多情况下,没有场景和数据,就很难感同身受的去了解整个过程,所以在写这篇文章前,利用python的Faker库先生成一些模拟数据,模拟真实场景,以数据入手,来介绍关于物化视图的一些使用经验。环境:wsl单节点 centos7 版本:21.3.12.2-lts 数据库: ods,dim,dwm,dws,test 环境相关配置以及本文后续提到代码和模拟数据,均已上传到github的个人项目中 https://github.com/IVitamin-C/clickhouse-learning,供参考。如有问题,可以提issues或者私信我。

用户维度数据

通过代码生成15

以上是关于4万字长文ClickHouse应用实战-物化视图在微信的实践的主要内容,如果未能解决你的问题,请参考以下文章

clickhouse:在启动时创建物化视图(docker)

OpenCV-Python实战——OpenCV图像运算(❤️万字长文,含大量示例❤️)

clickhouse-物化视图

为啥我们不能在 clickhouse 的另一个视图之上制作物化视图?

OpenCV-Python实战——OpenCV常见图像处理技术(❤️万字长文,含大量示例❤️)

无缝更改ClickHouse物化视图SELECT逻辑的方法