共计 4518 个字符,预计需要花费 12 分钟才能阅读完成。
作者:易点天下数据平台团队
易点天下是一家技术驱动倒退的企业国际化智能营销服务公司,致力于为客户提供寰球营销推广服务,通过成果营销、品牌塑造、垂直行业解决方案等一体化服务,帮忙企业在寰球范畴内高效地获取用户、晋升品牌知名度、实现商业化变现。
目前,易点天下累计服务客户超过 5000 家,其中包含华为、阿里巴巴、腾讯、网易、字节跳动、百度、快手、爱奇艺、SHEIN、Lazada 等知名企业。
易点天下始终秉持 ” 科技使世界变得更平 ” 的企业使命,踊跃采纳大数据和人工智能技术来落地和推动业务的倒退。
随着公司业务的扩大,咱们的数据分析工作遇到了一些痛点:
1、数据处理需要日益增多:每天须要解决几十 T、近千亿的数据量;
2、数据分析的复杂度进步:如用户留存、LTV 这一类的简单指标,往往须要多表关联查问和实时查问,目前利用的组件不能满足业务的查问需要;
3、技术组件较多:公司有多个数据分析平台,采纳的技术组件也十分多,包含 ClickHouse、Kafka、Flink、Spark、Hive 等,经营保护老本较高。
4、以后架构根本以离线为主,实时数据处理架构单薄。
通过现状剖析后,咱们开始设计数据仓库的标准化标准,并寻找一款集实时离线为一体的数仓对立解决方案,对数仓进行统一规划和建设。
#01 数仓建设标准
咱们从数据分层、业务类和数据域定义、数据指标、数据模型标准、模型掂量指标五个方面进行了数仓的标准建设。
1、数据分层:包含数据引入层 ODS、明细数据层 DWD、汇总数据层 DWS、数据应用层 ADS 及维度层 DIM。
2、业务类和数据域定义:此定义次要用于标准数据仓库解决数据的范畴,以及解决数据的业务类型。
3、数据指标标准:包含原子指标(如点击、拜访、生产金额等)、复合指标(如点击率、跳出率、投资回报率等)、派生指标(如 7 天账户生产金额、去年账户余额总和等)。
4、数据模型标准:包含命名标准、存储标准、数据标准三个方面;对立标准的数据模型能大幅晋升开发保护效率,防止不必要的数据品质问题。
5、模型掂量指标:包含命名规范性和数据完整性、中间层表的增长比例、应用层 ADS 跨层拜访(穿透)、较多的 ADS 表共性逻辑未下沉、应用层跨集市依赖五个方面。
#02 技术选型
在对数仓进行了标准化标准设计后,咱们须要一个集实时离线为一体的数仓对立解决方案,通过数仓建设,来解决以下问题:
- 数据存储的规范性
- 数据模型的复用性
- 数据模型的耦合性
- 数据的完整性
- 数据查问效率
- 数据老本可控
基于此,咱们对市面上常见的数据库产品做了选型比照:
1)查问性能比照
咱们次要对 ClickHouse 和 StarRocks 的查问性能做了比照,在 SSB 单表和用户常常碰到的低基数聚合场景下比照了 StarRocks 和 ClickHouse 的性能指标。采纳一组 16core 64GB 内存的云主机,在 6 亿行的数据规模进行测试。
得益于向量化执行引擎、优良的 CBO 优化器、物化视图、Runtime Filter 等各方面的优化,StarRocks 的查问性能体现十分优异,上面测试为各种引擎在不同 SQL 下破费的工夫,ClickHouse 的整体查问工夫是 StarRocks 的 2.26 倍。
图 1: 各种引擎在不同 SQL 下破费的工夫
图 2: StarRocks 通过实现全面向量化引擎,依照列式的形式组织和解决数据,充分发挥了 CPU 的解决能力
2)应用与运维比照
除了查问性能,咱们从应用老本、易用性、运维老本等方面,比照了几款比拟热门的产品,最终咱们打算将基于 ClickHouse 等其余数据库产品的查问迁徙到基于 StarRocks 来构建数据仓库。
#03 技术架构
数据平台目前解决的数据波及公司多个产品,每日解决寰球增量数据几十 T,近千亿条记录,跨云跨地区的数据也给数据处理带来不少挑战。
目前咱们曾经针对 BI 零碎发展了基于 StarRocks 的数据仓库的建设,随着教训的积攒,前期会推广到数据平台所有我的项目的数据场景中。
目前数据平台以实时流和离线解决两条形式同时向 StarRocks 数据仓库中进行数据 Load。下图是目前数据平台在数据分析中的次要流程架构,如图所示,架构中咱们自研了数据治理平台(DataPlus)用于数据监控进步数据品质,保护元数据血统等数据的拓扑构造,自动化建模。另外咱们还自研了分布式的跨云调度零碎(EasyJob),用于零碎便捷地解决多云环境下的数据依赖和调度。
离线数据导入通过 EasyJob 定时调用 Broker Load 的形式导入 StarRocks。
通过 DataPlus 零碎,咱们对 StarRocks 中的数据和云存储数据进行了定时的一致性校验,保证数据的一致性。
咱们始终寻找一种实时和离线一体的数据处理解决方案,实时离线数据处理完后会进入 StarRocks 进行全流程建模,基于 StarRocks 进行湖仓一体构造的搭建。
最底层 ODS 基于内部数据源建设,数据存储在内部云存储上例如 OSS,S3,ODS 等,而后通过调度零碎定时触发下层表的生成,另外,DWS、ADS 的局部表模型,也能够借助于物化视图形式实现,晋升构建和查问效率。
整体数据流动架构如下:
StarRocks 可能反对秒级的导入提早,提供准实时的服务能力。StarRocks 的存储引擎在数据导入时可能保障每一次操作的 ACID。一个批次的导入数据失效是原子性的,要么全副导入胜利,要么全副失败。并发进行的各个事务相互之间互不影响,能够提供 Snapshot Isolation 的事务隔离级别。
StarRocks 存储引擎不仅可能提供高效的 Append 操作,也能高效的解决 Upsert 类操作。应用 Delete-and-insert (Merge\_on\_write) 的实现形式,通过主键索引疾速过滤,打消了读取时 Sort merge 操作,同时还能够充分利用其余二级索引。在大量更新的场景下,依然能够保障查问的极速性能。
#04 智能数据建模
通过元数据、数据血统体系的建设,将来咱们能够通过让建模标准、建模品质等规定自动化,造成线上零碎的自动化建模性能,自动化建模生成规范 SQL,最终在 StarRocks 中定时执行失效。下图是建模过程和 DataPlus 中性能的映射。建模自动化的益处就是能够限度人为建模的不标准操作,最大水平的优化模型和老本。
模型定义后,对模型生成效率的优化至关重要,不一样的解决形式会影响模型的查问生成效率,模型的复用度也会影响用户应用体验。
咱们在建模中针对上面三个模型进行了基于 StarRocks 的重点结构,大大提高了查问效率。
物化视图
在数仓建模中咱们大量采纳了物化视图来减速和生成 DWS 以上数据层,StarRocks 以后反对单表同步、多表异步以及对 SQL 的通明改写能力,将来还会提供多表同步等更多能力,能够从建模和提速两个方面对业务场景提供帮忙。
针对不同的刷新形式,咱们进行了两组查问比照,如图所示,通过物化视图可能取得更快的查问性能体验,有了物化视图,咱们能够从简单的数据加工工作中解放出来,更加专一于数仓模型自身。
分析模型
对立的模型 SQL 设计,高阶函数的利用,能够进步查问性能 50% 以上。例如咱们次要针对上面三种常见分析模型设计了规范建模 SQL,将来将通过此规范主动建模,晋升查问效率。
- 行为剖析的利用 – 用户留存剖析
对于用户留存的剖析,常常会在多个条件下获取用户的行为状态,咱们采纳了 retention 函数来剖析,大幅晋升了查问剖析的效率。
例如:例如:要分明的理解 event=view 并且工夫在 2022-11-01、2022-11-02、2022-11-03 条件下的用户状况,传统的形式需先进行 event=view and date=’ *--*’ 条件判断,而后进行合并,然而 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 继续冲破既有框架,以技术创新全面驱动用户业务倒退。以后寰球超过 200 家市值 70 亿元以上的头部企业都在基于 StarRocks 构建新一代数据分析能力,包含腾讯、携程、安全银行、中原银行、中信建投、招商证券、众安保险、大润发、百草味、顺丰、京东物流、TCL、OPPO 等,并与寰球云计算领导者亚马逊云、阿里云、腾讯云等达成策略合作伙伴。
拥抱开源,StarRocks 寰球开源社区飞速成长。截至 2022 年底,已有超过 200 位贡献者,社群用户近万人,吸引几十家国内外行业头部企业参加共建。我的项目在 GitHub 星数已超 3900 个,成为年度开源热力值增速第一的我的项目,市场渗透率跻身中国前十名。