摘要:兴业证券构建统一的云化数据库资源池,按需为各类应用提供高可用、高性能的数据库服务,在联机事务处理(OLTP)类系统的数据库分布式升级经验基础上,试点启动联机分析处理(OLAP)类系统的升级。
文/兴业证券金融科技部 刘洋 邱烨 孙重远
兴业证券信息技术部 陈林林 张道勇
证券业作为金融市场的核心组成部分,其技术应用创新建设不仅是保障国家金融安全的关键举措,也是促进数字化转型、加速关键业务系统升级进程的必要路径。
兴业证券构建统一的云化数据库资源池,按需为各类应用提供高可用、高性能的数据库服务,在联机事务处理(OLTP)类系统的数据库分布式升级经验基础上,试点启动联机分析处理(OLAP)类系统的升级。
本文以兴业证券OLAP类系统——投顾工作平台建设为例,重点介绍在关键业务系统升级深入推进的过程中,通过设计并实践多元化的优化策略,剖析验证海量数据处理与复杂联机查询在我国分布式数据库上的性能表现,最终实现技术应用创新环境下系统性能和扩展性的显著提升,形成一套基于OceanBase分布式数据库的系统实时分析解决方案和最佳实践,为OLAP类关键业务系统升级提供了宝贵经验。
截止目前,从OLTP类系统到OLAP类系统,兴业证券基于OceanBase分布式数据库已完成三十余套系统的数据库升级,未来将基于OceanBase开展AI方面的更多实践。
证券业软件系统业务种类繁多、逻辑复杂、数据来源广,存在大量复杂的OLAP场景,同时对系统的稳定性与实时性具有极高的要求,随着各证券公司加紧推动业务系统的技术应用创新建设,探索关键业务在海量数据与复杂查询场景下的解决方案,验证我国分布式数据库在OLAP场景的可行性与性能,已经是证券行业亟需破解的难题。
投顾工作平台作为兴业证券投顾服务的核心CRM支撑系统,是提高投资顾问工作效率、提升客户服务能力、实现财富管理业务转型和数字化转型目标的重要系统,其主要负载类型是实时数据分析与决策支持。
当前基于商业数据库的传统系统架构下,系统性能瓶颈已日益凸显,因此,开展投顾工作平台系统升级建设,探索关键业务在海量数据与复杂查询场景下的解决方案,具有重要的现实意义和战略价值。
投顾工作平台的系统升级改造面临以下挑战:
1、数据存储压力:数据来源多元、数据规模庞大(13TB)、数据日益增长;
2、数据计算压力:OLAP关联场景复杂,工作时间数据库CPU负载超过50%,峰值达到80%;
3、重构改造压力:商业数据库绑定程度深,业务重构难度较大。
为此,投顾工作台的系统升级改造,需要实现以下技术目标:
1、完成信创技术栈的全面升级,其中关键的数据库层需实现平替改造;
2、改造过程中,不影响业务新需求的持续交付;
3、改造完成后,系统性能较传统架构版本有所提升;
4、水平可扩展,未来数据量持续增长,在应用架构不做改动的前提下,系统处理能力持续提升。
为了达成上述目标,项目组分别进行了应用架构与数据库两方面的优化。
本次系统升级实践,采用了领域驱动设计(DDD)原则来指导应用架构的设计。通过这种设计,我们构建了一个分层的“3+N”领域架构,以促进业务能力的下沉和复用。系统被划分为三个主要层级:场景域、支撑域和核心域。
● 场景域专注于为PC端和移动端提供Web服务;
● 支撑域提供稳定可靠的技术服务基础;
● 核心域构建财富管理中台领域模型。
图1 系统升级应用架构
在数据库部署设计时,重点考虑通过数据库的分布式能力提升整体处理能力,满足当前业务使用;同时,考虑未来的可扩展性。在此背景下,我们选择在主中心使用三副本(3zone)、每副本2台物理节点(2-2-2)的部署架构,租户使用unit=2,primary_zone打散到3zone的配置,同时在灾备中心部署1:1全对等的环境。
在此架构下,主中心的6台数据库节点都能提供读写服务,少数派节点故障RPO=0,RTO
图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的优化或许有其极限,结合业务的优化是存在着无限可能的,例如模糊查找前置、复杂查询逻辑拆分等优化手段。但此类优化方案的缺点也很显著,由于此类优化可能改变现有功能,甚至需要调整原有系统功能,需要投入较大的沟通和开发成本。
针对不同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类系统的分布式升级提供了宝贵经验。随着国际形势的变化,确保关键信息系统的自主可靠成为国家安全的重要保障。技术应用创新不仅关乎国家安全与战略利益,更深度驱动技术创新、产业升级及经济发展。当前技术应用创新产业已从“规模化推广”阶段迈向“深化落地”,兴业证券也将持续践行自主可靠的国家战略。
来源:金融电子化