借力 StarRocks,“陆战之王“ 大润发如何在零售业数字化转型中抢占先机?

news2025/1/16 5:51:25

作者:大润发大数据团队

自 1998 年在上海开设第一家大型超市以来,大润发已在中国大陆地区成功开设近 500 家综合性大型超市,覆盖全国 29 个省市及自治区达 230 多个城市,年销售额过千亿。大润发优鲜、淘鲜达、饿了么、天猫超市线上平台用户达到 6900 万。活跃用户超过 1650 万,一线城市平均每店日均线上订单量突破 2000 单。

作为国内大型连锁量贩超市的先导者,大润发在物流仓储、商品管理等领域很早就引入了大数据技术进行智能决策分析,帮助优化管理精度、提高管理水平。大数据平台也跟随技术浪潮多次迭代升级,沉淀出一整套特有的数据子系统和大数据处理方案。

大润发大数据业务起步较早、数据累积和历史组件较多,同时为了保证技术的前沿性,因此逐步发展出了多分析引擎的架构。一方面可以根据各类型引擎的特点处理合适的在线数据产品,一方面也可以根据各类引擎的技术优势及使用效果调整使用场景调节使用权重。

然而,随着业务需求的多样化、复杂化以及数据系统的改造升级,原本一些下放门店库的查询需求统一收归中心化的数据中台处理,导致高 并发 且复杂的查询场景出现频次激增。面对此种场景,无论是能力还是效率,现有的分析引擎都显得力不从心,复杂查询性能出现明显不足。因此我们亟需一款能够适应高并发低延时的查询引擎作为我们大数据框架 OLAP 分析平台的全新动力。

 

OLAP 组件选型

选型要求

对于新的 OLAP 引擎我们的需求有如下几点期待:

  1. 社区活跃的 开源框架 ,运维成本不会太高;

  2. 能够支持多类型 Join,大表 Join 性能要优秀;

  3. 要支持高 并发 处理查询,且查询延迟低,这也是我们最核心的诉求;

  4. 要能够支持大规模数据的导入导出,且能与现有数据平台相互兼容;

  5. 数据模型灵活,使用场景全面;

  6. 支持预计算技术。

选型对比

我们针对时下流行的组件进行了前期调研,StarRocks 以其出色的性能、良好的兼容、极简的部署吸引了我们的注意。StarRocks 与大润发数据平台框架现有组件的特点及应用场景对比如下:

 

组件测试

为了验证 StarRocks 实际使用性能是否能够达到预期,我们采用了学术界和工业界广泛使用的星型模型测试集 Star Schema Benchmark(简称 SSB 测试集),在本地测试集群(3 FE +3BE 架构)上进行了单表查询的系列测试。

单表查询的测试结果如下:

系列测试结论如下:

  1. 在 SSB 测试集的 13 个查询中,StarRocks 的整体查询性能是 ClickHouse 的 2 倍多;

  2. 在 SSB 测试集的 12 个低基数查询中,StarRocks 的整体查询性能为 ClickHouse 的 1.1 倍。

组件部署

从测试结果来看,StarRocks 的性能非常优秀,组件架构也非常精简。经过简单的部署改造,StarRocks 增强了我们 OLAP 分析引擎高 并发 场景下的处理能力。

实践案例

离线应用

1、建模

大润发的核心业务依托于各大中小门店的进、销、存经营数据,该部分数据以业务流程型单据明细为主。通常的逻辑是,业务中台系统的门店明细数据经过自研采集系统同步到数据中台中,经过 ETL 清洗、转换、聚合处理,输出到 BI 报表进行结果展现。

在应用外部 OLAP 分析引擎的场景中,我们会把业务维表和部分分析逻辑放到 引擎库中。引入 StarRocks 改造后,我们也进行了初步探索,针对 StarRocks 的四种模型规定了使用场景,并特别对明细模型的建模细化了两种应用方式:一种是不用分区的维度表,一种是需要按同步时间分区的明细表。

建表还需要注意一些分区分桶问题,官方建议单个分桶的大小在 1-10G ,此时查询性能较好。所以如果源表数据量过大或过小,可以适当调整分区或分桶数,以达到最佳的性能状态。

 

2、同步

得益于 StarRocks 兼容 MySQL 协议,能够与我们现有的数据平台整合,进行简单的配置就可以进行数据的同步和开发。

不同于以往的 Hive 或者 MySQL 数据库,StarRocks 通过动态分区导入数据的前提是分区必须已被创建,而其本身无法根据分区字段实时动态创建分区。这里有两种方法解决:

  1. 可以根据建表语句 properties 配置中的参数开启动态分区功能,让 StarRocks 调用底层常驻线程预创建分区;

  2. 可以关闭 StarRocks 的动态分区,通过数据平台执行预定义 SQL 语句进行分区创建操作。

在刷数的时候,对于特定历史分区的刷数操作,可以使用 StarRocks 的临时分区功能实现无感刷数。

3、查询

我们所使用的 BI 报表工具,对 前端 报表查询控件的操作都会在底层转化成预定义的 SQL 向 StarRocks 查询,返回结果再进行 Web 渲染。由于采用的是自动生成的 SQL 语句,需要注意在 SQL 生成的过程中,是否对表的索引字段自动添加了转换函数,从而导致索引失效的情况。

4、性能效果

报表上线后,我们对实际的查询效果也做了持续的观察和分析。包括复杂查询在内,总体 99% 查询延时在 150ms 左右,QPS 9000 + 的高并发场景下仍能较为稳定执行,达到了导入的预期效果。

实时探索

1、兼容测试

实时团队也测试了 Flink+StarRocks 的兼容性,凭借官方的 Flink-connector-starrocks 依赖,可以很好实现实时需求的改造。不过需要注意的是:

  1. 1.11 版本的依赖没有 Source 读取方法,仍需使用 JDBC 读取。

  2. 1.13 以后版本的依赖有 Source 和 Sink 方法,

这两个方法的底层实际是转为 Stream Load 方法进行写入写出,对比 JDBC 的单 FE ,可以实现多 FE 数据传输,性能更强。所以如果有实时的应用场景,推荐 Flink 1.13+ 版本配合对应的依赖取得更好的使用体验。

2、其他设想

我们曾尝试使用 Kafka+RoutineLoad 的方式将数据导入 StarRocks,期望结合 StarRocks 本身的物化视图预计算实现实时 Join,从而直接替代 Spark/Flink 这类专业的实时引擎。遗憾的是,我们 基于 2.1.6 版本的物化视图功能比较基础,尚无法实现更为复杂的表间关联操作,而 StarRocks 2.4 版本已开始支持并逐步完善多表物化视图功能。

实践总结

优点

  1. 性能卓越:StarRocks 的单表性能不输 ClickHouse,多表 Join 的延时对比我们现有的的组件又有着较大优势,即便不做特定的优化,也能有较好表现,这是十分难得的。

  2. 运维简单:StarRocks 舍弃了传统多组件的架构形式, FE +BE 的结构十分精简,部署较为便捷。而运行上的稳定可靠,使得对运维的资源消耗非常低。

  3. 插件丰富:开发者维护了一些较为实用的插件和工具,可以进行一键部署、日志结构化等。如果这些功能后期能够稳定嵌入 StarRocks 后续 版本 中,应该可以更好优化使用体验。

  4. 社区活跃:开源社区有长期稳定版和快速迭代版可以自由选择,版本升级操作也较为容易。同时有中文社区论坛和官方群可以随时进行问题反馈获得答疑,这一点是要胜过很多竞品的。

不足

这里基于 2.1.6 版本提出两点使用中的困扰:

  1. 权限管理不足:StarRocks 的用户角色功能有待改善,例如该版本只能在创建用户时授予角色,不能授予用户多角色,删除角色后用户权限依然保留。庆幸的是,在不久后的 3.0 版本中,StarRocks 将实现完整的 RBAC ,并丰富更多权限项目,从而解决这一问题。

  2. 预计算功能泛用性不强:物化视图作为预计算的特色功能,运用场景较为基础,条条框框局限过多,比如不能实现多列聚合运算,不能实现多表 Join 等,使用起来难以做到如臂使指的效果。StarRocks 2.4 版本的异步物化视图功能已经在逐步解决这一困扰。

我们通过实践发现,StarRocks 能够很好地解决大润发数据分析中的一些痛点问题,能够解决问题的工具就是好工具。StarRocks 以其优异的特性,得到大润发数据团队的一致好评。而其开发团队从善如流的服务态度,高效迭代的技术努力,无不彰显着他们在这片市场耕耘的勃勃雄心,相信 StarRocks 在不远的未来,能够结出他们所期待的光明。

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

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

相关文章

四、网络层(二)路由算法与路由选择协议

目录 2.1 静态路由与动态路由 2.2 层次路由与自治系统 2.3 距离-向量路由算法之路由信息协议(RIP) 2.3.1 RIP的基本特点 2.3.2 距离向量算法 2.4 链路状态路由算法之开放最短路径优先(OSPF)协议 2.4.1 OSPF协议的基本特点…

DELL Precison 7670 不能加载系统固态硬盘

xiaokcehui: 电脑无法开机 戴尔技术支持: 诸葛小戴检测到您这是台笔记本电脑,小戴会带着您做4个操作尝试帮您解决问题: 戴尔技术支持: [1/4] 请您参考小戴发给您的图片做一下重置RTC的操作 ✅RTC是集成电路,通常称为时钟芯片,如…

React基础知识(事件处理、受控组件与非受控组件、高阶函数、组件的生命周期)(三)

系列文章目录 第一章:React基础知识(React基本使用、JSX语法、React模块化与组件化)(一) 第二章:React基础知识(组件实例三大核心属性state、props、refs)(二&#xff0…

使用 Pygame Zero 构建一个捕捉游戏(详细步骤含源码)

Pygame zero 是一个用于教育的工具,适合任何开始学习使用 Python 创建游戏的人。那么让我们从制作一个小的捕捉游戏开始吧:) 您可以使用 pip 安装 pygame 零,如图所示 pip install pgzero你好 Pygamezero! 要开始使用 pygamezero,请将以下代码复制到文件catching_game.py…

Word处理控件Aspose.Words功能演示:在 Java 中将 DOC 或 DOCX 转换为 JPG

Aspose.Words是一种高级Word文档处理API,用于执行各种文档管理和操作任务。API支持生成,修改,转换,呈现和打印文档,而无需在跨平台应用程序中直接使用Microsoft Word。此外, Aspose API支持流行文件格式处…

GEO芯片数据基本分析

GEO数据挖掘,表达芯片分析 举例:王同学近期拟通过生物信息学相关软件与数据库来探讨女性非抽烟者的非小细胞肺癌预后相关的显著性基因及潜在的治疗靶点,他在NCBI上查询到了1套芯片数据GSE19804。请帮助他完成该项目的设计与分析。 一、一般…

基于Redis实现登录

1.发送短信验证码 Overridepublic Result sendCode(String phone, HttpSession session) {//校验手机号if(RegexUtils.isPhoneInvalid(phone)){//如果不符合,返回错误信息。return Result.fail("手机号格式错误!");}//生成验证码String code …

Codeforces Round #699 (Div. 2) C. Fence Painting

翻译: You finally woke up after this crazy dream and decided to walk around to clear your head. Outside you saw your houses fence — so plain and boring, that youd like to repaint it. You have a fence consisting of 𝑛n planks, where …

网络实验之VTP协议

一、VTP协议简介 VLAN中继协议,VTP,VLAN TRUNKING PROTOCOL,是CISCO专用协议,大多数交换机都支持该协议。VTP负责在VTP域内同步VLAN信息,这样就不必在每个交换上配置相同的VLAN信息。如协议名称,VTP协议需要…

“世界上最鸽派”的央行转鹰,透露了什么信号?

​当地时间周二,日本中央银行结束货币政策会议后宣布,部分调整当前超宽松货币政策,将长期利率波动幅度由正负0.25%扩展至正负0.5%。这一“黑天鹅”令全球投资者感到大为震惊。长期以来,投资者将日本央行看作是最后一家尚未放弃其长…

【Linux】---文件基础I/O(上)

文章目录回顾C语言文件操作接口文件相关的系统调用接口打开和关闭文件文件的打开方式文件描述符文件描述符的分配规则write、read重定向dup2mysell回顾C语言文件操作接口 在C语言中对于文件的操作有着几个常用的接口可以调用 fopen//打开文件 fclose//关闭文件 fprintf//输出…

L1-070 吃火锅(分数 15)

以上图片来自微信朋友圈:这种天气你有什么破事打电话给我基本没用。但是如果你说“吃火锅”,那就厉害了,我们的故事就开始了。 本题要求你实现一个程序,自动检查你朋友给你发来的信息里有没有 chi1 huo3 guo1。 输入格式&#x…

即时通讯音视频开发数字视频介绍

数字视频就是先用摄像机之类的视频捕捉设备,将外界影像的颜色和亮度信息转变为电信号,再记录到储存介质(如录像带)。 图像: 是人对视觉感知的物质再现。三维自然场景的对象包括:深度,纹理和亮度…

InnoDB详解2

文章目录InnoDB详解21 行格式1 Compact行格式详解1 变长字段长度列表(两个字节)2 NULL值列表(1个字节)3 记录头信息 (重点)2 Dynamic行格式2 页的上层结构InnoDB详解2 1 行格式 规定每条记录是怎么存储的…

汽车租赁服务小程序开发, 新时代下的行业商机

随着我国经济水平的提升,群众生活水平不断改善,人们的出行方式也发生了非常大的变化,不再依赖传统的出行方式,而是将目光转移到汽车上,作为当下便捷的出行方式之一,在面对远程旅游时却显得有些吃力&#xf…

React扩展:fragment、Context

目录 1.fragment fragment标签能包裹其它标签&#xff0c;但最后不会渲染到DOM树上。 import React, { Component, Fragment } from reactexport default class Demo extends Component {render() {return (<Fragment><input type"text" /><input …

Stealth-Persist混合内存系统中持久应用程序的体系结构支持

文章目录crash-consistent applications 崩溃一致性程序摘要一、引言二、背景A.新兴的非易失性存储器B.混合主存储器(HMM)C.页面缓存策略D. 目前的工业HMM系统E. 持久性内存编程模式F.动机三、设计A.设计要求B.设计选项C.Stealth-PersistD.概述E. Stealth-Persist NVM库的比较四…

如何用DWDM射频光纤技术实现200公里外的站点分集

本文概述了大型卫星和数据通信服务提供商如何通过使用DWDM射频光纤解决方案为Ka波段卫星数据传输实施经济高效的位置分集天线安装。 什么是DWDM技术? DWDM是Dense Wavelength Division Multiplexing的缩写&#xff0c;即密集波分复用技术&#xff0c;指的是一种光纤数据传输技…

pytest-需要模块相应的库

1. pytest-需要模块相应的库 文章地址&#xff1a;http://www.pythonck.com/archives/docs/1-2/13-2/13002-2 http://www.pythonck.com/archives/docs/1-2/13-2/13002-2 pytest-断言、跳过及运行 三元表达式&#xff1a;三元表达式又称三目运算符。在python中并没有三元表达式…

数商云SRM供应商系统打造家居建材企业完整电商数据生态平台

随着5G、物联网、大数据、人工智能、云计算等技术的快速发展&#xff0c;全球科技不断突破创新&#xff0c;推动了整个社会的智能化发展&#xff0c;同时&#xff0c;也带动了包含家居业在内的制造行业的技术创新、产品更迭以及更加精细化的经营管理。 数字经济时代&#xff0…