V3.00.5 & 2.00.18 更新!TPC-H 性能跃升,MPP 引擎来了…

DolphinDB
2026-02-14

赶在 2026 农历新年来临之际,DolphinDB 3.00.5 & 2.00.18 版本终于正式发布啦!

本次版本更新围绕“更快、更稳、更易用”做了大量优化,查询分析速度大幅提升,分布式协同计算能力全面增强,存算分离的资源调度也更加精细智能。与此同时,流计算、金融定价、工业监控等场景的功能进一步完善。

接下来,我们将从八个核心功能入手,带你详细了解这次版本的具体变化。

重点功能

1.1 SQL 执行引擎重磅升级

// 下述新功能仅 3.00.5 版本 Server 支持

新版 SQL 引擎带来两大核心突破:单机 Join 性能显著提升,同时引入 MPP 框架实现分布式并行计算。

  • Join 性能大幅提升

新版本对 SQL 执行引擎进行了深度优化。首先,单机 SQL 性能整体获得显著提升。 新版本对 SQL 引擎核心模块,特别是多表 Join 的执行逻辑与 Hash Join 算子进行了深度重构与优化。优化后的引擎在执行计划选择与 Join 计算效率上表现更优。在业界标准的 TPC-H 基准测试中,新版本在单机环境下的整体查询性能较前一版本有显著提升,其中涉及复杂关联与聚合的分析型查询(如 TPC-H 多表 Join 查询)性能提升尤为明显。

  • 引入 MPP(大规模并行处理)框架

新版本创新性地引入了 MPP(大规模并行处理)框架。该框架能够将复杂的查询任务(特别是多表关联分析)智能拆解,并动态调度到集群的多个节点上并行执行,从而充分利用分布式计算资源,实现了从“集中式计算”到“分布式协同计算”的模式跃迁。

性能表现上,这一重构带来了质的飞跃。在标准化 TPC-H 基准测试中,新版本开启 MPP 引擎后,在典型的多表关联与分析查询场景下展现出突破性性能表现。例如,在模拟真实商业分析的复杂查询中(如涉及多表关联与聚合的 TPC-H Q5、Q8 等),开启 MPP 引擎后较其自身不开启 MPP 时,性能实现了数倍至超过十倍的提升,部分复杂分析查询的耗时从分钟级缩减至秒级。

这一架构级改进意味着企业现在能够以极高的效率运行涉及大规模数据关联的即席分析、实时风控和复杂报表生成等任务,为商业智能、数据密集型分析场景提供了更强大的计算引擎支撑。


1.2 存算分离实现精准缓存与智能压缩

// 下述新功能仅 3.00.5 版本 Server 支持

新版本对存算分离架构进行了重要增强,聚焦于精细化缓存管理与高效数据传输两个核心层面,使系统在资源调度与性能优化方面更加精细、灵活与高效,旨在全面提升分布式计算效能与资源利用的智能化水平。

  • 引入计算组级别的表级缓存规则配置

新版本新增 addCacheRulesForComputeGroup、removeCacheRulesForComputeGroup 和 getCacheRulesForComputeGroup 函数,系统管理员可精确指定特定计算组缓存哪些分布式数据表,实现从粗放的“全部缓存”到精细的“按需缓存”模式升级。这一改进将有限的内存资源精准聚焦于高频访问的核心业务表,在显著降低 I/O 延迟、提升关键业务查询性能的同时,也通过规则与表生命周期联动及权限控制,增强了缓存策略的可控性与安全性,实现了缓存成本效益的最大化。

  • 优化存算分离场景下的数据传输效率

新版本新增了数据节点到计算节点的传输压缩控制功能。用户可以通过 enableTransferCompressionToComputeNode 配置项持久化配置,或者通过同名函数在线配置是否启用该功能。管理员可根据实际网络条件与负载灵活启停传输压缩,从而在网络带宽与 CPU 开销之间取得最佳平衡。该功能可有效降低跨节点数据传输的网络压力,缩短数据就绪时间,提升整体查询与计算管道的吞吐效率,尤其适用于跨地域或网络受限的分布式部署环境。

1.3 ORCA 流计算平台全面进化

// 下述新功能仅 3.00.5 版本 Server 支持

新版本围绕 ORCA 实时计算平台,以“更易用、更安全、更可靠”为核心目标,进行了系统性的功能增强与架构升级。

在易用性方面,新版本大幅简化了 UDF Engine 的创建流程,用户仅需专注于编写自定义函数逻辑,输出 Schema 由系统自动推导,外部变量也无需再手动初始化,实现了一键式接入。

在安全性上,新版本构建了完善的权限控制体系。通过将流图、流表等核心资源全面纳入统一权限管理,并确保 UDF Engine 内函数的执行权限与创建者严格一致,系统能够在创建与运行时主动拦截任何越权操作,从而为团队协同开发与生产环境管理提供了坚实的合规性保障。

在可靠性方面,新版本创新性地引入了共享对象,包括:

  • 共享内存表(创建函数 DStream::sharedTable)
  • 共享键值表(创建函数 DStream::sharedKeyedTable)
  • 共享字典(创建函数 DStream::sharedDict)

引入共享对象后,原本“重启丢失、跨节点不可见”的外部变量可以纳入 ORCA 统一管理。该机制支持状态持久化恢复与同一流图内跨 Engine/Task 的协同访问,并通过高性能增量 Checkpoint 大幅加速了故障后的状态恢复,为高可用与分布式流处理场景提供了坚实保障。

1.4 高可用进一步加强

// 下述新功能 3.00.5 & 2.00.18 版本 Server 均支持

新版本重构了高可用流表的发布-订阅逻辑,大幅提升了流数据高可用的稳定性。

此外,新版本新增支持了高可用 MVCC 表(通过函数 HaMvccTable 创建),在继承 MvccTable 核心功能与操作体验的同时,通过底层集成 Raft 共识协议,为企业关键数据提供了跨节点的强一致性与自动故障转移能力。用户仅需在建表时指定高可用集群配置,即可获得透明的数据复制与故障恢复,而日常的数据操作(增删改查)接口与原有习惯保持一致,学习成本极低。

1.5 支持流数据更新与状态重算

// 下述新功能仅 3.00.5 版本 Server 支持

新版本实现了流计算引擎的一项关键能力突破:原生支持数据更新(Update)操作。这标志着流处理逻辑能够像处理批量数据一样,精准地响应动态变化。

长期以来,流计算引擎主要处理“追加”(Append)数据。当业务中需要对已有键值(如未完结的 K 线、传感器最新状态)进行更新时,传统方案往往需要复杂的变通处理。本次升级的核心,便是让引擎能够理解并处理数据的“更新”意图。目前仅响应式状态引擎和时序聚合引擎的部分核心算子支持该功能。

为了实现这一目标,新版本配套引入了状态流表类型(通过函数 changelogStreamTable 创建)。该表通过内置的状态标识(N 新增/ U 更新),以统一接口向引擎清晰传达数据的操作语义。对于引擎而言,U 状态意味着一个明确的指令:需要先“回退”该键旧值的影响,再基于新值“重新计算”。这一机制保障了诸如累积求和、时间窗口聚合等状态计算的连续性与正确性,使实时指标能随数据修订而同步更新。除外,配套的 peekAppend 函数则为这一更新机制提供了“沙盒”测试能力,方便用户在修改生产逻辑前验证数据变更的影响。

这一特性精准契合实时 K 线指标计算、传感器状态监控、实时风控指标更新等对数据时效性和准确性要求极高的场景,使得流处理管道能够更自然、更可靠地应对真实业务中数据持续优化的需求,提升了流计算解决方案的整体健壮性。

1.6 FICC 新功能特性

// 下述新功能仅 3.00.5 版本 Server 支持

新版本推出了两大核心流引擎:实时曲线曲面构建引擎和 实时定价流引擎,共同构成了一个高效、自动化的实时市场数据处理与金融工具定价解决方案。

  • 实时曲线/曲面构建引擎 (Market Data Engine)

实时曲线/曲面构建引擎是一个流式处理系统,旨在将碎片化的原始报价和市场数据,自动、实时地构建成可直接用于估值定价的完整市场曲线(如收益率曲线)和曲面(如波动率曲面)。这解决了传统手动准备数据耗时费力、无法紧跟市场变化的痛点,通过自动化与实时化极大提升了交易与风控部门的数据准备效率,确保所使用的市场数据时刻反映最新行情。

  • 实时定价引擎 (Pricing Engine)

实时定价引擎在市场数据(如利率曲线)发生变化时,能自动触发相关金融产品(如债券、衍生品)的重新定价。它解决了金融工具估值计算滞后、无法满足实时盯市与快速决策需求的问题,支持毫秒级响应,确保无论是日终批量估值还是盘中实时盯市,定价结果都与市场同步。

上述两大引擎可以无缝衔接:实时构建出的市场曲线,可直接作为定价引擎的输入。这形成了一个从“原始报价”到“可用市场数据”再到“工具定价”的完整实时处理闭环。

此外,系统提供了简洁统一的接口进行管理和操作:

  • createMktDataEngine / createPricingEngine:快速创建引擎。
  • appendMktData:向引擎注入数据。
  • getMktData:查询构建好的市场数据。

通过引入高度自动化的实时构建与定价引擎,可以将繁琐、滞后的流程转化为高效、自动化的实时流水线,使各类机构都能具备应对现代金融市场所需的实时数据处理与决策能力,为投资交易和风险管理提供强大支持。

1.7 工业场景事件监控引擎增强

// 下述新功能 3.00.5 & 2.00.18 版本 Server 均支持

新版本针对工业物联网的独特数据特征,对流计算引擎进行了两项关键增强,以更低开销、更高精度处理设备监控中的复杂事件流。主要是包含两个方面:

  • 新增的稀疏响应式状态引擎 (Sparse Reactive State Engine)

稀疏响应式状态引擎用于专门处理需要依赖历史窗口的状态事件(如“连续三次满足条件”)。其核心创新在于稀疏计算能力。在工业场景中,一个设备或产线通常关联大量传感器,但任意时刻只有少量传感器产生有效数据。传统状态引擎在处理此类数据时,会因大量字段为空值而引发无效计算。本引擎通过为每个传感器指标独立配置计算规则,确保数据到达时仅触发与该有效数据相关的规则计算,从而从根源上避免了空值处理带来的性能开销,完美契合工业场景的稀疏数据流计算场景。

该引擎对应的创建函数为 createSparseReactiveStateEngine 和 DStream::SparseReactiveStateEngine(ORCA 框架)。

  • 增强无状态响应式引擎 (Reactive Stateless Engine)

无状态响应式引擎用于处理基于当前状态进行逻辑组合的“无状态事件”(如“当 A 和 B 状态同时为真时,检查 C 的值”)。本次增强的关键是引入了 triggerOn 参数,允许用户精确指定触发每个复合事件计算的源指标。例如,可以设定只有特定关键指标的数据到达时才检查最终的告警条件,即使其他关联状态发生变化也不会引发误触发,从而实现了计算行为的精确控制与性能的进一步优化。

配合新增的增、删、查规则管理函数,用户能够对监控规则进行全生命周期的动态管理。这一系列更新使得新版本能够以更低的资源消耗、更清晰的逻辑定义,高效处理工业产线监控、设备预测性维护等场景下的复杂事件流,为企业构建高可靠、可维护的实时监控系统提供了强大引擎。

1.8 模块市场正式上线

// 下述新功能 3.00.5 & 2.00.18 版本 Server 均支持

访问 http://marketplace.dolphindb.cn/,点击“模块”,官方/社区模块一键下载、即装即用!

新版本在 Server 端同步支持在线安装函数,3个步骤轻松安装并使用模块:

listRemoteModules() // 列出当前版本支持的模块
installModule(<moduleName>) // 下载安装模块
use <moduleName> 

此外,还可以通过函数 getLoadedModules 查询当前会话中已经加载的模块。

同时我们期待每一位开发者的参与和贡献模块代码,共同打造充满活力的开发者生态。为此,新版本新增函数 encryptModule 对模块(dos 文件)进行加密,用于生成可分发的加密模块(dom 文件)。

现在就来体验更流畅、更安全的模块化开发流程吧!

其它功能

2.1 函数库更加丰富

FICC & Equity 功能新增函数一览

// 下述新功能仅 3.00.5 版本 Server 支持

除支持了曲线/曲面构建和实时定价引擎外,新版本新增了一系列标准化工具函数,覆盖从基础计算到专业定价的全场景需求,保持 DolphinDB 统一、智能的设计理念。

核心工具函数

  • 基础金融计算:新增 yearFrac 函数,支持多种计息规则(如 Actual/360、Actual/365、Actual/Actual ISDA/ISMA 等),用于依据指定计息规则精确计算起止日期之间的年化时间长度(年数)。
  • 定价器扩展:定价函数 instrumentPricer / portfolioPricer 现已支持 Market Data Engine 和 UDF 作为输入源。
  • 工具解析:parseInstrument 函数进一步增强,支持更丰富的金融工具类型解析。
  • 可视化:绘图函数 plot 新增对 3D 曲面图支持,可对波动率曲面等三维金融数据进行可视化展示。

固收专用函数

债券计算增强:债券计算器(对应函数 bondInstrumentCalculator) 新增支持交易所含权债(Option Bond)计算,算法和中证(CSI)对齐。

金融工程函数

  • 权益类:新增 eqDividendCurveBuilder、eqVolatilitySurfaceBuilder、eqEuropeanOptionPricer、eqAmericanOptionPricer、eqProxyVolatilitySurfaceBuilder 等函数,覆盖权益类分红曲线构建、期权波动率曲面构建、期权定价等全流程。
  • 商品类:新增 cmFutVolatilitySurfaceBuilder、cmFutAmericanOptionPricer、cmFutEuropeanOptionPricer 等函数,支持商品期货期权波动率曲面构建及期权定价。
  • 定价函数性能增强:bondPricer、bondFuturesPricer、irDepositPricer、irFixedFloatingSwapPricer、fxForwardPricer、fxSwapPricer、fxEuropeanOptionPricer 等函数现已支持批量定价模式。

   注:上述所有期权定价函数均支持 Greeks(风险指标)计算。

这些函数与实时引擎协同,为用户提供从数据注入、实时构建、智能定价到结果可视化的完整解决方案。


// 下述新功能 3.00.5 & 2.00.18 版本 Server 均支持

时间序列处理

  • 窗口计算优化:函数 movingWindowData 支持数组向量(Array Vector),提升复杂结构数据的滑动分析能力。
  • 分组窗口计算:高阶函数 contextBy 支持按自定义函数进行时间窗口滑动的计算,增强分组内的灵活滚动聚合。使用语法可参考:
contextby(func=tmoving{udf,,,3d}, funcArgs=(trade_date,(price, qty)), groupingCol=sym)

统计分析与数据操作

  • 协方差计算扩展:新增 covarp 函数及其滑动窗口、行计算函数,并支持在流式计算引擎中使用。
  • 数据分箱与分组:新增 qcut 函数,支持按分位数分组。
  • 数组操作增强:新增 remove! 函数,支持按位置删除向量或元组中的元素。

相似度计算函数

新增向量相似度与距离计算函数,增强 DolphinDB 在向量运算与相似性分析方面的能力。

  • 函数 minkowski:计算向量的闵可夫斯基距离
  • 函数 seuclidean:计算向量的标准化欧式距离
  • 函数 cosine:计算向量的余弦相似度
  • 函数 mahalanobis:计算向量的马氏距离

这些新增函数进一步完善了 DolphinDB 在量化研究、金融工程与数据科学场景下的函数生态,为用户提供更完备、高效的内置计算能力。

2.2 数据库联邦查询拓展

// 下述新功能仅 3.00.5 版本 Server 支持

新版本在数据库连接与联邦查询方面持续增强,进一步提升 DolphinDB 在多源数据集成与跨系统分析领域的能力。外部表创建功能新增支持 Hive、GaussDB 等四种数据源,显著简化异构数据接入流程;联邦查询能力同步升级,新增 runExternalQuery 函数,支持通过统一的 SQL 透传方式对 MySQL、PostgreSQL、Oracle、Hive、GaussDB 等主流数据库进行即时访问与联合分析,无需迁移数据即可实现跨源查询。

2.3 SQL 语法更加健壮

// 下述新功能 3.00.5 & 2.00.18 版本 Server 均支持

新版本在 SQL 编程能力方面进行了持续优化。

对于基于函数的 SQL 元编程场景,新增支持了 cgroup by 语义,支持用户通过元代码方式灵活生成包含自定义分组逻辑的查询语句,进一步提升动态 SQL 编程的灵活性与表达能力。

在语法层面,insert into 语句现已支持标准 SQL 的部分字段插入方式,方便用户按需指定写入列,提升数据写入的便捷性。此外,新版本新增 matchedRowCount 函数,用于返回最近一次更新、删除或合并操作中匹配条件的行数,方便用户精确追踪数据操作影响范围。

2.4 流计算进一步增强

新版本在流式数据处理方面进行了重要扩展,进一步提升复杂金融数据实时聚合与流计算管理的灵活性。

时序引擎支持数组向量分组聚合

// 下述新功能 3.00.5 & 2.00.18 版本 Server 均支持

时序聚合引擎的分组字段现已支持数组向量类型。系统会自动将数组向量展开为一维向量后再进行分组计算,适用于多档委托行情、逐笔成交等复杂数据结构场景。用户可在同一时间窗口内,按股票代码、买卖方向、委托价格等多维字段,实时计算各价位的委托金额、委托笔数等聚合指标,大幅简化高频行情实时处理逻辑。

流式 SQL 元信息查询

// 下述新功能仅 3.00.5 版本 Server 支持

新增 getStreamingSQLSubscriptionInfo 函数,支持查询指定流式 SQL 的元数据信息。该函数的返回值是一个字典,包含以下键值:

  • leadingRecordInsertTime:触发最近一次更新的最早数据插入时间
  • lastRecordInsertTime:触发最近一次更新的最晚数据插入时间
  • lastUpdateTime:当前结果集的最近更新时间

该功能为流计算任务的监控、调试与运维提供了更精细的可观测能力。

2.5 运维效率和安全性提升

新版本在系统可观测性、权限管理及许可维护方面进行了多项优化,进一步提升集群运维效率与安全性。

函数视图管理增强

// 下述新功能 3.00.5 & 2.00.18 版本 Server 均支持

getFunctionViews 函数新增返回函数视图的创建者(Owner) 和创建时间(Create Time) 信息,方便用户追溯自定义函数视图的来源与归属,提升代码管理与审计能力。

分布式表访问权限精细化

// 下述新功能 3.00.5 & 2.00.18 版本 Server 均支持

getTables 函数增加权限控制,非管理员用户仅能返回其拥有数据库或表级权限(如 DB_READ、TABLE_READ 等)的分布式表,避免敏感信息泄露,增强多租户环境下的数据隔离能力。

许可管理便捷化

// 下述新功能 3.00.5 & 2.00.18 版本 Server 均支持

支持商用版 License Server 在调用 setLicenseServerUserResource 函数后在线更新客户端 license 过期时间,无需重启服务,降低运维成本。

集群对象查询优化

// 下述新功能仅 3.00.5 版本 Server 支持

getClusterDFSDatabases 与 getClusterDFSTables 函数新增可选参数 includeSysDb 和 includeSysTable,支持管理员在查询时按需过滤系统库与系统表,减少干扰信息,提升日常巡检效率。

单点登录能力扩展

// 下述新功能仅 3.00.5 版本 Server 支持

新增支持在单点登录流程中使用 HTTP 协议,同时新增配置项 oauthAllowPasswordLoginNodes,允许管理员按节点粒度控制账号密码登录方式,为混合安全策略下的系统部署提供更灵活的适配方案。

2.6 系统功能优化

新版本在系统易用性、性能与可观测性方面持续改进。

  • 运维管理:getFunctionViews 新增创建者与创建时间信息,getSessionMemoryStat 支持主键引擎缓存统计,持久化流表内存占用得到优化。
  • 开发体验:语法异常信息新增行号定位,赋值语句及可修改函数现支持对元组、字典成员的直接修改,API 字符串写入支持按字段类型自动转换。
  • 性能提升:窗口连接引擎(Window Join Engine)和就近连接引擎(Nearest Join Engine)性能提升;context by 分组查询以及文本存储引擎的模糊匹配查询性能均得到优化;Orca 跨集群查询的性能也进一步提升。

此外,单点登录流程、License Server 启动策略、写入卷分配策略等基础设施亦同步优化,全面提升系统在复杂生产环境中的稳健性与效率。

版本升级 · 必读

由于权限文件存在兼容性问题,请各位用户在升级前备份权限相关的 ACL 文件,若为 Raft 集群还需备份 Raft 相关的文件。需要备份的文件列表如下:

如需了解全部版本优化、故障修复及兼容性更新,请点击阅读原文,跳转至文档中心查看详细版本说明。