暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

兴业证券OLAP类系统基于OceanBase的创新实践

OceanBase 2025-09-22
115

编者按

证券业作为金融市场的核心组成部分,其技术应用创新建设不仅是保障金融安全的关键举措,也是促进数字化转型、加速关键业务系统升级进程的必要路径。


兴业证券构建统一的云化数据库资源池,按需为各类应用提供高可用、高性能的数据库服务,在联机事务处理(OLTP)类系统的数据库分布式升级经验基础上,试点启动联机分析处理(OLAP)类系统的升级。


本文以兴业证券 OLAP 类系统——投顾工作平台建设为例,重点介绍在关键业务系统升级深入推进的过程中,通过设计并实践多元化的优化策略,剖析验证海量数据处理与复杂联机查询在我国分布式数据库上的性能表现,最终实现技术应用创新环境下系统性能和扩展性的显著提升,形成一套基于 OceanBase 分布式数据库的系统实时分析解决方案和最佳实践,为 OLAP 类关键业务系统升级提供了宝贵经验。


截至目前,从 OLTP 类系统到 OLAP 类系统,兴业证券基于 OceanBase 分布式数据库已完成三十余套系统的数据库升级,未来将基于 OceanBase 开展 AI 方面的更多实践。


本文经授权转载自“金融电子化”。


作者 | 兴业证券金融科技部 刘洋 邱烨 孙重远

兴业证券信息技术部 陈林林 张道勇


证券业亟须破解

分布式数据库 OLAP 场景应用难题


证券业软件系统业务种类繁多、逻辑复杂、数据来源广,存在大量复杂的 OLAP 场景,同时对系统的稳定性与实时性具有极高的要求。


随着各证券公司加紧推动业务系统的技术应用创新建设,探索关键业务在海量数据与复杂查询场景下的解决方案,验证我国分布式数据库在 OLAP 场景的可行性与性能,已经是证券行业亟需破解的难题。


投顾工作平台作为兴业证券投顾服务的核心 CRM 支撑系统,是提高投资顾问工作效率、提升客户服务能力、实现财富管理业务转型和数字化转型目标的重要系统,其主要负载类型是实时数据分析与决策支持。


当前基于商业数据库的传统系统架构下,系统性能瓶颈已日益凸显。因此,开展投顾工作平台系统升级建设,探索关键业务在海量数据与复杂查询场景下的解决方案,具有重要的现实意义和战略价值。


投顾工作平台的系统升级改造面临以下挑战:


1.数据存储压力:数据来源多元、数据规模庞大(13 TB)、数据日益增长;


2.数据计算压力:OLAP 关联场景复杂,工作时间数据库CPU负载超过 50%,峰值达到 80%;


3.重构改造压力:商业数据库绑定程度深,业务重构难度较大。


为此,投顾工作台的系统升级改造,需要实现以下技术目标: 


1.完成技术栈的全面升级,其中关键的数据库层需实现升级; 


2.改造过程中,不影响业务新需求的持续交付; 


3.改造完成后,系统性能较传统架构版本有所提升;


4.水平可扩展,未来数据量持续增长,在应用架构不做改动的前提下,系统处理能力持续提升。

为了达成上述目标,项目组分别进行了应用架构与数据库两方面的优化。


应用架构优化:构建分层“3+N”领域架构


本次系统升级实践,采用了领域驱动设计(DDD)原则来指导应用架构的设计。通过这种设计,我们构建了一个分层的“ 3+N ”领域架构,以促进业务能力的下沉和复用。系统被划分为三个主要层级:场景域、支撑域和核心域。


  • 场景域专注于为PC端和移动端提供Web服务;


  • 支撑域提供稳定可靠的技术服务基础;


  • 核心域构建财富管理中台领域模型。


图1   系统升级应用架构


数据库架构设计:兼顾性能与可扩展性


在数据库部署设计时,重点考虑通过数据库的分布式能力提升整体处理能力,满足当前业务使用;同时,考虑未来的可扩展性。


在此背景下,我们选择在主中心使用三副本(3zone)、每副本 2 台物理节点(2-2-2)的部署架构,租户使用 unit=2,primary_zone 打散到 3zone 的配置,同时在灾备中心部署 1:1 全对等的环境。


在此架构下,主中心的 6 台数据库节点都能提供读写服务,少数派节点故障 RPO=0,RTO<8s,灾备中心具备同等的处理能力与高可用能力。


图2   数据库集群/租户架构


自下而上的数据库优化方案


为确保系统升级建设过程平稳推进,及时发现并规避潜在的技术难题与风险,我们挑选了投顾工作平台中的正式客户查询功能作为技术验证的先锋场景。


鉴于投顾工作平台 80% 功能均隶属于 OLAP 范畴,而正式客户查询功能作为 OLAP 类功能的典型代表,其性能表现能够全面映射出系统在全新技术环境下的 OLAP 处理能力。 


项目组通过数据亲和分布、并行、向量化等手段,探索并实践了多种优化措施,形成了自下而上在数据库设计、SQL 执行计划、应用程序逻辑三个方面的优化方案。


1.数据亲和设计:让关联度强的数据在物理分布上更集中,减少复杂查询中数据在节点间的传输开销。


其中主要方法有三点:


  • 开展分区与表组规划工作,将数据按特定规则(普通表、客户 Hash 分区表、时间分区表)重新组织分区分组,相同表组的表分区数据会被调度到同一个节点上,减少分布式事务的发生概率和数据在节点间的传输;


  • 宽表及数据冗余设计,结合 OceanBase 高压缩比及底层行列混存架构,针对业务中关联性紧密的关键数据,构建业务宽表或者采用冗余存储方式,减少查询的数据表关联,以空间换时间,降低 OLAP 查询复杂度,可有效提升查询性能;


  • 使用复制表,对于 SQL 关联查询频繁且更新频率低的表(例如员工表和组织表)设置为复制表,复制表在 3 副本中的各个节点都能提供强一致查询,有效减少跨节点请求,提升查询性能。


2.执行计划优化:非最优执行计划将导致系统开销显著增加,特别当连接表数量增多时,会进一步产生更大的性能开销。为解决此类问题,项目组联合 OceanBase 团队深入分析,进行如下几方面优化:


  • 设计并行调度,使用 Parallel 指定并行调度机制执行查询,指示优化器并行线程数量,根据查询数据规模评估结果集的数量级,设置 4-16 的并行度。其中,对于执行大表扫描、大表连接、大数据量排序和聚合、批量插入、删除和更新数据操作,设置 16 的并行度。


  • 设计 SQL 优化器提示 HINT 注入,对执行计划进行人为干预。对个别复杂 SQL 的执行计划进行分析和归纳总结,结合业务数据模型发现潜在问题,制定出优化规则,生成最有利于该场景的 HINT 以获取最优的执行计划。目前已使用 LEADING、USE_HASH 等 HINT。

图3   SQLighten技术原理


3.程序逻辑优化:对于个别复杂 SQL,在程序逻辑层面通过精简和重构 SQL 语句,降低 SQL 语句的复杂度,具体包括如下两方面:
一是研发并行子查询技术。CRM 类系统经常需要做数据聚合展示而引发大量的子查询,研发基于注解和自动注册的并行子查询转换框架,自动分析字段依赖关系,利用并行化技术批量合并查询请求并填充结果,消除标量子查询等复杂结构,避免子查询性能损耗和硬编码繁琐开发,提高系统质量和标准化水平。


二是引入缓存管理框架。通过自动注册管理器,实现统一缓存管理,针对不同生命周期的数据支持不同的缓存策略,降低维护成本,提升查询效率,减轻数据库负担。


事实上,基于 SQL 的优化或许有其极限,结合业务的优化是存在着无限可能的,例如模糊查找前置、复杂查询逻辑拆分等优化手段。但此类优化方案的缺点也很显著,由于此类优化可能改变现有功能,甚至需要调整原有系统功能,需要投入较大的沟通和开发成本。


效果验证:即席查询性能提升 5 倍


针对不同 OLAP 业务场景开展性能测试,复杂 OLAP 场景选择正式客户查询中 10 张表以上的多表关联查询,简单 OLAP 场景选取正式客户查询中 5 张表以内的关联查询,重点关注平均响应时间随查询复杂度和优化手段变化的量化关系,以评估上述优化手段在处理不同复杂度 OLAP 工作负载时的性能表现。


场景一:复杂OLAP场景下不同优化手段独立性能表现


图4   复杂OLAP场景下不同优化手段独立性能表现

采用常见的复杂 OLAP 汇总场景对各种优化手段效果对比性能表现,相比于没有任何性能优化的复杂 OLAP 场景基线,关键数据冗余策略的优化效果最为显著,性能较基线提升近 20 倍。


其根本原因在于复杂 OLAP 场景涉及大量多表关联及分布式数据访问过程,而数据冗余策略通过将逻辑关联数据在物理层面集中存储,有效减少查询时所需关联操作次数以及 I/O 开销,进而大幅降低查询复杂度。


除并行调度外,其他优化手段均实现了不同程度的性能提升,而并行调度相比基线反而导致性能下降,这是由于复杂 OLAP 场景查询处理速度较为缓慢,当处于压测的高并发场景时,增加并行度会引发资源竞争等问题,从而对系统性能产生了负面影响。


场景二:复杂OLAP场景下不同优化手段组合性能表现


运用“贪心组合优化”的理念,对各类优化手段进行叠加组合,最终实现最佳优化性能。


鉴于数据分区/分组与表复制作为数据库存储机制层面的互补方法,在组合性能测试阶段,将对二者开展联合测试。此外,为更清晰地呈现变化趋势,绘图时会对平均响应时长进行对数变换处理,而附表中展示的则是实际的平均响应时长数据。


图5   复杂OLAP场景下不同优化手段组合性能表现


测试结果表明,在列表、汇总、统计等不同复杂 OLAP 场景下,系统性能均获得了显著提升,平均响应时间从优化前的 200 秒级降至秒级。其中,关键数据冗余策略表现最为突出,带来超过 10 倍的性能提升,成为最有效的优化手段,这也与场景一中的结论一致。


通过上述数据可发现,同一优化策略在各类应用场景所产生的性能提升效果存在差异,例如分区分组在汇总/统计场景效果显著,而在列表查询中则效果并不突出。


场景三:不同复杂度OLAP场景下性能表现


针对不同复杂度的 OLAP 场景展开对比分析,重点对比优化措施在简单查询( 5 表内关联)和复杂查询(10 表以上关联)在列表场景中的效果。


性能测试结果表明,经过优化后,主要接口查询性能均得到显著提升,简单 OLAP 查询平均响应时间降至 1 秒(原系统需 2.3 秒),复杂 OLAP 查询稳定在 1.9 秒(原系统需 105.6 秒)。


值得注意的是,优化措施在复杂 OLAP 场景的提升幅度显著高于简单 OLAP 场景。这主要是由于复杂 OLAP 执行路径也更加复杂,为优化措施提供了更大的改进空间。同时,由于复杂 OLAP 场景对资源调度和计算效率更加敏感,针对性的优化措施(如并行子查询、执行计划优化等)能够带来更明显的性能提升效果。


场景四:复杂OLAP场景下优化前后对比


采用相同的性能优化方案同时在原系统和新系统实施,并重点针对复杂 OLAP 场景开展对比。相同的性能优化方案在非信创环境中也展现出显著效果,可实现 3-10 倍的性能提升,证明该优化方法具有跨平台的通用价值。


综上,基于以上多个应用场景开展的性能测试结果分析可知,同一优化策略在不同类型应用场景的性能优化效果存在差异,多种优化手段协同作用时,性能提升效果更为显著。


同时,优化策略的组合形式对系统性能表现有着直接影响。此外,随着 OLAP 场景复杂程度的增加,性能优化所取得的成效愈发突出。这些优化手段不仅具有广泛的适用性,还与 OceanBase 的分布式架构高度适配。经过优化后,具备支撑处理亿级数据量的复杂 OLAP 类系统的能力。


以下是系统迁移优化前后的对比数据,基于 OceanBase 的 OLAP 类系统——投顾工作平台整体实现存储空间降低超 80%、即席查询性能提升 5 倍、关键跑批任务时长缩短 20%。


目前,投顾工作平台核心模块已进入双轨运行阶段,为 OLAP 类系统的分布式升级提供了宝贵经验。


了解更多

在线咨询

优质资料下载

往期推荐

 点击「阅读原文」,查看更多客户案例

文章转载自OceanBase,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论