化繁为简|中信建投基于StarRocks构建统一查询服务平台

news2024/11/26 10:00:28

近年来,在证券服务逐渐互联网化,以及券商牌照红利逐渐消退的行业背景下,中信建投不断加大对数字化的投入,尤其重视数据基础设施的建设,期望在客户服务、经营管理等多方面由经验依赖向数据驱动转变,从而提高服务水平和决策效率。

因此,在公司总部和各分支机构,包括经纪、资管、投行等业务部门,以及稽核、审计、财务、法务等职能部门,对自助分析、多维分析、固定报表和 API 数据服务等形式的用数需求一直在不断增长。

#01

需求背景

为了推动整体数字化建设和数据治理工作,中信建投已经在2019年搭建了基于 Apache Hadoop (以下简称 Hadoop)体系的数据湖,将大量历史数据迁移到 Hadoop 上,用 Apache Hive (以下简称 Hive)对数据进行加工处理,所有的查询计算都通过 Presto 执行。但是,该方案在最近两年数据量快速增长、业务场景多样化发展的趋势下逐渐无法适用。具体而言,中信建投目前在数据查询分析中主要存在以下痛点和需求:

1)数据加工链路复杂

在数据分析的流程上,数据部门通常是首先用 Presto 做即席查询,再通过 Hive 进行数据加工,最后将加工过后的数据下发到各部门的 Oracle 或 MySQL 事务型数据库,业务人员在事务数据库里对下发数据进行查询和分析。整个过程需要在三套系统之间进行数据交换,且三套系统使用的 SQL 语法也不一致,需要不同人员进行开发维护,从而产生了多种问题:

  • 数据开发和维护成本高

  • 数据口径可能不一致,导致数据应用结果不准确

  • 用数需求难以得到及时满足,通常要“T+1”才能给到数据报表

2)大数据量下性能不足,查询响应慢

中信建投目前大部分的数据都存储在 Hive 中,业务部门在进行自助分析时通常涉及的相关数据量较大,而 Presto 在大数据量、多表关联查询时会出现响应比较慢,甚至无法获得查询结果的问题,无法满足单表及多表复杂查询场景下响应的及时性。此外, Presto 因为资源隔离不足会出现应用抢占资源的情况,不能很好支持高并发的查询请求。

3)大量实时数据分散在各个业务系统,无法进行联合分析

由于中信建投内部存在非常多的业务系统,各业务系统相互独立且数据会不断更新,而这些实时数据无法更新到 Hive 中,导致业务数据之间不能及时打通进行联合分析。

4)缺少预计算能力加速固定查询

固定报表和 API 数据服务为各业务提供包括数据汇总结果、明细查询、数据接口在内的多项能力,而基于固定数据查询的可视化报表通常数据查询量大、计算维度较多,一个看板页面涉及大约一两百个 SQL 语句,整体运算效率低下。针对这种情况,中信建投希望通过预计算实现查询加速,并且要求开发工作轻量化且资源消耗较低。

#02

引入 StarRocks 构建统一查询服务平台

通过综合对比数据库即席查询、实时分析性能、预计算能力、数据联邦技术,并且结合中信建投已经在 Hadoop 体系中有大量投入,不希望做大规模数据搬迁的具体情况,将 Hive 外表查询支持、SQL 语法及函数的兼容性等方面纳入选型考虑,中信建投最终选择引入 StarRocks 来构建统一的查询服务平台,满足各部门的用数需求

作为一款高性能全场景的分析型数据库,StarRocks 使用 MPP 架构、可实时更新的列式存储引擎等技术实现多维、实时、高并发的数据分析。StarRocks 既支持从各类实时和离线的外部数据源高效导入数据,也支持不做数据转储,便可直接通过外表形式分析查询数据湖的数据,统一的 SQL 交互将数据分析结果或物化视图预计算结果分发到各个数据应用,为中信建投实现了三套系统使用功能的整合以及数据应用流程的简化。

具体而言,针对中信建投的痛点问题,StarRocks具备如下优势

1)在性能方面

针对大规模数据下自助 BI 敏捷高效的需求,StarRocks 向量化执行引擎,全面实现了 SIMD 指令,保证查询和向量化导入可以充分利用单机单核 CPU 的处理能力;StarRocks 自研的 Pipeline 执行引擎,使得 StarRocks 可以应对更高的并发查询,充分利用单机多核 CPU 的处理能力,与此同时可以更优雅的进行 CPU 时间分片调度从而实现资源隔离的功能;StarRocks 采用大规模并行处理(MPP)架构,可以充分利用多机多核的集群资源,保证查询性能可以线性扩展;并用基于成本的优化器 CBO、Runtime Filter、延迟物化、全局低基数字典等多种⼿段实现极致查询性能。

2)在外部表联邦查询方面

StarRocks 可通过创建外部表的⽅式,在 StarRocks 读取其他数据源,如 MySQL, Elasticsearch , Apache Hive 等外部表中的数据,从⽽打破数据的隔离。

以 Hive 外表功能为例,中信建投可以将其 Hive 中的离线数据导⼊ StarRocks 中进⾏⾼性能分析查询。同时,StarRocks 也可以支撑湖仓一体联邦分析,将离线数据与实时数据进⾏关联,打通不同数据存储间的壁垒,从⽽⽀撑业务分析时在数据湖中进⾏数据探查和极致分析的需求。

3)在预计算方面

为了实现固定报表的加速,StarRocks 引入预计算的手段,通过创建单表物化视图,在保证明细查询的同时可以加速聚合指标查询;通过多表物化视图、外表物化视图等方式,提供更灵活的按需建模能力,复用常见查询有效优化了复杂 SQL 计算效率,满足用户对固定维度聚合分析以及原始明细数据任意维度分析的多样需求。

#03

落地后的效果与价值

1)大数据查询性能得到显著提升

采用 StarRocks 内部表加速明细数据关联查询,实现了上亿级别数据量大表关联秒级响应,内表查询效率提升10倍以上外表查询效率提升1倍以上,完全满足大数据量下查询分析及时响应的需求;

2)预计算能力降低了固定报表加工成本

采用 StarRocks 预计算能力可以将固定报表和 API 数据服务响应速度提升1倍以上。多表物化视图、外表物化视图、Query Rewrite 等高阶功能,可以有效降低数据建模成本,使得“直面分析,按需加速”成为可能。

3)降低数据迁移成本,提升数据管理和使用效率

StarRocks 基于 Hive 外表做查询,减少了底层数据的迁移成本,并实现了实时数据联通分析。同时,以 StarRocks 为统一数据服务入口,降低了整体数据查询和加工的复杂度,提升了数据管理和使用效率。

#04

项目经验总结

中信建投进行数字化转型过程中已经部署了大部分的数据基础设施,但是已有的基于 Hadoop 构建数据湖的体系在近两年来暴露出众多问题,已经无法匹配业务的发展速度。中信建投基于自身业务需求和已有技术架构情况选择以 StarRocks 构建统一数据服务入口的实践,为同类型券商企业提供了以下经验建议

1)分析型数据库的选型需要充分考虑企业自身的用数需求,以及现有数据平台的技术架构,选择符合自身实际情况的数据库是获得较好的落地效果的关键。例如,中信建投大部分的数据都存储在 Hive 中,StarRocks 提供的类 Presto 的外表查询功能可以避免数据迁移增加的额外成本,同时也很好地满足了公司的用数需求。

2)随着企业数据库规模不断增长,以及分析场景更加复杂,分析型数据库需要不断提升数据查询分析的性能,以及针对固定报表、自助 BI 等各种应用场景,提供场景化解决方案、生态工具,才能满足用户在数据查询分析方面功能和性能的复杂需求。

-关于StarRocks

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

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

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

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

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

相关文章

面试阿里测开岗,面试官说我不配24K,当场拍桌子翻脸....

好家伙,这奇葩事可真是多,前两天和粉丝聊天,他说前段时间面试阿里的测开岗,最后和面试官干起来了。 我问他为什么,他说没啥,就觉得面试官太装了,我说要24K,他说太高了,说…

中国区注册OpenAI账号试用ChatGPT指南

OpenAI最近推出ChatGPT,但国内(包括香港)并不支持OpenAI账号注册,多数会提示: OpenAI’s services are not available in your country. 前期准备 科学上网,最好是美国IP(可以购买v屁n&#xf…

章鱼哥听歌

uboot环境变量 以下所有的命令,都在串口工具进行执行 ubifsmount- mount UBIFS volume ubifsumount- unmount UBIFS volume ums - Use the UMS [USB Mass Storage] usb - USB sub-system usbboot - boot from USB device version - print monit…

EasyX精准帧率控制打气球小游戏

🎆音乐分享 New Boy —— 房东的猫 之前都用Sleep()来控制画面帧率,忽略了绘制画面的时间 如果绘制画面需要很长的时间,那么就不能忽略了。 并且Sleep()函数也不是特别准确,那么就…

day3——有关java运算符的笔记

今天主要学习的内容有java的运算符 赋值运算符算数运算符关系运算符逻辑运算符位运算符(专门写一篇笔记)条件运算符运算符的优先级流程控制 赋值运算符 赋值运算符()主要用于给变量赋值,可以跟算数运算符相结合&…

【✨十五天搞定电工基础】基本放大电路

本章要求1. 理解放大电路的放大作用和共发射极放大电路的性能特点; 2. 掌握静态工作点的估算方法和放大电路的微变等效电路分析法; 3. 了解放大电路输入、输出电阻和电压放大倍数的计算方法,了解放大电路的频率特性、 互补功率放大…

八、STM32串口通信

目录 一、串口通信 1.1串口通信物理层 1.2USB转串口模块 1.3串口通信的其他应用 1.4串口数据包的基本组成 二、串口的结构体与函数讲解 2.1串口讲解 2.2结构体讲解 2.3串口初始化函数讲解 三、串口发送字符 3.1如何配置串口的发送 3.2项目实战 四、串口的中断接收 …

一文搞懂 什么是CPU上下文?为什么要切换?如何减少切换?

最近经常有小伙伴问到的一些问题,比较集中的是关于CPU切换. 实际用C/C,go开发,你会特别注意内存和CPU的使用情况,那些对于CPU使用情况特别关注,或者性能特别关注的朋友可以看看这篇文章,相信看完结尾的示例…

二、Linux文件 - Open函数讲解实战

目录 1.Open函数讲解 2.open函数实战 2.1 man 1 ls 查询Shell命令 2.2 man 2 open 查看系统调用函数 2.3项目实战 2.3.1O_RDWR和O_CREAT 2.3.2O_APPEND的用法 1.Open函数讲解 高频使用的Linux系统调用:open write read close Linux自带的工具&#xf…

C语言实现五子棋(n子棋)

五子棋的历史背景: 五子棋起源于中国,是全国智力运动会竞技项目之一,是一种两人对弈的纯策略型棋类游戏。双方分别使用黑白两色的棋子,下在棋盘直线与横线的交叉点上,先形成五子连珠者获胜。五子棋容易上手&#xff0c…

c/c++开发,无可避免的文件访问开发案例

一、缓存文件系统 ANSI C标准中的C语言库提供了fopen, fclose, fread, fwrite, fgetc, fgets, fputc, fputs, freopen, fseek, ftell, rewind等标准函数,这些函数在不同的操作系统中应该调用不同的内核API,从而支持开发者跨平台实现对文件的访问。 在Lin…

【九宫格坐标排列 Objective-C语言】

一、这个案例做好之后的效果如图: 1.这个下载是可以点击的,当你点击之后,弹出一个框,过一会儿,框框自动消失,这里变成“已安装” 2.那么,我现在先问大家一句话:大家认为在这一个应用里面,它包含几个控件, 3个,哪3个:一个是图片框,一个是Label,一个是按钮, 这…

python学习笔记-查看数据结构、均值、中位数、分位数、众数、离中趋势(标准差、方差、求和、偏态系数、风险系数)正态分布pdf、cdf、ppf

①引入pandas包,命名为pd。 import pandas as pd ②读入HR.csv数据 dfpd.read_csv(“./data/HR.csv”) ③查看是什么结构 type(df) ④查看单个类别satisfaction_level的数据结构 type(df[“satisfaction_level”]) ⑤查看均值的数据结构 type(df.mean()) …

运行Whisper笔记(1)

最近chatGPT很火,就去逛了一下openai的github项目。发现了这个项目。 这个项目可以识别视频中的音频,转换出字幕。 带着一颗好奇的心就尝试自己去部署玩一玩 跟着这篇文章一步步来进行安装,并且跟着这篇文章解决途中遇到的问题。 途中还会遇…

男,26岁,做了一年多的自动化测试,最近在纠结要不要转行,求指点。?

最近一个粉丝在后台问我,啊大佬我现在26了,做了做了一年多的自动化测试,最近在纠结要不要转行,求指点。首选做IT这条路,就是很普通的技术蓝领。对于大部分来说干一辈子问题不大,但是发不了什么财。如果你在…

第015天:将APP发布到应用商店(完结)

应用已经开发出来了,下一步我们需要思考推广方面的工作。那么如何才能让更多的用户知 道并使用我们的应用程序呢?在手机领域,最常见的做法就是将程序发布到某个应用商店中,这 样用户就可以通过商店找到我们的应用程序,…

前端修行 - 与后端配合的那些事情

最近总结一下个人作为前端,与后端、测试、以及产品经理、UI设计之间配合的那些事情,想到哪里说到哪里 1 关于正确认识项目研发一号位都是后端的这个事情 项目研发一号位,在有的公司可能会叫做SDM(software development manger&am…

springboot 接入websocket实现定时推送消息到客户端

目录说明代码实现说明 如标题&#xff0c;举例需求场景&#xff1a; 前端与后端websocket连接上后&#xff0c;多用户登录&#xff0c;后端根据不同用户定时发消息给前端用于展示 代码实现 1、 <dependency><groupId>org.springframework.boot</groupId>…

vit-pytorch实现 MobileViT注意力可视化

项目链接 https://github.com/lucidrains/vit-pytorch 注意一下参数设置&#xff1a; Parameters image_size: int. Image size. If you have rectangular images, make sure your image size is the maximum of the width and heightpatch_size: int. Number of patches. im…

git:详解git rebase命令

背景 今天无意中打开 git 官网&#xff0c;发现 git 命令还是很多的&#xff0c;然而我们常用的就那几个&#xff0c;今天来学习一个也不怎么常用的命令 rebase 官网链接 都说学一个东西最好的方式就是读他的 官方文档&#xff0c;这里我读了一遍&#xff0c;把一些核心的地…