3.00.3

注: 同时建议阅读兼容性说明

新功能

  • 推出 ORCA:企业级实时计算平台,支持以声明式方式便捷开发和部署延时敏感的分布式流计算任务。
  • 新增支持数据静态加密(Transparent Data Encryption,简称 TDE)。
  • 新增支持数据传输加密。
  • 增强登录安全性。
  • 新增支持数据脱敏。
  • 新增配置项 maxJoinTaskRetry,用于设置在内存紧张时单个SQL JOIN 子任务的最大重试次数。
  • 新增一系列函数与配置项,以增强登录安全性,包括:
    • 支持配置登录失败自动锁定
    • 手动锁定/解锁用户、查看用户锁定状态
    • 自定义密码复杂度规则、密码有效期提醒及防止密码复用等功能。
  • 新增配置项 enableStructuredAuditLog,支持开启结构化二进制格式的审计日志。
  • 新增函数 scramClientFirstscramClientFinal,并为 createUser 函数新增 authMode 参数,以支持 SCRAM (Salted Challenge Response Authentication Mechanism) 协议。
  • 新增配置项 enableHctEncryption,设置是否使用海光密码技术HCT(Hygon Cryptographic Technology)对静态加密、DolphinModule 加密进行加速。
  • 新增函数 floatingRateBondDirtyPrice,用于计算浮息债每 100 面值的含息价格。
  • 新增函数 callableFixedRateBondDirtyPrice,用于计算含权固息债的含息价格。
  • 新增函数 convertibleFixedRateBondDirtyPrice,用于计算固息可转债每 100 面值的含息价格 。
  • 新增函数 amortizingFixedRateBondDirtyPrice,用于计算摊还本金固息债券每 100 面值的含息价格。
  • 新增函数 getDFSDatabasesByOwner,用于查询当前集群中所有由指定用户创建的数据库。
  • 新增函数 gmd5rowGmd5,用于计算 MD5 哈希值。
  • 新增函数 cubicHermiteSplineFit,用于对一组数值向量进行三次埃尔米特(Hermite)插值。createYieldCurveEngine 参数 fitMethod 支持指定该函数。
  • 新增函数 rms,用于计算均方根。
  • 新增函数 boxcox,通过 Box-Cox 变换将输入数据转换为近似正态分布。
  • 新增函数 arima,用于实现差分整合移动平均自回归模型(ARIMA),以进行时间序列分析。
  • 新增函数 runSQL,通过支持变量传递参数,有效防范 SQL 注入风险。
  • 新增支持通过 setDynamicConfig 函数在线修改 enableNullSafeJoin 配置项。同时,新增函数 getEnableNullSafeJoin 用于获取在线修改后的 enableNullSafeJoin 配置值。
  • 新增 notLikenotBetweennotIn SQL 谓词及其对应函数,以支持更多匹配条件。
  • 新增函数 createThresholdEngine,用于创建阈值引擎,以实现基于累计值阈值触发的聚合计算。
  • 新增函数listAllMarketsdeleteMarketHoliday, 用于管理当前节点所有的交易日历。
  • 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 新增参数 databasetable,支持清空指定数据库或表的内存和磁盘缓存。
    • 支持对磁盘缓存的数据进行压缩。
  • 优化了内存稳定性,提供了函数和配置选项以避免 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,可根据索引向量 indexX 进行插值。
  • 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(数十万个或以上)的集群时,getClusterDFSDatabasesgetClusterDFSTables 的性能。
  • 支持备份/恢复空的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 列时,内存使用量统计不准确。
  • 执行取消流表定义的操作(如 undefdropStreamTable)后,流表的权限不会被自动收回或取消。
  • 并发执行 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 语法模式下,查询语句中若使用窗口函数的 leadlag 函数会导致 server 崩溃。

废弃功能

已弃用函数 registerSnapshotEngine、unregisterSnapshotEngine。