易点天下基于 StarRocks 全面构建实时离线一体的湖仓方案

news2025/2/25 15:18:21

作者:易点天下数据平台团队

易点天下是一家技术驱动发展的企业国际化智能营销服务公司,致力于为客户提供全球营销推广服务,通过效果营销、品牌塑造、垂直行业解决方案等一体化服务,帮助企业在全球范围内高效地获取用户、提升品牌知名度、实现商业化变现。

目前,易点天下累计服务客户超过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 建设成果

公司数仓建设过程分为四个阶段:

  1. 数据仓库规范建立和技术调研选型。

  1. 性能压测:经过测试,StarRocks 和之前我们应用的 ClickHouse 有2.2倍以上的提升。Join 查询更是有数倍的提升,小时级导入时间的数据量可以在1分钟完成 Load ,保证离线查询效率。

  1. 试点运行:经过迁移,部分业务使用效率得到大幅提升,以往比较的复杂自主 SQL 查询、TP95 查询都可以在5s返回。支持交互式 SQL 自主分析。

  1. 全面部署:在公司其他数据类产品中应用 StarRocks ,并完善监控等集群的自动化运维。

在 BI 系统中经过一段时间的使用,StarRocks 的应用已经进入第四阶段,未来公司会将更多的业务切入到StarRocks,并结合 DataPlus 的智能建模、表热度分析等数据治理,相信性能和成本会达到更理想的状态。同样我们也期待 StarRocks 在新版本中可以提供更丰富的功能。

-关于StarRocks

StarRocks 是数据分析新范式的开创者、新标准的领导者。面世三年来,StarRocks 一直专注打造世界顶级的新一代极速全场景 MPP 数据库,帮助企业构建极速统一的湖仓新范式,是实现数字化转型和降本增效的关键基础设施。

StarRocks 持续突破既有框架,以技术创新全面驱动用户业务发展。当前全球超过 200 家市值 70 亿元以上的头部企业都在基于 StarRocks 构建新一代数据分析能力,包括腾讯、携程、平安银行、中原银行、中信建投、招商证券、众安保险、大润发、百草味、顺丰、京东物流、TCL、OPPO 等,并与全球云计算领导者亚马逊云、阿里云、腾讯云等达成战略合作伙伴。

拥抱开源,StarRocks 全球开源社区飞速成长。截至 2022 年底,已有超过 200 位贡献者,社群用户近万人,吸引几十家国内外行业头部企业参与共建。项目在 GitHub 星数已超 3900 个,成为年度开源热力值增速第一的项目,市场渗透率跻身中国前十名。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/361771.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

yolov5源码解读--训练策略

yolov5源码解读--训练策略超参数解读命令行参数train模型迭代测试超参数解读 hyp.scratch.yaml lr0: 0.0032 初始学习率 lrf: 0.12 使用余弦函数动态降低学习率(lr0*lrf) momentum: 0.843 动量 weight_decay: 0.00036 权重衰减项 warmup_epochs: 2.0 预热&#xf…

详解Unicode字符集以及字符编码实现(一)

在日常生活中,我们经常会碰到打开一个文件,但是文件内容乱码的问题,比如我想看《西游记》这部小说。 下载链接:https://m.ijjjxs.com/txt/dl-35-12585.html 点击TXT电子书下载,很快就会下载完成,但是使用…

【测试面试】自我分析+功能+接口自动化+性能测试面试题(大全),知己知彼百战百胜......

目录:导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜)前言 分析自己和面试企业…

mac tcpdump学习

学习原因 工作上遇到了重启wifi后无法发出mDNS packet的情况,琢磨一下用tcpdump用的命令如下 sudo tcpdump -n -k -s 0 -i en0 -w VENDOR-DUT-INTERFACE.pcapng是在测airplay BCT认证时,官方文档的解决方法。对tcpdump很不了解,现汇总如下的学…

JS中数组如何去重(ES6新增的Set集合类型)+经典two sum面试题

现在有这么一个重复数组:const arr [a,a,b,a,b,c]只推荐简单高效的方法,复杂繁琐的方法不做推荐方法一:const res [...new Set(arr)]Set类型是什么呢?Set 是ES6新增的一种新集合类型。具体知识点可以看下面附录:根据…

ES6中Set类型的基本使用

在ES6之前,存储数据的结构主要有两种:数组、对象。 在ES6中新增了另外两种数据结构(存放数据的方式):Set、Map,以及他们的另外形式WeakSet、WeakMap。 Set的基本使用 Set是一个新增的数据结构&#xff0c…

广东望京卡牌科技有限公司,2023年团建活动圆满举行

玉兔初临,春天相随,抖擞精神,好运连连。春天是一个万物复苏的季节,来自广东的望京卡牌科技有限公司,也迎来了新年第一次团建活动。在“乘风破浪、追逐梦想”的口号声中,2023望京卡牌目标启动会团结活动正式…

Day896.MySql的kill命令 -MySQL实战

MySql的kill命令 Hi,我是阿昌,今天学习记录的是关于MySql的kill命令的内容。 在 MySQL 中有两个 kill 命令: 一个是 kill query 线程 id,表示终止这个线程中正在执行的语句;一个是 kill connection 线程 id&#…

【数据宝应用场景】多场景,多接口,哪些数据可以用在文旅平台上?

随着云计算、物联网、互联网和移动智能终端等技术的飞速发展以及迎合游客不断升级的文旅消费需求,智慧旅游成为文旅行业信息建设的主要方向。 在信息化时代,游客对于文旅体验和文旅信息服务的要求在逐步提高。以现代科技为主要手段的智慧文旅&#xff0…

linux rsync服务端安装和windows客户端备份

安装:yum install -y rsync 密码内容:zhangsan:123456 配置文件:/etc/rsyncd.conf内容 # /etc/rsyncd: configuration file for rsync daemon mode # See rsyncd.conf man page for more options. # configuration example: uid root gi…

从0开始的ios自动化测试

最近由于工作内容调整,需要开始弄ios自动化了。网上信息有点杂乱,这边我就按我的实际情况,顺便记录下来,看是否能帮到有需要的人。 环境准备 安装tidevice pip3 install -U “tidevice[openssl]” 它的作用是,帮你绕…

JavaScript从零开始 学习记录(一)

前言 选择视频课程之前,不仅查阅了资料,还询问了网友,最终敲定了学习黑马前端的视频教程,学了5小节,发现挺对自己口味的且从反响来看,还是相当不错的,便打算利用这个寒假学完 笔记范围 从这节…

领航智能汽车信息安全新征程 | 云驰未来乔迁新址

2月20日,在北京朝阳百子湾东朝时代创意园,云驰未来迎来乔迁之喜,智能汽车和自动驾驶领域的行业领导、合作伙伴与客户、投资人及媒体嘉宾齐聚现场,共同见证云驰未来迈上新的发展征程。 作为中国智能网联汽车和自动驾驶信息安全行业…

图床(Typora + uPic/PicGo +七牛云)

图床(Typora uPic/PicGo 七牛云) 笔者平时使用 Typora 编写 markdown 文档,文档中常常会放置图片,如果文档不需要分享的话,其实讲图片存放在本地就可以了。由于我有在多台机器编写 markdown 笔记,还有将…

维度建模基本流程总结

一、维度建模基本流程图数据RD进行业务调研和数据现状调研,产出符合相关模版规范的业务知识文档和数据现状文档。数据PM也会调研相关业务产出需求设计文档,三方参与需求评审,评审通过后基建数据RD进行需求拆解,产出技术方案&#…

redhawk:GSC file与STA file

1.GSC file redhawk做lowpower分析时需要GSC&#xff08;Global Switching Configuration&#xff09;file指导block/instance/power domain的开关状态。 Syntax&#xff08;in GSR file&#xff09;: GSC_FILES <gsc_FilePathName> Syntax&#xff08;in GSC file&a…

django项目实战八(django+bootstrap实现增删改查)进阶验证码

目录 一、安装第三方 1、pillow 2、第三方字体文件 二、实现生成验证码 1、创建code.py 2、url 3、修改auth.py 4、修改account.py 5、修改login.html 三、验证码校验 1、验证码写入到session 2、修改form下的LoginForm类新增code字段 3、修改login.html 4、修改acco…

Jasperreort使用

准备工作 下载Jaspersoft Studio 下载地址 下载后一直下一步安装 Studio基本使用 新建项目 新建模板 具体制作教程可前往B站搜索视频教程 添加中文字体 如果不添加&#xff0c;后面打印出PDF的时候中文显示不出来 电脑自带的字体一般在C:\Windows\Fonts 但该目…

6——JVM调优工具详解及调优实战

Jmap、Jstack、Jinfo命令详解 Jmap 此命令可以用来查看内存信息&#xff0c;实例个数&#xff0c;以及占用内存大小 生成dump文件 把dump文件装入Jvisvalvm进行分析 Jstack Jstack加进程id查找死锁 Jstack找出占CPU最高的线程堆栈信息 top -p 进程号&#xff1a;显示进程…

文件系统概念

1.文件逻辑结构 (1)有结构文件和无结构文件 ①定长记录 ②可变长记录 (2)顺序文件 (3)索引文件 (4)索引顺序文件 (5)多级索引顺序文件 2.文件目录 (1)文件控制块 (2)目录结构 (3)索引节点 3.文件的物理结构 (1)文件块&#xff0c;磁盘块 (2)文件分配方式 ①连续分配 ②链接…