3.00.3
注: 同时建议阅读兼容性说明。
新功能
- 推出 ORCA:企业级实时计算平台,支持以声明式方式便捷开发和部署延时敏感的分布式流计算任务。
- 新增支持数据静态加密(Transparent Data Encryption,简称 TDE)。
- 新增支持数据传输加密。
- 增强登录安全性。
- 新增支持数据脱敏。
- 新增配置项 maxJoinTaskRetry,用于设置在内存紧张时单个SQL JOIN 子任务的最大重试次数。
- 新增一系列函数与配置项,以增强登录安全性,包括:
- 支持配置登录失败自动锁定
- 手动锁定/解锁用户、查看用户锁定状态
- 自定义密码复杂度规则、密码有效期提醒及防止密码复用等功能。
- 新增配置项 enableStructuredAuditLog,支持开启结构化二进制格式的审计日志。
- 新增函数
scramClientFirst
和scramClientFinal
,并为createUser
函数新增 authMode 参数,以支持 SCRAM (Salted Challenge Response Authentication Mechanism) 协议。 - 新增配置项 enableHctEncryption,设置是否使用海光密码技术HCT(Hygon Cryptographic Technology)对静态加密、DolphinModule 加密进行加速。
- 新增函数
floatingRateBondDirtyPrice
,用于计算浮息债每 100 面值的含息价格。 - 新增函数
callableFixedRateBondDirtyPrice
,用于计算含权固息债的含息价格。 - 新增函数
convertibleFixedRateBondDirtyPrice
,用于计算固息可转债每 100 面值的含息价格 。 - 新增函数
amortizingFixedRateBondDirtyPrice
,用于计算摊还本金固息债券每 100 面值的含息价格。 - 新增函数
getDFSDatabasesByOwner
,用于查询当前集群中所有由指定用户创建的数据库。 - 新增函数
gmd5
和rowGmd5
,用于计算 MD5 哈希值。 - 新增函数
cubicHermiteSplineFit
,用于对一组数值向量进行三次埃尔米特(Hermite)插值。createYieldCurveEngine
参数 fitMethod 支持指定该函数。 - 新增函数
rms
,用于计算均方根。 - 新增函数
boxcox
,通过 Box-Cox 变换将输入数据转换为近似正态分布。 - 新增函数
arima
,用于实现差分整合移动平均自回归模型(ARIMA),以进行时间序列分析。 - 新增函数
runSQL
,通过支持变量传递参数,有效防范 SQL 注入风险。 - 新增支持通过
setDynamicConfig
函数在线修改 enableNullSafeJoin 配置项。同时,新增函数getEnableNullSafeJoin
用于获取在线修改后的 enableNullSafeJoin 配置值。 - 新增
notLike
、notBetween
、notIn
SQL 谓词及其对应函数,以支持更多匹配条件。 - 新增函数
createThresholdEngine
,用于创建阈值引擎,以实现基于累计值阈值触发的聚合计算。 - 新增函数
listAllMarkets
,deleteMarketHoliday
, 用于管理当前节点所有的交易日历。 - CEP 引擎实现内置 CEPMonitor 类,同时新增函数支持获取 monitor 和 listener 实例。
- 新增函数
getLocalIOTDBStaticTable
,用于获取本地节点所存储的 IOTDB 的静态表。 - 新增系列函数和配置项,以增强系统的登录安全性。
- 新增函数并优化部分函数,以支持 SCRAM 登录协议。
- 新增一系列函数,方便多集群管理操作。
- 新增函数
kernelRidge
,结合岭回归正则化和核技巧,拟合数据中的复杂非线性关系,并输出回归预测模型。 - 在无法通过 Web 等方式连接系统时,支持通过 Linux 终端手动建立本地连接并释放资源。该功能用于应急运维场景,不建议用于日常操作。
- 新增配置项 maxQueryExecutionTime,支持设置单个查询语句的最长执行时间。
- 新增函数
pchipInterpolateFit
,支持对一组数值向量 X 和 Y 进行分段三次 Hermite 多项式插值(PCHIP)。 - 新增函数
bondCalculator
,用于实现债券到期收益率、净价和全价三者之间的互算,同时支持计算久期、凸度等风险指标。 - 新增函数
setChunkLastUpdateTime
,支持手动设置指定分区的上次更新时间。 - 新增函数
compose
,用于创建一个复合函数。 - 新增函数
temporalDeltas
,用于计算数据结构中相邻元素之间的时间差。 - 新增函数
temporalDiff
,用于计算数据结构之间的时间差异。 - 新增函数
deepCopy
,用于创建对象的深拷贝。 - 新增函数
bvls
,用于执行有界变量最小二乘法(Bounded-Variable Least-Square),返回回归系数估计值。 - 新增配置项 autoConversionToColumnarTuple,用于控制在构造内存表时是否自动将 tuple 列转换为列数元组(ColumnarTuple)。如需兼容老版本行为,可将该配置项设置为 true。
功能优化
- 优化存算分离以下功能:
- 支持在单个节点上指定多个物理路径作为缓存目录。
- 计算节点的内存缓存容量上限单位由 MB 修改为 GB。
- 在安全关机后,计算节点的内存缓存会自动刷新到磁盘。
- 新增函数支持创建数据预热任务,将指定数据缓存至计算组。并支持任务状态查询。
- 新增函数
getComputeNodeCacheDetails
,用于查看当前计算节点具体缓存信息。 clearComputeNodeCache
新增参数 database 和 table,支持清空指定数据库或表的内存和磁盘缓存。- 支持对磁盘缓存的数据进行压缩。
- 优化了内存稳定性,提供了函数和配置选项以避免 OOM。
- 主键引擎布隆过滤器(bloomfilter 索引)新增支持以下类型:TEMPORAL, BINARY 和 COMPLEX。
- 创建 IOTDB 引擎时,若设置
chunkGranularity="DATABASE"
,系统将给出报错提示。 - 提升了批处理作业在高负载高并发场景下执行的稳定性。
- 优化节点启动时反序列化函数视图和定时任务文件的处理逻辑:若反序列化的方法定义中包含字典,且字典的值为函数定义,此前会导致相关函数视图和定时任务反序列化失败,启动异常关闭,现调整为直接抛出错误提示。
- 当存在库级别的表权限时,
getClusterDFSDatabases
支持显示对应的库。 - 权限 QUERY_RESULT_MEM_LIMIT 和TASK_GROUP_MEM_LIMIT 支持对用户组进行管理。
- 审计功能支持记录数据库的所有登录登出,权限修改,新建连接,配置文件修改等操作。
- 用户级别资源跟踪支持监控用户的网络使用流量。
- FICC 相关函数的枚举类型参数支持字符串类型或 DURATION 类型。
schema
函数支持返回表名与表的键值列。loadText
支持 DECIMAL128 类型。sortBy!
函数支持空表内存表。garch
函数支持 DECIMAL 类型。- 当
aggrTopN
函数的输入参数为有类型的空向量时,函数将返回一个空向量,而不再触发报错。 bfill
/ffill
支持 array vector 类型。interpolate
函数新增参数 index,可根据索引向量 index 对 X 进行插值。- tmTopN 系列函数支持交易日历的 DURATION。
iif
函数的 trueResult/falseTesult 支持 tuple。- 高阶函数新增参数 assembleRule,支持使用 4 种规则处理子任务。
-
transpose
函数支持将多个字典合并成一个表,且表的列支持 array vector 和 tuple 类型 ;支持将嵌套字典转化成表。 ewmMean
函数新增支持 halfLife 为 DURATION 类型,同时新增参数 times,以指定每个观测值的时间戳。subscribe
函数的 offset 参数支持设置为 -3,可以从当前流表中已保留数据(包括内存及磁盘中的持久化数据)中最早的一条记录开始订阅。- 优化了 TSDB 的并发查询性能,并提升了 DELETE FROM 操作的执行效率。
createLookupJoinEngine
新增参数 isInnerJoin,支持进行内连接。createOrderBookSnapshotEngine
进行如下优化:- 新增参数 includeImmediateExecution,支持委托明细中统计即时成交的信息。
- 加强计算性能的稳定性。
- 订单簿基础字段中 abnormal 为 true 的行为包含通过 forceTriggerTime 参数强制触发的当前合成的批次和之后的快照数据。
- 新增参数 securitySubType,支持设置生成订单簿的证券子类型。
- 订单簿引擎优化了即时成交记录的订单类型(orderType),由限价单调整为市价单。
- 新增参数 priceScale,支持设置输入表中 priceColumn 列的缩放比例。
- 支持输出成交明细中的 tradeBuyOrderTypeList 和 tradeSellOrderTypeList 两个字段。
createDailyTimeSeriesEngine
新增参数 mergeLastWindow 和 mergeSession。- 响应式状态引擎支持对 DECIMAL128 类型数据进行指标计算。
enableTablePersistence
新增参数 preCache,用于指定在 server 启动时从持久化流表加载到内存的记录条数。- SQL 查询语句新增支持不区分 true,false 关键字的大小写。
- 配置 enableNullSafeJoin=false 时,支持并行执行 join 操作。
- 提升了 SQL 并发查询的稳定性。
- UPDATE 语句支持更新内存表的 array vector 列。支持向内存表中添加 ANY 类型的列。
- 支持多表连接重排优化。
- 通过 UPDATE/DELETE 语句更新/删除分区表数据时,支持分区剪枝。
- 字典的 key 可以是关键词,比如 context。
- 优化 SymbolBase 内存缓存统计信息。
- 回放任务执行
cancelJob
后,系统不再继续执行后续代码,而是直接抛出异常。 - 新增了对 WHERE 条件数量和表达式长度(即表达式内部操作数数量)的限制(1024),超过此限制的查询将会报错。
- 在使用 LIMIT 或 TOP 子句时,系统将不再检查分区数量,从而避免因分区过多而报错。
- 优化使用 LIMIT 语句的查询性能。
- 优化了
temporalParse
函数的解析行为,超出有效范围数据不再报错,而是返回空值。 - 优化了 GROUP BY 分组算法的动态选择机制。
- 优化了分区剪枝机制。
- 优化了
tmbeta
函数的报错信息。 - 支持在流数据表和内存表中定义 ANY 类型的字段。
- 在分布式查询中,WHERE 条件中存在 CHAR 类型常量与 STRING 类型的分区列进行比较,未能正确报错。现在系统会抛出错误提示。
- 备份日志文件新增了 updateTime 字段。
- 打印日志支持记录 MVCC 表的操作信息。
- 优化
rand
函数,使 count 参数变为可选,支持不指定 count 时返回一个随机标量。 dropColumns!
函数支持删除分布式表非分区列。- TextDB 的支持 BLOB 类型索引列。
triggerNodeReport
函数新增参数 chunkId,支持仅上报指定 ID 的chunk 信息。grant
函数的 accessType 参数支持 MAX_PARTITION_NUM_PER_QUERY,以限制单次 SQL 查询的最大分区数量。- 支持 JSON 对象的值为非常量表达式。
- class 支持声明数组向量形式的成员变量。
- 优化了在处理具有大量 chunks(数十万个或以上)的集群时,
getClusterDFSDatabases
和getClusterDFSTables
的性能。 - 支持备份/恢复空的IOTDB 数据库中的表。
- 优化 class 以下功能:
- 支持声明数组向量形式的成员变量。
- 成员方法支持关键字参数。
- 在响应式状态引擎中使用类时,支持类的成员函数返回多个值。
故障修复
- 当查询主键列数大于 1 的 keyedTable/indexedTable 时,若查询空的 SYMBOL 类型向量时,可能导致 serve 崩溃。
- 高可用集群下,在自动新增分区后,如果不调用
loadTable
重新加载表,而是继续使用旧的句柄(handle),可能无法查询到新分区的数据。 - 在 FunctionView 中,若包含多表连接且其中涉及标准的 CROSS JOIN 时,服务器重启后偶尔可能导致函数视图的结果出现不正确。
- debug 模式下执行流订阅,可能会出现部分订阅分配不到线程。
- 在执行 ACL 日志相关的 checkpoint 操作后,catalog 信息可能丢失。
- SQL SELECT 中使用了返回多个值的自定义聚合函数时,且 GROUP BY 语句使用了
interval
,会导致查询报错。 segmentby
计算 DECIMAL128 类型数据时,出现精度丢失。- 在 N 对 N 回放时,如果数据中某个分区为空,可能会导致其中某些输出表的数据缺失。
- 在响应式状态引擎的状态函数
moving
中指定自定义函数的部分应用时,出现类型解析错误。 - 通过
getStreamEngineStat
查询订单簿快照引擎的 numGroups 不正确。 createDailyTimeSeriesEngine
配置 mergeSessionEnd=true 后, forceTriggerSessionEndTime 参数失效。此为 3.00.2.4 引入的问题。- 当横截面引擎的触发计算方式设置为 triggeringPattern="perRow" 时,如果插入数组向量,引擎会报错。
- 当集群因节点离线导致部分分区不在线时,在可用节点上执行多表 join 查询时,可能出现列名不存在的报错。
- 表连接操作中,若表名和内置函数同名会出现报错。
- 共享键值内存表进行表连接操作会报错。
- 当对 TSDB 中的库表进行频繁的并发更新和查询操作时,可能会导致查询结果返回为空。
- 流表中含有 array vector 列时,内存使用量统计不准确。
- 执行取消流表定义的操作(如
undef
,dropStreamTable
)后,流表的权限不会被自动收回或取消。 - 并发执行 SQL 语句进行多表连接(其中一个表是子查询),且 from 的对象是一个子查询时,可能导致 server 崩溃。
- 在 GROUP BY 分组查询中,对 SELECT 语句中的第一行为空的 STRING 类型列进行 max 求值的结果不正确。
- 证书格式不匹配导致在线更新时出现宕机。
- 插件依赖的 OpenSSL 版本与 server 不一致时,导致 server 崩溃。
- 分发引擎(
createStreamDispatchEngine
)写入异步持久化流表时,若流表的持久化线程出现堆积,可能造成 server 崩溃。 - 订阅流表时,由于网络线程与订阅线程间存在数据竞争导致 server 崩溃。
movingWindowData
在处理超大数据量时可能导致 server 崩溃。- 节点上线或下线前对分区元信息的并发访问导致出现数据竞争。
- 存算分离的 OLAP 代理存储引擎由于 cache 分配失败,导致 server 崩溃。
sqlColAlias
输入无效参数导致 server 崩溃。createWindowJoinEngine
在处理大量数据时出现内存不足(OOM) 导致 server 崩溃。regexReplace
函数在模块中解析失败。- 在模块内,把自定义函数当作 operator 使用,导致解析失败。
- SQL 中出现包含空条件的 WHERE 子句时未报错且返回空表。
- 通过
addNode
新增节点后,在不重启集群的情况下,系统不会自动为新节点设置代理节点。 - 启用增强安全验证时,密码过期后的提示信息不对。
- 在 MySQL 语法模式下,查询语句中若使用窗口函数的
lead
、lag
函数会导致 server 崩溃。
废弃功能
已弃用函数 registerSnapshotEngine、unregisterSnapshotEngine。