暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

ClickHouse 在 DMP 中的应用

迷恋晓峰 2020-01-16
577
只争朝夕,不负韶华。
2020年第一篇,回顾过去,展望未来。由于个人原因,2019年未能产出较多高质量的推文,感谢一直以来关注我的朋友们。在此,立下一个 flag:2020年每月至少更新一篇。努力做一名有思想的程序员。
2019年7月份的时候写过一篇“初实ClickHouse”,简单介绍了 ClickHouse的基本概念及应用场景。为了更好的服务读者,本篇将更加深入的探究 ClickHouse 在实际场景中的应用。

DMP 数据管理平台(Data Management Platform)

DMP 重点在于明细数据的整理,其基础是用户画像。用户画像相当于对用户进行打标签,是基于人的属性和行为等,经过抽象的状态记录。

一个DMP系统主要有哪些功能模块?

    1. 数据接入
    2. 人群管理(清洗、整合、计算、挖掘)
    3. 多维度洞察分析
    4. 接投放

存在问题:

作为广告行业中的产品和运营人员,最最苦恼的莫过于报表延迟数小时甚至更久,更有甚者写一条SQL洞察几个标签需要等待好久,有时可能会由于 SQL 语法等小问题造成和报表结果不一致,投放人员写 SQL 跑人群包等待时间久,研发人员最苦恼的则莫过于排查数据结果是否准确。

简单总结如下:

    1. 指标口径不统一
    2. 数据无法回溯
    3. 稳定性不够

调研分析:

这里主要评估了几种常见的 OLAP 引擎。

Druid:是一个实时处理时序数据的OLAP数据库,因为它的索引首先按照时间分片,查询的时候也是按照时间线去路由索引。(成熟度不够,比较重)

Kylin:核心是Cube,cube是一种预计算技术,基本思路是预先对数据作多维索引,查询时只扫描索引而不访问原始数据从而提速。(数据回溯不方便,需依赖其他Hadoop等组件,SQL支持有限)

ClickHouse初实ClickHouse (丰富的SQL函数,不依赖其他组件,高效利用CPU计算,向量化查询

根据我们典型的业务场景,最终选择以 ClickHouse 作为底层的 OLAP 引擎。

解决方案:

针对以上这些常见的问题,我于2019年9月对整体架构进行了优化和改进。

整体架构:

洞察分析架构

    • 优化前:
    • 优化后:


优化效果对比,从下表可以看出,查询效率显著,且优化后架构以 ClickHouse 为引擎,不需依赖 Hadoop 等组件,不再消耗资源。原本需要起一个 Spark Job 进行复杂逻辑计算,洞察分析;借助 ClickHouse 丰富的 SQL 函数即可实现洞察分析。


优化前
优化后
人群包计算
20min
1min
洞察分析
20min
2min

贴几个牛逼的 ClickHouse 函数:

    • arrayJoin
    • arrayPopFront
    • arrayPushBack
    • arrayDistinct
    • hasAll
    • hasAny
    • ......

下一阶段将会增加实时分析链路的整合,提供更实时、更细粒度的洞察分析功能,提供更完备的数据洞察能力,支持留存、智能分析等,让平台更具高性能。完善整体架构,可以更便捷的嵌入到其他系统中

最后,提前预祝大家新年快乐!

文章转载自迷恋晓峰,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论