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应用实战-物化视图在微信的实践的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据中台应用实战50篇(一)-企业级数据
- 下一篇: Java面试题目解析-如何解决Java性