作者:易点天下数据平台团队
易点天下是一家技术驱动发展的企业国际化智能营销服务公司,致力于为客户提供全球营销推广服务,通过效果营销、品牌塑造、垂直行业解决方案等一体化服务,帮助企业在全球范围内高效地获取用户、提升品牌知名度、实现商业化变现。
目前,易点天下累计服务客户超过家,其中包括华为、阿里巴巴、腾讯、网易、字节跳动、百度、快手、爱奇艺、SHEIN、Lazada等知名企业。
易点天下始终秉持"科技使世界变得更平"的企业使命,积极采用大数据和人工智能技术来落地和推动业务的发展。
随着公司业务的扩展,我们的数据分析工作遇到了一些痛点:
1、数据处理需求日益增多:每天需要处理几十T、近千亿的数据量;
2、数据分析的复杂度提高:如用户留存、LTV这一类的复杂指标,往往需要多表关联查询和实时查询,目前应用的组件不能满足业务的查询需求;
、技术组件较多:公司有多个数据分析平台,采用的技术组件也非常多,包括ClickHouse、Kafka、Flink、Spark、Hive等,运营维护成本较高。
4、当前架构基本以离线为主,实时数据处理架构薄弱。
经过现状分析后,我们开始设计数据仓库的标准化规范,并寻找一款集实时离线为一体的数仓统一解决方案,对数仓进行统一规划和建设。
#01数仓建设规范
我们从数据分层、业务类和数据域定义、数据指标、数据模型规范、模型衡量指标五个方面进行了数仓的规范建设。
1、数据分层:包括数据引入层ODS、明细数据层DWD、汇总数据层DWS、数据应用层ADS及维度层DIM。
2、业务类和数据域定义:此定义主要用于规范数据仓库处理数据的范围,以及处理数据的业务类型。
、数据指标规范:包括原子指标(如点击、访问、消费金额等)、复合指标(如点击率、跳出率、投资回报率等)、派生指标(如7天账户消费金额、去年账户余额总和等)。
4、数据模型规范:包括命名规范、存储规范、数据规范三个方面;统一规范的数据模型能大幅提升开发维护效率,避免不必要的数据质量问题。
5、模型衡量指标:包括命名规范性和数据完整性、中间层表的增长比例、应用层ADS跨层访问(穿透)、较多的ADS表共性逻辑未下沉、应用层跨集市依赖五个方面。
#02技术选型
在对数仓进行了标准化规范设计后,我们需要一个集实时离线为一体的数仓统一解决方案,通过数仓建设,来解决以下问题:
数据存储的规范性数据模型的复用性数据模型的耦合性数据的完整性数据查询效率数据成本可控
基于此,我们对市面上常见的数据库产品做了选型对比:
1)查询性能对比
我们主要对ClickHouse和StarRocks的查询性能做了对比,在SSB单表和用户经常碰到的低基数聚合场景下对比了StarRocks和ClickHouse的性能指标。采用一组16core64GB内存的云主机,在6亿行的数据规模进行测试。
得益于向量化执行引擎、优秀的CBO优化器、物化视图、RuntimeFilter等各方面的优化,StarRocks的查询性能表现非常优异,下面测试为各种引擎在不同SQL下花费的时间,
ClickHouse的整体查询时间是StarRocks的2.26倍。
图1:各种引擎在不同SQL下花费的时间
图2:StarRocks通过实现全面向量化引擎,按照列式的方式组织和处理数据,充分发挥了CPU的处理能力
2)使用与运维对比
除了查询性能,我们从使用成本、易用性、运维成本等方面,对比了几款比较热门的产品,最终我们计划将基于ClickHouse等其他数据库产品的查询迁移到基于StarRocks来构建数据仓库。
#0技术架构
数据平台目前处理的数据涉及公司多个产品,每日处理全球增量数据几十T,近千亿条记录,跨云跨地域的数据也给数据处理带来不少挑战。
目前我们已经针对BI系统开展了基于StarRocks的数据仓库的建设,随着经验的积累,后期会推广到数据平台所有项目的数据场景中。
目前数据平台以实时流和离线处理两条方式同时向StarRocks数据仓库中进行数据Load。下图是目前数据平台在数据分析中的主要流程架构,如图所示,架构中我们自研了数据治理平台(DataPlus)用于数据监控提高数据质量,维护元数据血缘等数据的拓扑结构,自动化建模。另外我们还自研了分布式的跨云调度系统(EasyJob),用于系统便捷地处理多云环境下的数据依赖和调度。
离线数据导入通过EasyJob定时调用BrokerLoad的方式导入StarRocks。
通过DataPlus系统,我们对StarRocks中的数据和云存储数据进行了定时的一致性校验,保证数据的一致性。
我们一直寻找一种实时和离线一体的数据处理解决方案,实时离线数据处理完后会进入StarRocks进行全流程建模,基于StarRocks进行湖仓一体结构的搭建。
最底层ODS基于外部数据源建立,数据存储在外部云存储上例如OSS,S,ODS等,然后通过调度系统定时触发上层表的生成,另外,DWS、ADS的部分表模型,也可以借助于物化视图方式实现,提升构建和查询效率。
整体数据流动架构如下:
StarRocks能够支持秒级的导入延迟,提供准实时的服务能力。StarRocks的存储引擎在数据导入时能够保证每一次操作的ACID。一个批次的导入数据生效是原子性的,要么全部导入成功,要么全部失败。并发进行的各个事务相互之间互不影响,可以提供SnapshotIsolation的事务隔离级别。
StarRocks存储引擎不仅能够提供高效的Append操作,也能高效的处理Upsert类操作。使用Delete-and-insert(Merge_on_write)的实现方式,通过主键索引快速过滤,消除了读取时Sortmerge操作,同时还可以充分利用其他二级索引。在大量更新的场景下,仍然可以保证查询的极速性能。
#04智能数据建模
通过元数据、数据血缘体系的建立,未来我们可以通过让建模规范、建模质量等规则自动化,形成线上系统的自动化建模功能,自动化建模生成标准SQL,最终在StarRocks中定时执行生效。下图是建模过程和DataPlus中功能的映射。建模自动化的好处就是可以限制人为建模的不规范操作,最大程度的优化模型和成本。
模型定义后,对模型生成效率的优化至关重要,不一样的解决方式会影响模型的查询生成效率,模型的复用度也会影响用户使用体验。
我们在建模中针对下面三个模型进行了基于StarRocks的重点构造,大大提高了查询效率。
物化视图
在数仓建模中我们大量采用了物化视图来加速和生成DWS以上数据层,StarRocks当前支持单表同步、多表异步以及对SQL的透明改写能力,未来还会提供多表同步等更多能力,可以从建模和提速两个方面对业务场景提供帮助。
针对不同的刷新方式,我们进行了两组查询对比,如图所示,通过物化视图能够获得更快的查询性能体验,有了物化视图,我们可以从复杂的数据加工工作中解放出来,更加专注于数仓模型本身。
分析模型
统一的模型SQL设计,高阶函数的应用,可以提高查询性能50%以上。例如我们主要针对下面三种常见分析模型设计了标准建模SQL,未来将通过此标准自动建模,提升查询效率。
行为分析的应用–用户留存分析
对于用户留存的分析,经常会在多个条件下获取用户的行为状态,我们采用了retention函数来分析,大幅提升了查询分析的效率。
例如:例如:要清楚的了解event=view并且时间在-11-01、-11-02、-11-0条件下的用户情况,传统的方式需先进行event=viewanddate=
**-
-**条件判断,然后进行合并,但是retention函数的出现直接简化了相应的建模过程,通过retention函数,可以直接获取event=view以及三个日期条件下的行为,并且以数组的形式进行展示,之后可以通过对数组的聚合操作,进行相应的行为分析。
行为分析的应用–漏斗分析
针对用户的转化分析场景,例如需要分析在一定的时间窗口中,用户在一系列连续行为下的相关行为,可以直接采用StarRocks中的window_funnel进行建模,实现高效的漏斗分析。该函数可以从事件链中的第一个条件开始判断。如果数据中包含符合条件的事件,则向计数器加1,并以此事件对应的时间作为滑动窗口的起始时间。如果未能找到符合第一个条件的数据,则返回为0。在滑动窗口内,如果事件链中的事件按顺序发生,则计数器递增;如果超出了时间窗口,则计数器不再增加。如有多条符合条件的事件链,则输出最长的事件链。
如上图SQL,可以计算在规定时间窗口内,用户在view/click/purchase/pay连续行为下的相关数据,最终返回不同的连续行为级别下对应的用户数量。
行为分析的应用–路径分析针对用户前后行为路径分析场景,例如需要针对用户前后行为进行对比分析的场景,可以综合考虑采用StarRocks支持的ROW_NUMBER(),LEAD(),LAG()等窗口函数进行建模分析。如下是一个针对用户前后行为分析的具体案例,可以针对用户的event以及前置event进行展示:
#05建设成果
公司数仓建设过程分为四个阶段:
数据仓库规范建立和技术调研选型。性能压测:经过测试,StarRocks和之前我们应用的ClickHouse有2.2倍以上的提升。Join查询更是有数倍的提升,小时级导入时间的数据量可以在1分钟完成Load,保证离线查询效率。试点运行:经过迁移,部分业务使用效率得到大幅提升,以往比较的复杂自主SQL查询、TP95查询都可以在5s返回。支持交互式SQL自主分析。全面部署:在公司其他数据类产品中应用StarRocks,并完善监控等集群的自动化运维。
在BI系统中经过一段时间的使用,StarRocks的应用已经进入第四阶段,未来公司会将更多的业务切入到StarRocks,并结合DataPlus的智能建模、表热度分析等数据治理,相信性能和成本会达到更理想的状态。同样我们也期待StarRocks在新版本中可以提供更丰富的功能。
-关于StarRocks
StarRocks是数据分析新范式的开创者、新标准的领导者。面世三年来,StarRocks一直专注打造世界顶级的新一代极速全场景MPP数据库,帮助企业构建极速统一的湖仓新范式,是实现数字化转型和降本增效的关键基础设施。
StarRocks持续突破既有框架,以技术创新全面驱动用户业务发展。当前全球超过家市值70亿元以上的头部企业都在基于StarRocks构建新一代数据分析能力,包括腾讯、携程、平安银行、中原银行、中信建投、招商证券、众安保险、大润发、百草味、顺丰、京东物流、TCL、OPPO等,并与全球云计算领导者亚马逊云、阿里云、腾讯云等达成战略合作伙伴。
拥抱开源,StarRocks全球开源社区飞速成长。截至年底,已有超过位贡献者,社群用户近万人,吸引几十家国内外行业头部企业参与共建。项目在GitHub星数已超个,成为年度开源热力值增速第一的项目,市场渗透率跻身中国前十名。