StarRocks——中信建投基于StarRocks构建统一查询服务平台

目录

一、需求背景

1.1 数据加工链路复杂

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

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

1.4 缺少与预计算能力加速一些固定查询

二、构建统一查询服务平台

三、落地后的效果与价值

四、项目经验总结


  原文大佬的这篇StarRocks应用实践有借鉴意义,这里摘抄下来用作学习和知识沉淀。

近年来,中信建投重视数据基础设施的建设,对自助分析、多维分析、固定报表和 API 数据服务等形式的用数需求一直在不断增长。

一、需求背景

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

1.1 数据加工链路复杂

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

  • 数据开发和维护成本高
  • 数据口径可能不一致,导致数据应用结果不准确
  • 用数需求难以得到及时满足,通常需要“T+1”才能产出数据报表

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

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

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

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

1.4 缺少与预计算能力加速一些固定查询

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

二、构建统一查询服务平台

    通过综合对比数据库即席查询、实时分析性能、预计算能力、数据联邦技术,并且结合中信建投已经在 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可通过创建外部表的方式,直接读取其他数据源,如 MySQL, Elasticsearch , Hive 等外部表中的数据,从⽽打破数据的隔离

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

3)在预计算方面

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

三、落地后的效果与价值

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

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

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

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

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

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

四、项目经验总结

   中信建投基于自身业务需求和已有技术架构情况选择以 StarRocks 构建统一数据服务入口的实践,为同类型券商企业提供了以下经验建议

1)分析型数据库的选型需要充分考虑企业自身的用数需求,中信建投大部分的数据都存储在 Hive 中,StarRocks 提供的类 Presto的外表查询功能可以避免数据迁移增加的额外成本,同时也很好地满足了公司的用数需求。

2)随着企业数据库规模不断增长,以及分析场景更加复杂,分析型数据库需要不断提升数据查询分析的性能。

参考文章:

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

laravel ApiResponse接口统一响应封装

一&#xff0c;新增接口返回码配置文件 在config中新增配置文件apicode.php <?phpreturn [ apicodes>[/*** Message("OK")* 对成功的 GET、PUT、PATCH 或 DELETE 操作进行响应。也可以被用在不创建新资源的 POST 操作上*/HTTP_OK > 200,/*** Message(&qu…

C#,K中心问题(K-centers Problem)的算法与源代码

1 K中心问题&#xff08;K-centers Problem&#xff09; k-centers problem: 寻找k个半径越小越好的center以覆盖所有的点。 比如&#xff1a;给定n个城市和每对城市之间的距离&#xff0c;选择k个城市放置仓库&#xff08;或ATM或云服务器&#xff09;&#xff0c;以使城市…

python实现ElGamal算法

ElGamal公钥密码算法是在密码协议中有着重要应用的一类公钥密码算法&#xff0c;基于公钥密码体制和椭圆曲线加密体系&#xff0c;其安全性是基于有限域上离散对数学问题的难解性。至今仍是一个安全性良好的公钥密码算法。既可用于加密又可用于数字签名的公钥密码体制。 数字签…

2.2_2 进程调度的时机、切换与过程、调度方式

文章目录 2.2_2 进程调度的时机、切换与过程、调度方式&#xff08;一&#xff09;进程调度的时机&#xff08;二&#xff09;进程调度的方式&#xff08;三&#xff09;进程的切换与过程 总结 2.2_2 进程调度的时机、切换与过程、调度方式 &#xff08;一&#xff09;进程调度…

Qt 自定义长条进度条(类似播放器进度条)

1.运行界面 2.步骤 其实很简单。 2.1绘制底图圆角矩形 2.2绘制播放进度圆角矩形 参考&#xff1a;painter绘图 3.源码 #pragma once#include <QWidget> #include <QLabel> #include <QHBoxLayout> #include <QMouseEvent> #include <QDebug&g…

助力智能化农田作物除草,基于YOLOv5全系列【n/s/m/l/x】参数模型开发构建农田作物场景下玉米苗、杂草检测识别分析系统

在我们前面的系列博文中&#xff0c;关于田间作物场景下的作物、杂草检测已经有过相关的开发实践了&#xff0c;结合智能化的设备可以实现只能除草等操作&#xff0c;玉米作物场景下的杂草检测我们则少有涉及&#xff0c;这里本文的主要目的就是想要基于DETR模型来开发构建玉米…

26、Qt调用.py文件中的函数

一、开发环境 Qt5.12.0 Python3.7.8 64bit 二、使用 新建一个Qt项目&#xff0c;右击项目名称&#xff0c;选择“添加库” 选择“外部库”&#xff0c;点击“下一步” 点击“浏览”&#xff0c;选择Python安装目录下的libs文件夹中的“python37.lib”文件&#xff0c;点击“下…

文献笔记:LINE: Large-scale Information Network Embedding

paper 看完√ code复现ing https://arxiv.org/pdf/1503.03578v1.pdf 本文研究了将非常大的信息网络嵌入到低维向量空间的问题&#xff0c;这在可视化、节点分类和链路预测等许多任务中都很有用。大多数现有的图形嵌入方法无法扩展到通常包含数百万个节点的现实世界信息网络。…

java 正则表达式介绍

Java正则表达式是一种强大的文本处理工具&#xff0c;它允许你进行模式匹配、搜索和文本操作。正则表达式提供了一种简洁、灵活的方式来处理字符串&#xff0c;可以用于各种应用场景&#xff0c;如数据验证、文本解析、搜索和替换等。 正则表达式的基础知识 正则表达式…

物联网主机:为智能交通赋能

物联网&#xff08;IoT&#xff09;技术的发展为智能交通领域带来了许多创新的解决方案。而在物联网应用中&#xff0c;物联网主机起着关键的作用。本文将为大家介绍一款名为E6000的物联网主机&#xff0c;它是一种多协议、多接口的物联网主机&#xff0c;为智能交通系统的建设…

高级语言期末2009级A卷(计算机学院)

1.编写bool函数&#xff0c;判定给定的正整数n&#xff0c;M是否满足&#xff1a;M为n的质因数&#xff08;能整除n的质数&#xff09; #include <stdio.h> #include <stdbool.h> #include <math.h>bool Isprime(int n) {if(n<1)return false;for(int i2…

spring boot整合cache使用memcached 优化将配置信息放入 application中管理

上文 spring boot整合cache使用memcached 我们简单做了个 spring boot 整合cache 使用 memcached 缓存的案例 但 我们是将地址这类信息 放在了config 目录下的一个 配置类中了 这样 可维护性肯定是很低的 其实 memcached 是有一系列配置的 我们还是正确将 配置信息 写进 appli…

基于springboot+vue的美食推荐商城

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…

图表背后的智慧:办公场景中的数据可视化革新

在现代办公场景中&#xff0c;数据可视化的应用已经成为提高效率、推动创新的得力工具。无论是管理层还是普通员工&#xff0c;都能从数据可视化中受益匪浅。下面我就以可视化从业者的角度&#xff0c;简单聊聊这个话题。 首先&#xff0c;数据可视化提升了数据的易读性与理解性…

【重温设计模式】装饰模式及其Java示例

装饰模式的介绍 在众多设计模式中&#xff0c;有一种叫做装饰模式&#xff0c;它以一种独特的方式赋予了代码更多的灵活性。 装饰模式是一种结构型设计模式&#xff0c;它允许我们在运行时动态地为对象添加新的行为。这就像是我们在装饰一个房间时&#xff0c;可以随意添加或更…

CentOS系统上安装幻兽帕鲁/Palworld服务端的详细步骤是什么?

CentOS系统上安装幻兽帕鲁/Palworld服务端的详细步骤是什么&#xff1f; 首先&#xff0c;需要确认Docker是否已经安装。如果未安装&#xff0c;则需要进行安装。接下来&#xff0c;运行Docker容器。这一步是为了创建一个可以运行幻兽帕鲁服务端的环境。然后&#xff0c;在容器…

bootstrap-table 多层组合表头

如下图所示的二层组合表头 来人&#xff0c;上代码&#xff01; table.bootstrapTable({url: $.fn.bootstrapTable.defaults.extend.index_url,pk: id,sortName: id,search: false,showToggle: false,showColumns: false,showExport: false, commonSearch: false,columns: [[…

ElasticSearch之分布式模型介绍,选主,脑裂

写在前面 本文看下es分布式模型相关内容。 1&#xff1a;分布式模型 1.1&#xff1a;分布式特征 支持水平扩展&#xff0c;可以存储PB级别数据&#xff0c;每个就能都有自己唯一的名称,默认名称时elasticsearch&#xff0c;可以通过配置文件&#xff0c;如cluster.name: my…

使用 Docker 部署 Fiora 在线聊天室平台

一、Fiora 介绍 Fiora 简介 Fiora 是一款开源免费的在线聊天系统。 GitHub&#xff1a;https://github.com/yinxin630/fiora Fiora 功能 注册账号并登录&#xff0c;可以长久保存你的数据加入现有群组或者创建自己的群组&#xff0c;来和大家交流和任意人私聊&#xff0c;并添…

Cascading risk assessment in power-communication interdependent networks论文导读

Cascading risk assessment in power-communication interdependent networks 前言碎碎念 新学期了&#xff0c;兜兜转转绕了一圈&#xff0c;看了两篇交通流预测的内容&#xff0c;不过我的主要研究方向不在于此。最近和一些老师沟通交流&#xff0c;感觉思路稍微清晰了一些…