当前位置: 首页 > article >正文

从 GreenPlum 到镜舟数据库:杭银消费金融湖仓一体转型实践

作者:吴岐诗,杭银消费金融大数据应用开发工程师

本文整理自杭银消费金融大数据应用开发工程师在StarRocks Summit Asia 2024的分享

引言:融合数据湖与数仓的创新之路

在数字金融时代,数据已成为金融机构的核心竞争力。杭银消费金融作为一家持牌消费金融机构,虽以金融业务为核心,却始终保持着强烈的科技创新精神,发明专利的话屈居行业第二。面对业务高速发展带来的数据挑战,公司开始了一场围绕数据基础设施的变革——构建基于镜舟数据库的 GLH 湖仓一体平台。

GLH 代表了公司在湖仓一体化道路上的探索与实践,是连接业务与技术的关键桥梁。

一、GLH 建设背景:数据痛点驱动创新

1. 业务场景需求

作为一家以“数据、场景、风控、技术”为核心的消费金融机构,公司业务发展迅速,但传统数据处理架构已无法满足日益增长的数据需求,这些需求不仅关系到日常运营,更直接影响公司战略决策和合规底线。

• 策略数据实时性:金融风控策略需要准时获取数据支持决策,哪怕几分钟的延迟都可能导致风险控制失效;

• 多表数据一致性:不同库表间数据同步必须保持时间点一致性,一旦出现不一致,可能导致业务逻辑混乱;

• 经营数据准确性:管理层关注的经营日报必须准确及时,这直接影响了公司战略决策走向;

• 业务对账需求:日间数据支持业务对账流程,而传统 ETL 无法满足这一时效性要求;

• 监管合规要求:监管上报数据必须满足时效性和准确性;

2. 核心痛点分析

在传统数据架构下,公司遇到了几个关键问题:

问题 1:数据回溯困难

数据传输过程出现异常,可能造成数据缺失,问题发现不及时,数据回溯成本高。

问题 2:变动明细缺失

监管报送场景下,生产系统中客户信息一天内多次变更则需要报送每次的状态,但生产系统没有保存每次的变更信息,只能靠每日批量获取日终最后一次状态,无法满足监管要求全量报送每次变更的需求

问题 3:时点数据不准

受资源限制,抽取任务执行时点也可能存在偏差或无法执行,导致跨表数据同步存在时间差,同一业务在不同表中的数据状态不一致,造成业务逻辑混乱。

问题 4:跨系统日切问题

以交易对账还款场景为例,交易系统和账务系统等不同系统间对同一交易的处理时间不同,导致日切数据严重不准确,直接影响业务对账。

这些痛点不仅仅是技术困扰,更直接威胁业务发展:无法实时同步数据影响业务策略执行效果;数据不一致导致业务对账困难;数据质量无法保证使监管合规面临风险;数据回溯困难使审计工作耗时且成本高昂。

二、融合镜舟数据库打造湖仓一体架构

1. GLH功能架构

这一架构不仅满足功能需求,更兼顾了系统的稳定性、扩展性和可维护性,为湖仓一体平台奠定了坚实基础。

2. 为什么选择镜舟数据库替代 GreenPlum

在数据仓库选型这一关键决策上,团队经过反复论证和实践测试,最终选择镜舟数据库(StarRocks 企业版)作为核心存储引擎。团队面临的选择并不容易——原有的 26 台生产环境 GreenPlum 集群随着业务量增加,性能日益下降,而扩容意味着高昂的投入:

(1)降本增效:GreenPlum 的授权费用高昂且横向扩展成本高,而镜舟数据库提供了更具性价比的选择,符合公司降本增效的战略需求;

(2)实时写入能力:相比 Hive 等传统大数据工具,镜舟数据库支持实时数据写入和事务查询,在实时数据场景下有着天然优势;

(3)统一数据平台:数据分散在各个系统形成“数据孤岛”,而镜舟数据库作为统一的数据存储与计算平台,能够满足需求。

3. 基于镜舟数据库的湖仓一体架构设计

在新架构中,GLH与镜舟数据库深度融合,共同构建了真正意义上的湖仓一体平台。

• 存算分离设计:底层采用 HDFS 存储(规划未来迁移至 S3),灵活应对数据规模增长,既保证性能又控制成本;

• 多模型表设计:结合 StarRocks 的明细表和宽表能力,设计出支持时间序列、数据回溯等特性的自定义表结构,满足各种业务场景需求;

• 统一数据处理:采用“一次采集、多次加工”的理念,所有数据只需维护单一处理流程,避免重复开发,显著提升了开发效率和数据一致性;

• 灵活数据分发:支持通过 Kafka 向其他系统分发数据,满足 Flink CDC 等场景需求,打造了开放、灵活的数据生态。

三、显著成效:业务性能与成本效益兼顾

在实际部署过程中,团队积累了宝贵的经验:

• 批次时间优化:团队根据业务需求灵活调整数据同步批次时间,有的表需要 5秒同步一次,有的则是几分钟,这种差异化策略既满足了业务需求,又平衡了系统性能;

• 分区分桶调优:分析业务特点,重新设计了分区策略,以减少小文件合并开销,大幅提升了系统性能;

• 资源合理分配:计算节点与存储节点资源配比优化,监控显示,18个CN 节点和FE 节点组成的集群运行稳定,CPU利用率常年保持在50%以下,在下午和凌晨的业务高峰期也能从容应对,确保系统稳定运行;

业务成效

建成后取得了显著成效:

• 全面数据覆盖:已实接入 3,800+ 表,涵盖公司所有业务系统;

• 分钟级同步:从数据产生到可用,实现了分钟级无延迟同步,与传统T+1 模式相比,业务响应速度提升了数十倍;

• 批处理能力提升:支持每日运行 6,500+ 个任务,包括 800+ 个数仓任务,与原有架构相比,处理效率提升显著;

• 业务应用深化:打破了原有只允许批量查询的限制,开放实时查询接口,使业务系统能够直接获取实时数据;

这些成效不仅仅是数字上的提升,更转化为了业务响应速度的提高和客户体验的改善,为公司核心竞争力的提升做出了实质性贡献。

四、未来发展展望

GLH已完成核心功能建设,包括 API 服务、调度引擎、存储接入引擎以及数据管理、节点管理、任务管理等基础功能。未来发展方向包括:

1. 更开放的接口:支持接入更多计算引擎和存储引擎;

2. 丰富的插件生态:开发更多数据处理插件,增强平台数据处理能力;

3. 深化业务融合:进一步与业务系统深度融合,提供更精准的数据服务;

4. 技术持续演进:跟进存储技术发展,规划 S3 对象存储迁移;

结语

基于镜舟数据库构建的 GLH 湖仓一体平台,不仅解决了杭银消费金融在数据管理中面临的关键痛点,还为公司数字化转型提供了坚实的数据基础。通过构建“湖仓一体”的数据架构,公司实现了数据资产的整合与价值释放,为业务创新提供了强有力的数据支撑。

相关文章:

从 GreenPlum 到镜舟数据库:杭银消费金融湖仓一体转型实践

作者:吴岐诗,杭银消费金融大数据应用开发工程师 本文整理自杭银消费金融大数据应用开发工程师在StarRocks Summit Asia 2024的分享 引言:融合数据湖与数仓的创新之路 在数字金融时代,数据已成为金融机构的核心竞争力。杭银消费金…...

比较数据迁移后MySQL数据库和OceanBase数据仓库中的表

设计一个MySQL数据库和OceanBase数据仓库的表数据比较的详细程序流程,两张表是相同的结构,都有整型主键id字段,需要每次从数据库分批取得2000条数据,用于比较,比较操作的同时可以再取2000条数据,等上一次比较完成之后,开始比较,直到比较完所有的数据。比较操作需要比较…...

R 语言科研绘图第 55 期 --- 网络图-聚类

在发表科研论文的过程中,科研绘图是必不可少的,一张好看的图形会是文章很大的加分项。 为了便于使用,本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中,获取方式: R 语言科研绘图模板 --- sciRplothttps://mp.…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现企业微信功能

1. 开发环境准备 ​​安装DevEco Studio 3.1​​: 从华为开发者官网下载最新版DevEco Studio安装HarmonyOS 5.0 SDK ​​项目配置​​: // module.json5 {"module": {"requestPermissions": [{"name": "ohos.permis…...

LabVIEW双光子成像系统技术

双光子成像技术的核心特性 双光子成像通过双低能量光子协同激发机制,展现出显著的技术优势: 深层组织穿透能力:适用于活体组织深度成像 高分辨率观测性能:满足微观结构的精细研究需求 低光毒性特点:减少对样本的损伤…...

Caliper 负载(Workload)详细解析

Caliper 负载(Workload)详细解析 负载(Workload)是 Caliper 性能测试的核心部分,它定义了测试期间要执行的具体合约调用行为和交易模式。下面我将全面深入地讲解负载的各个方面。 一、负载模块基本结构 一个典型的负载模块(如 workload.js)包含以下基本结构: use strict;/…...

【 java 虚拟机知识 第一篇 】

目录 1.内存模型 1.1.JVM内存模型的介绍 1.2.堆和栈的区别 1.3.栈的存储细节 1.4.堆的部分 1.5.程序计数器的作用 1.6.方法区的内容 1.7.字符串池 1.8.引用类型 1.9.内存泄漏与内存溢出 1.10.会出现内存溢出的结构 1.内存模型 1.1.JVM内存模型的介绍 内存模型主要分…...

(一)单例模式

一、前言 单例模式属于六大创建型模式,即在软件设计过程中,主要关注创建对象的结果,并不关心创建对象的过程及细节。创建型设计模式将类对象的实例化过程进行抽象化接口设计,从而隐藏了类对象的实例是如何被创建的,封装了软件系统使用的具体对象类型。 六大创建型模式包括…...

day36-多路IO复用

一、基本概念 (服务器多客户端模型) 定义:单线程或单进程同时监测若干个文件描述符是否可以执行IO操作的能力 作用:应用程序通常需要处理来自多条事件流中的事件,比如我现在用的电脑,需要同时处理键盘鼠标…...

群晖NAS如何在虚拟机创建飞牛NAS

套件中心下载安装Virtual Machine Manager 创建虚拟机 配置虚拟机 飞牛官网下载 https://iso.liveupdate.fnnas.com/x86_64/trim/fnos-0.9.2-863.iso 群晖NAS如何在虚拟机创建飞牛NAS - 个人信息分享...

android13 app的触摸问题定位分析流程

一、知识点 一般来说,触摸问题都是app层面出问题,我们可以在ViewRootImpl.java添加log的方式定位;如果是touchableRegion的计算问题,就会相对比较麻烦了,需要通过adb shell dumpsys input > input.log指令,且通过打印堆栈的方式,逐步定位问题,并找到修改方案。 问题…...

MinIO Docker 部署:仅开放一个端口

MinIO Docker 部署:仅开放一个端口 在实际的服务器部署中,出于安全和管理的考虑,我们可能只能开放一个端口。MinIO 是一个高性能的对象存储服务,支持 Docker 部署,但默认情况下它需要两个端口:一个是 API 端口(用于存储和访问数据),另一个是控制台端口(用于管理界面…...

怎么让Comfyui导出的图像不包含工作流信息,

为了数据安全,让Comfyui导出的图像不包含工作流信息,导出的图像就不会拖到comfyui中加载出来工作流。 ComfyUI的目录下node.py 直接移除 pnginfo(推荐)​​ 在 save_images 方法中,​​删除或注释掉所有与 metadata …...

作为测试我们应该关注redis哪些方面

1、功能测试 数据结构操作:验证字符串、列表、哈希、集合和有序的基本操作是否正确 持久化:测试aof和aof持久化机制,确保数据在开启后正确恢复。 事务:检查事务的原子性和回滚机制。 发布订阅:确保消息正确传递。 2、性…...

Caliper 配置文件解析:fisco-bcos.json

config.yaml 文件 config.yaml 是 Caliper 的主配置文件,通常包含以下内容: test:name: fisco-bcos-test # 测试名称description: Performance test of FISCO-BCOS # 测试描述workers:type: local # 工作进程类型number: 5 # 工作进程数量monitor:type: - docker- pro…...

第7篇:中间件全链路监控与 SQL 性能分析实践

7.1 章节导读 在构建数据库中间件的过程中,可观测性 和 性能分析 是保障系统稳定性与可维护性的核心能力。 特别是在复杂分布式场景中,必须做到: 🔍 追踪每一条 SQL 的生命周期(从入口到数据库执行)&#…...

基于PHP的连锁酒店管理系统

有需要请加文章底部Q哦 可远程调试 基于PHP的连锁酒店管理系统 一 介绍 连锁酒店管理系统基于原生PHP开发,数据库mysql,前端bootstrap。系统角色分为用户和管理员。 技术栈 phpmysqlbootstrapphpstudyvscode 二 功能 用户 1 注册/登录/注销 2 个人中…...

解决:Android studio 编译后报错\app\src\main\cpp\CMakeLists.txt‘ to exist

现象: android studio报错: [CXX1409] D:\GitLab\xxxxx\app.cxx\Debug\3f3w4y1i\arm64-v8a\android_gradle_build.json : expected buildFiles file ‘D:\GitLab\xxxxx\app\src\main\cpp\CMakeLists.txt’ to exist 解决: 不要动CMakeLists.…...

Vite中定义@软链接

在webpack中可以直接通过符号表示src路径,但是vite中默认不可以。 如何实现: vite中提供了resolve.alias:通过别名在指向一个具体的路径 在vite.config.js中 import { join } from pathexport default defineConfig({plugins: [vue()],//…...

基于Java+VUE+MariaDB实现(Web)仿小米商城

仿小米商城 环境安装 nodejs maven JDK11 运行 mvn clean install -DskipTestscd adminmvn spring-boot:runcd ../webmvn spring-boot:runcd ../xiaomi-store-admin-vuenpm installnpm run servecd ../xiaomi-store-vuenpm installnpm run serve 注意:运行前…...

PostgreSQL——环境搭建

一、Linux # 安装 PostgreSQL 15 仓库 sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-$(rpm -E %{rhel})-x86_64/pgdg-redhat-repo-latest.noarch.rpm# 安装之前先确认是否已经存在PostgreSQL rpm -qa | grep postgres# 如果存在&#xff0…...

MacOS下Homebrew国内镜像加速指南(2025最新国内镜像加速)

macos brew国内镜像加速方法 brew install 加速formula.jws.json下载慢加速 🍺 最新版brew安装慢到怀疑人生?别怕,教你轻松起飞! 最近Homebrew更新至最新版,每次执行 brew 命令时都会自动从官方地址 https://formulae.…...

为什么要创建 Vue 实例

核心原因:Vue 需要一个「控制中心」来驱动整个应用 你可以把 Vue 实例想象成你应用的**「大脑」或「引擎」。它负责协调模板、数据、逻辑和行为,将它们变成一个活的、可交互的应用**。没有这个实例,你的代码只是一堆静态的 HTML、JavaScript 变量和函数,无法「活」起来。 …...

Qemu arm操作系统开发环境

使用qemu虚拟arm硬件比较合适。 步骤如下: 安装qemu apt install qemu-system安装aarch64-none-elf-gcc 需要手动下载,下载地址:https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-x…...

BLEU评分:机器翻译质量评估的黄金标准

BLEU评分:机器翻译质量评估的黄金标准 1. 引言 在自然语言处理(NLP)领域,衡量一个机器翻译模型的性能至关重要。BLEU (Bilingual Evaluation Understudy) 作为一种自动化评估指标,自2002年由IBM的Kishore Papineni等人提出以来,…...

【LeetCode】3309. 连接二进制表示可形成的最大数值(递归|回溯|位运算)

LeetCode 3309. 连接二进制表示可形成的最大数值(中等) 题目描述解题思路Java代码 题目描述 题目链接:LeetCode 3309. 连接二进制表示可形成的最大数值(中等) 给你一个长度为 3 的整数数组 nums。 现以某种顺序 连接…...

关于uniapp展示PDF的解决方案

在 UniApp 的 H5 环境中使用 pdf-vue3 组件可以实现完整的 PDF 预览功能。以下是详细实现步骤和注意事项&#xff1a; 一、安装依赖 安装 pdf-vue3 和 PDF.js 核心库&#xff1a; npm install pdf-vue3 pdfjs-dist二、基本使用示例 <template><view class"con…...

STM32---外部32.768K晶振(LSE)无法起振问题

晶振是否起振主要就检查两个1、晶振与MCU是否兼容&#xff1b;2、晶振的负载电容是否匹配 目录 一、判断晶振与MCU是否兼容 二、判断负载电容是否匹配 1. 晶振负载电容&#xff08;CL&#xff09;与匹配电容&#xff08;CL1、CL2&#xff09;的关系 2. 如何选择 CL1 和 CL…...

Python 实现 Web 静态服务器(HTTP 协议)

目录 一、在本地启动 HTTP 服务器1. Windows 下安装 node.js1&#xff09;下载安装包2&#xff09;配置环境变量3&#xff09;安装镜像4&#xff09;node.js 的常用命令 2. 安装 http-server 服务3. 使用 http-server 开启服务1&#xff09;使用 http-server2&#xff09;详解 …...

MySQL 索引底层结构揭秘:B-Tree 与 B+Tree 的区别与应用

文章目录 一、背景知识&#xff1a;什么是 B-Tree 和 BTree&#xff1f; B-Tree&#xff08;平衡多路查找树&#xff09; BTree&#xff08;B-Tree 的变种&#xff09; 二、结构对比&#xff1a;一张图看懂 三、为什么 MySQL InnoDB 选择 BTree&#xff1f; 1. 范围查询更快 2…...