申万宏源基于 StarRocks 构建实时数仓

news2024/12/29 9:41:32

作者 :申万宏源证券 实时数仓项目组

小编导读:

申万宏源证券有限公司是由新中国第一家股份制证券公司——申银万国证券股份有限公司与国内资本市场第一家上市证券公司——宏源证券股份有限公司,于 2015 年 1 月 16 日合并组建而成,是国家主权财富基金——中国投资有限责任公司的直管企业。

申万宏源证券有限公司发挥着“投资控股集团+证券子公司”的双层架构优势,为企业集团、个人投资者、专业机构投资者、金融同业机构及政府客户提供以资本市场为核心的全产业链综合金融服务。

当前,证券行业对数据的时效性、多样性和灵活性提出了更高的要求,为了解决实时数仓的挑战,申万宏源于 2023 年引入 StarRocks 对实时数仓整体架构进行了新的设计,目前基于 StarRocks 构建的实时数仓已经在申万宏源的财富管理类、投资研究类和风险管理类等多个场景中得到应用。

背景与挑战

在数字化转型背景下,证券行业面临着许多机遇,金融科技的业务范围和业务管理能力升级,创新和应用能力也在业务中不断深化。

随着实时报表、实时大屏、实时营销和实时风控等场景深入,证券行业对数据的时效性、多样性和灵活性提出了更高的要求,客户与证券公司、投资与市场运行的每个触点都需要被数字化、实时化,这一进程的推动也给技术层带来了挑战。

alt

数据挑战

随着交易系统的引入,证券行业已经完全数字化,数据量达到了 PB 级别,数据实时写入吞吐量高,且对于查询延时敏感。

同时证券行业拥有大量基于不同技术栈的业务系统,涉及结构化、半结构化和非结构化的多源异构数据,数据处理过程复杂。另外,数据分析过程是累积的、批量的,数据处理过程则是流式的,需要进行统一重构。

业务挑战

鉴于近期市场结构性行情中波段较短的特征,要求运营从策划到开发上线,要在有效时间内交付,这对于敏捷研发的要求是极高的。业务方出于对时效性、准确性及性价比的考量,传统数仓往往采用 T+1 的模式处理数据,无法满足数据实时性的要求。

为了应对这些挑战,需要实时或准实时数据技术予以支撑。申万宏源证券对以实时为中心的技术架构提出诉求,旨在建设数据端到端低延迟、高效率、快速响应、实时跟进、对源系统无侵扰为目的的实时数仓。

实时数仓技术探索

为了解决实时数仓的挑战,申万宏源经历了复杂的实时数仓技术探索过程。在选择实时数仓技术架构时,证券机构不光要考虑开源可控,也要考虑是否有商业厂商做技术支撑。

alt

2021 年起,团队开始密切关注 StarRocks 技术栈。StarRocks 有着领先的技术实力,例如流批一体(可以融合实时和离线的数据)、部分列更新能力、丰富的数据模型、物化视图、高性能和更高并发的能力,同时,也有商业化公司镜舟科技,作为厂商提供长期企业级技术服务。经过深入调研,在完成了 PoC 后,最终购买引入了基于 StarRocks 开发的企业版产品镜舟数据库。

alt

引入 StarRocks 后,申万宏源对整体架构进行新的设计。对于大部分数据的处理速度要求不高的数据全部使用 StarRocks 来处理。对于对数据延迟要求极高的一小部分场景则不让数据落地,通过 Flink 来实时处理,直接送到下游系统。

与传统数仓不同,实时数仓往往会设计较多分层。在实际操作中,申万宏源更倾向于只设立一层物理层。这样,所有历史数据在进入后都可以在这里沉淀,并且得益于这种沉淀,上层的应用不再是一次性的,而是可以复用的,这完全符合实时数仓的理念,在物理层之上封装逻辑视图,让业务面向逻辑视图进行数据分析和应用开发,实现数据驱动业务的基础。

典型应用场景实践

目前,基于 StarRocks 构建的实时数仓,在申万宏源的财富管理类、投资研究类和风险管理类等多个场景中得到应用。

金融商城理财产品断点购买召回服务

在金融商城中,理财产品的断点购买召回是一个常见的运营场景。在引入 StarRocks 之前,申万宏源需要将业务系统的数据采集到 Impala 中,处理完成后再加载到 HBase 中,同时也需要将实时链路的数据导入 HBase。然而,HBase 以键值对查询的形式存在,其查询分析的灵活性有限。

alt

基于 StarRocks 的强大性能,申万宏源实现了非常高效的查询响应,对下游服务提供秒级响应。对于有购买行为但是没有交易委托数据的意向客户,业务端可以快速获取数据并及时响应,第一时间对客户进行召回,客户购买的转化率高达 20%左右。

私募基金购买行为全流程数据监控

金融市场瞬息万变,滞后一秒都可能带来天差地别的结果。由于证券自身的业务特点以及外部监管“零容忍”等,让金融市场需要更实时的信息系统,来确保信息的准确度和及时性。

alt

业务上遇到的查询挑战在于全链路、各环节数据都存放在不同的表中,查询复杂度高。例如,私募基金涉及风险偏好、风险承受能力等多表关联的丰富数据。StarRocks 提供了非常优秀的查询性能,相较之前的产品查询性能提高了 5 倍以上。在 StarRocks 的加持下,业务分析人员可以轻松地实现快速、准确查询,为精准判断市场趋势提供有力支持。

全域赋能实时数据集市

在证券公司的 MPP+Hadoop 体系中,包含了数据仓库、数据中台和若干数据集市,其中:资管业务、固收业务、金创业务、风控业务等不同业务都有其独立的数据集市。

alt

当分析师对投资交易类数据进行分析时,往往需要借助实时的行情数据。对于机构的中后台部门的风险管理报表或者监管报表应用场景,可以接受秒级延迟。引入 StarRocks 库后,通过与数据集市的融合,行情数据得以沉淀,为投资交易类的数据分析提供支持。

资管产品图谱及风险传导模型

近几年来,资产管理已成为券商的重点业务,也是营收增长的主要驱动力。

在进行资产产品管控过程中,需要接入和处理舆情数据,来及时对上下游资产的价格或估值作出评估。例如,某地区受到大规模自然灾害导致农作物减产,从而引起价格上涨,而以此为原材料的投资标可能也会受到影响,形成风险传导。

alt

这类业务场景的特点是并发不高但逻辑复杂,过去申万宏源使用 Hive 和知识图谱来处理,而现在可以在不需要进行预计算情况下,直接使用 StarRocks 通过多表关联来实时查询。

结语

随着互联网时代高速发展,申万宏源紧跟市场变化作出前沿思考,与StarRocks 和镜舟科技一起,共同探索和建设出更加统一、高性能的数据生态,实现申万宏源内部分析场景和面向消费服务场景的融合,申万宏源通过数据架构优化升级,为多个业务场景的运营和应用带来显著提速,赋能业务高效增长和发展。

本文由 mdnice 多平台发布

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

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

相关文章

error: failed to open index: Database already open. Cannot acquire lock报错解决办法

ordinals节点数据同步出现报错 error: failed to open index: Database already open. Cannot acquire lock.问题分析: 出现问题的原因是btcoin core节点数据没有同步完我们就开始进行ordinals数据同步,导致/root/.local/share/ord/index.redb 文件数据…

盒子模型的内容总结

知识引入 1.认识盒子模型 在浏览网站时我们会发现内容都是按照区域划分的。这使得网页很工整、美观。在页面中,每一块区域分别承载不同的内容,使得网页的内容虽然零散,但是在版式排列上依然清晰有条理。如图1 图1 *承载内容的区域称为盒子…

Next.js 学习笔记(八)——优化

优化 Next.js 提供了多种内置优化&#xff0c;旨在提高应用程序的速度和核心网络生命指数。本指南将介绍可用于增强用户体验的优化功能。 内置组件 内置组件抽象化了实现常见 UI 优化的复杂性。这些组件包括&#xff1a; 图像&#xff1a;基于本地 <img> 元素构建。图…

Flink问题解决及性能调优-【Flink rocksDB读写state大对象导致背压问题调优】

RocksDB是Flink中用于持久化状态的默认后端&#xff0c;它提供了高性能和可靠的状态存储。然而&#xff0c;当处理大型状态并频繁读写时&#xff0c;可能会导致背压问题&#xff0c;因为RocksDB需要从磁盘读取和写入数据&#xff0c;而这可能成为瓶颈。 遇到的问题 Flink开发…

STM32 有源蜂鸣器

模块介绍: 结构&#xff1a;有源蜂鸣器通常由一个振膜和一个驱动电路组成。振膜是负责产生声音的部分&#xff0c;而驱动电路则负责控制振荡频率和幅度。 工作原理&#xff1a;有源蜂鸣器的驱动电路会向振膜施加电压&#xff0c;使其振动产生声音。驱动电路可以根据输入信号的…

centos7安装mysql5.7 或者mysql8

1、centos7安装mysql8 mysql官网 https://dev.mysql.com/downloads/mysql/ 示例2个版本的下载地址 #5.7.30下载地址 wget https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.30-1.el7.x86_64.rpm-bundle.tar #8.0.22下载地址 wget https://cdn.mysql.com/archives/mysql-8…

网络防御保护——课程笔记

一.防火墙 防火墙的主要职责&#xff1a;控制和防护 --- 安全策略 --- 防火墙可以根据安全策略来抓取流量之后做出对应的动作。 防火墙的分类 防火墙的发展进程 防火墙的控制 带内管理 --- 通过网络环境对设备进行控制 --- telnet&#xff0c;ssh&#xff0c;web --- 登录设备…

【node】Node.js的常用内置模块:

文章目录 一、os模块&#xff1a;【1】常用的OS模块方法包括&#xff1a;【2】案例&#xff1a; 二、path模块&#xff1a;【1】常用的path模块方法包括&#xff1a;【2】案例&#xff1a; 三、url模块&#xff1a;【1】常用的url模块方法包括&#xff1a;【2】案例&#xff1a…

【Apache POI】百万级数据导出Excel,并含有折线等图表

需求概要 最近接到一个需求&#xff0c;概要来讲就是实现百万级数据导出Excel&#xff0c;并根据其中的数据项自动生成折线图等图表。经技术调研&#xff0c;针对内存、性能等要素&#xff0c;Apache POI此技术可完成此需求。 Apache POI是Apache软件基金会的开放源码函式库&am…

《教我兄弟学Android逆向15 xpose改机开发03-写一款自己的改机软件》

上一篇 《教我兄弟学Android逆向14 xpose改机开发02-改机代码基础编写》我带你熟悉了一下改机的流程,搭建了改机的基础代码,改机参数数据储存方面我们用的是SharedPreferences存储数据,界面方面写了一个一键新机的按钮,点一键新机的时候会随机生成imei数据存储到xml数据中,然后…

isctf---re

crackme 解压得到crackme.exe 运行得到flag babyRe 先猜e65537的rsa 先用Z3强行求出p、q&#xff0c;算出常规rsa中的phi&#xff0c;然后套用公式求出m exp #babyre wp from z3 import * import libnum from Crypto.Util.number import * p,q,cInts(p q c) S Solver() S…

【前端web入门第一天】02 HTML图片标签 超链接标签 音频标签 视频标签

文章目录: 1.HTML图片标签 1.1 图像标签-基本使用1.2 图像标签-属性1.3 路径 1.3.1 相对路径 1.3.2 绝对路径 2.超链接标签 3.音频标签 4.视频标签 1.HTML图片标签 1.1 图像标签-基本使用 作用:在网页中插入图片。 <img src"图片的URL">src用于指定图像…

前端框架---Vue2学习教程(上)

从HTML到现在一路跟过来的小伙伴们&#xff0c;坚持固然不容易&#xff0c;但我相信大家已经学到了不少&#xff0c;那么我们开始马不停蹄的进入前端的框架吧&#xff0c;下面讲的是Vue2&#xff0c;大家继续加油鸭&#xff01;&#xff01;&#xff01;&#xff01; Vue2 Vu…

遗传算法优化最大化效应的某些需求点可不配送的vrptw问题

标题&#xff1a;遗传算法优化最大化效应的某些需求点可不配送的vrptw问题 摘要&#xff1a; 在可不配送的车辆路径配送问题&#xff08;VRPTW&#xff09;中&#xff0c;我们面临着优化路径规划以最大化效用的挑战。本文提出了一种基于遗传算法的方法&#xff0c;旨在解决具…

【Shell实战案例面试题】输入网卡的名字,来输出网卡的IP

1.问题 参数后判断要加"" 名字为空时显示ip 2.分析 把本机的所有网卡名列出来&#xff0c;来引导用户输入 使用命令列出所有网卡信:ifconfig/ip a 设计一个函数&#xff0c;把网卡名作为参数&#xff0c;函数返回网卡的IP 在获取某个网卡IP时&#xff0c;考虑网…

Redis面试(三)

1.Redis报内存不足怎么处理 Redis内存不足的集中处理方式&#xff1a; 修改配置文件redis.cof的maxmemory参数&#xff0c;增加Redis的可用内存通过命令修改set maxmemory动态设置内存上限修改内存淘汰策略&#xff0c;及时释放内存使用Redis集群&#xff0c;及时进行扩容 2…

基于springboot的美发管理系统

文章目录 项目介绍主要功能截图&#xff1a;部分代码展示设计总结项目获取方式 &#x1f345; 作者主页&#xff1a;超级无敌暴龙战士塔塔开 &#x1f345; 简介&#xff1a;Java领域优质创作者&#x1f3c6;、 简历模板、学习资料、面试题库【关注我&#xff0c;都给你】 &…

让Unity迭代器性能提升5倍

最近在研究Unity il2cpp的代码生成和编译优化&#xff0c;结合之前遇到过的一个优化案例&#xff0c;给大家讲讲在Unity中迭代器相关代码生成的底层原理&#xff0c;以及在写代码过程中需要注意的一些特殊情况。 案例 首先我们来看一个非常简单的案例&#xff0c;代码如下&am…

3338 蓝桥杯 wyz的数组IV 简单

3338 蓝桥杯 wyz的数组IV 简单 //C风格解法1&#xff0c;通过率50% #include<bits/stdc.h>int main(){std::ios::sync_with_stdio(false);std::cin.tie(nullptr);std::cout.tie(nullptr);int n; std::cin >> n;int ans 0;std::vector<int>a(n);for(auto &am…

Docker本地部署APITable结合内网穿透实现公网访问

文章目录 前言1. 部署APITable2. cpolar的安装和注册3. 配置APITable公网访问地址4. 固定APITable公网地址 前言 vika维格表作为新一代数据生产力平台&#xff0c;是一款面向 API 的智能多维表格。它将复杂的可视化数据库、电子表格、实时在线协同、低代码开发技术四合为一&am…