新版本 | 异步复制、交易日历、自定义状态函数......请查收!
页面介绍 DolphinDB 发布 V2.00.9 与 V1.30.21,并概述新功能与改进方向。
What this page covers
- 版本发布概述(V2.00.9 与 V1.30.21)。
- 新特性一览:数据库、流计算、SQL、高阶函数与向量化。
- 集群间数据异步复制与运维监控能力。
- 权限管理改进与更细粒度写入权限。
- 内置交易日历与相关函数使用。
- 流数据引擎中自定义状态函数(插件化)。
- 大数据量分组计算优化与 Pivot by 多线程加速。
技能认证特训营第二期报名信息
页面顶部横幅推广技能认证特训营第二期并提供限时报名链接与专属福利优惠提示。
- 横幅信息指向“技能认证特训营第二期”。
- 提供限时报名链接入口。
- 提示存在专属福利或优惠信息。
新闻页标题与发布时间
标识该内容为新闻并给出文章标题与发布日期。
- 页面将内容标识为新闻类型内容。
- 页面展示文章标题。
- 页面给出发布日期信息。
版本发布概述(V2.00.9 与 V1.30.21)
说明 DolphinDB 发布 V2.00.9 与 V1.30.21,新功能多且对数据库进行全方位提升。
- DolphinDB 近日发布 V2.00.9 与 V1.30.21。
- 页面称该更新新增功能较多。
- 页面称对数据库进行了全方位提升。
新特性一览:数据库、流计算、SQL、高阶函数与向量化
按模块列出新版本在数据库、流计算、SQL 与高阶函数/向量化方面的新增与优化点。
- 数据库模块新增主从集群异步复制功能。
- 权限管理能力提升,支持更灵活的分层管理。
- 新增交易日历数据并支持自定义交易日历。
- 新增 License server 功能用于资源分配。
- 覆盖流计算、SQL 兼容性与高阶函数/向量化相关优化点。
核心功能与亮点引导
引出后续对核心功能与亮点的详细介绍。
- 该部分用于引导进入后续详细内容。
- 后续内容聚焦核心功能与亮点展开。
异步复制提升容灾能力
介绍主从架构下的集群间数据异步复制、其一致性与容错/扩展特性,以及用于监控复制状态的新增运维函数。
- 集群间数据异步复制采用主从架构。
- 支持将主集群数据复制到从集群。
- 目标之一是实现异地容灾。
- 主集群增减数据节点无需重启。
- 主从集群间无需做节点映射。
- 页面描述其在多数情况下具备不丢失或不不一致的容错表现。
- 新增函数用于监控异步复制状态与进度。
更强大的权限管理
说明权限管理改进:库级读写权限、DB_MANAGE 数据库级权限设置、查询结果内存限制字段,以及更细粒度的表写入权限拆分。
- 读写权限可配置到数据库级别。
- DB_MANAGE 支持对指定数据库授予或取消管理权限。
- 新增 QUERY_RESULT_MEM_LIMIT 字段可设置用户查询内存限制。
- 表写入权限拆分为插入、更新、删除三类控制项。
- 页面提示仅用 TABLE_WRITE 可能带来数据安全隐患。
自带交易日历的数据库
介绍内置交易日历(覆盖国内外交易所、支持自定义)及其在多个时间序列相关函数中的使用,并给出获取日历的函数名。
- 提供国内外各大交易所的交易日历数据。
- 支持用户自定义交易日历。
- 支持在 temporalAdd、resample、asfreq、transFreq 中使用交易日历进行计算。
- getMarketCalendar 用于获取期望日期内的交易日历。
- 页面给出一般情况下全年交易日数量约为 250 天左右的描述。
流数据引擎中自定义状态函数(插件化)
解释在响应式状态引擎中将状态函数插件化以支持自定义算子与业务逻辑,并说明可通过代码导入插件与查询状态函数列表。
- 高频行情下因子计算会随每条新数据注入更新。
- 该类因子计算具有状态性并依赖历史状态。
- 页面提出可用响应式状态引擎应对该类计算难题。
- 状态函数支持插件化以便灵活定制。
- listStateFunction 可列出通过插件导入的状态函数及用法。
- 示例插件名包含 PluginReactiveState(通过 loadPlugin 加载)。
- 页面描述已基于插件开发相关函数以访问历史数据或中间状态。
响应式状态引擎性能优化(JIT)与其他改进
描述通过 JIT 支持更多常用函数与提升特定/自定义函数性能,并列出流数据引擎的其他性能与订阅连接相关改进。
- JIT 新增支持 sum、avg、count、size、min、max、iif 等函数。
- 页面称 JIT 可提升流数据引擎中特定函数与自定义函数的性能。
- V2.00.9 支持流数据订阅客户端成为接收数据的一方。
- 在流订阅反转基础上支持 WebSocket 连接。
- 页面给出异构流表多表数据回放的理想性能描述(约 300 万条/秒)。
- streamEngineParser 优化以产生更少引擎并追求级联方案最优。
大数据量分组计算与 Pivot by 多线程加速
说明 group by/context by 性能提升(十倍以上)、context by 输入支持扩展,以及 Pivot by 多线程加速与相关性能优化。
- group by / context by 在特定大数据量场景下性能提升十倍以上。
- context by 新增支持 matrix 和 table 作为输入形式。
- Pivot by 被描述为拓展标准 SQL 的功能,用于窄表转宽表。
- Pivot by 在新版本中采用多线程加速计算。
- 页面描述资源充足时 Pivot by 性能可提升几十倍。
未完待续:下个版本开发重点
列出后续版本计划开发的重点方向,包括分布式连接、OLTP 内存引擎、TSDB 并发性能、JIT/脚本优化与巡检工具等。
- 规划分布式多线程多表连接能力。
- 规划 OLTP 内存存储引擎与嵌入式版本以适配更低时延场景。
- 规划提升 TSDB 高并发性能。
- 规划通过 JIT 与脚本语言优化提升流计算与脚本性能。
- 规划提供数据库安全/健康/稳定性巡检工具以提升运维效率。
Facts Index
| Entity | Attribute | Value | Confidence |
|---|---|---|---|
| 技能认证特训营第二期 | status | 正式开启,并提供限时报名链接与专属福利优惠提示 | medium |
| 限时报名链接 | url | https://www.qingsuyun.com/h5/e/217471/5/ | high |
| 新闻发布日期 | date | 2023.02.16 | high |
| DolphinDB | released_versions | V2.00.9 与 V1.30.21 新版本近日已经发布 | high |
| 本次更新规模 | claim | 迄今为止新增功能最多的一次更新,并对数据库做了全方位提升 | low |
| 数据库模块 | new_feature | 主从集群异步复制功能(用于数据安全与数据库管理,加强容灾能力) | high |
| 权限管理 | improvement | 权限管理能力大幅提升,支持更高效、灵活的分层管理 | medium |
| 交易日历 | new_feature | 提供国内外各大交易所的日历数据,并支持用户自定义交易日历 | high |
| License server | new_feature | 新增 License server 功能,帮助用户合理分配资源 | high |
| DECIMAL 数据类型 | improvement | 加强 DECIMAL 数据类型的函数支持;大部分常用计算函数如 cumrank 等已支持;V2.00.9 支持创建 DECIMAL 类型的数组向量 | high |
| Arrow 与 Python API | support | 新增对 arrow 格式的支持;加载插件后 Python API 可以以 arrow 协议与 DolphinDB 交互 | high |
| 流计算 | new_feature | 推出响应式状态引擎状态函数插件,扩展非标准化函数能力,支持用户自定义算子,并优化响应式状态引擎计算性能 | high |
| 异构流表多表数据回放 | performance | 理想情况下最快可达约 300万条/秒 | medium |
| streamEngineParser | optimization | 优化使其产生尽量少的引擎,达到最优级联方案 | high |
| genericStateIterate / genericTStateIterate | new_function | 新增函数支持在流数据中窗口迭代计算 | high |
| movingWindowData / tmovingWindowData | new_function | 新增函数用于获取流计算中历史滑动窗口的数据 | high |
| SQL 兼容性 | improvement | 加强对标准 SQL 语法的兼容,并优化 group by 与 context by 在大量分组下的计算性能 | high |
| SQL 新增语句 | added | drop(支持删库、删表)、create local temporary table(本地临时内存表)、alter(列名重命名、删除列)、case when、union/union all、join on、with as(支持 with 关键字使用参数对列重命名) | high |
| SQL 新增谓词 | added | (not) between and、is null/is not null、(not) exists/not exist、any/all | high |
| SQL 新增函数 | added | nullIf、coalesce | high |
| SQL 新增关键字 | added | distinct、nulls first/nulls last(order by 关键字) | high |
| 共享表 append/insert into | transaction_support | 支持通过 transaction 语句实现事务 | high |
| SQL where 条件 | capability | 支持使用 select 子句中的列别名或新创建的列作为 where 的过滤条件 | high |
| SQL 时间类型与 interval 分组 | capability | where 条件里的时间类型可以自动转换为 interval 分组的时间类型 | high |
| SQL in 元组查询条件 | limitation_removed | 放开了元组内元素个数限制 | high |
| lsj | performance_optimization | 优化在大数据量下的性能 | medium |
| percentile / median | performance_optimization | V2.00.9 优化在分布式查询下的性能 | high |
| 分区表 ej | performance_optimization | V2.00.9 优化性能 | high |
| 高阶函数与向量化计算 | improvement | 系统性优化高阶函数,支持高阶函数迭用,增强向量化计算;新增 byColumn 使 accumulate 等支持列内竖向计算,并支持在流计算中使用 accumulate | high |
| dict / syncDict | new_parameter | 新增参数 ordered,用于创建有序字典;支持两个字典的二元操作,以及字典与 scalar、vector 的二元操作 | high |
| interval 函数 | new_parameters | 新增参数 closed、label、origin | high |
| enlist 函数 | new_function | 用于将标量或向量转化为由其作为元素值的向量或元组 | high |
| linearTimeTrend 函数 | capability | 支持对矩阵和表的计算 | high |
| rowAt 函数 | capability | 支持以数组向量为索引 | high |
| slice 操作 | capability | 数组、矩阵等可以通过标量、数组配对范围;越界则填充空值 | high |
| DolphinDB 高可用方案 | coverage | 提供数据、元数据、客户端以及流数据的高可用方案,以保证数据安全并满足 7*24 小时稳定运行需求 | medium |
| 集群间数据异步复制 | architecture | 采取主从架构,支持将主集群数据复制到从集群,并保证主从集群数据一致,实现集群异地容灾 | high |
| 异步复制扩展能力 | capability | 主集群增减数据节点无需重启;主从集群间无需做节点映射 | high |
| 异步复制容错能力 | claim | 大部分情况下,集群中某些节点出现问题时,不会导致数据丢失或不一致 | medium |
| 异步复制运维监控 | added_functions | 新增特定函数用于监控两个集群间异步复制状态和进度,便于人工介入修复、提升运维效率 | medium |
| setDatabaseForClusterReplication | function_purpose | 启动针对某个数据库的异步复制 | high |
| getDatabaseClusterReplicationStatus() | function_purpose | 查看所有数据库是否开启异步复制功能 | high |
| getRecentSlaveReplicationInfo() | function_purpose | 在主集群上执行,一键获取所有从集群的回放进度 | high |
| 权限管理的重要性 | claim | 权限管理对保障数据安全非常重要,也是 IT 团队的一大运维管理成本之一 | low |
| 库级别权限 | new_capability | 读写权限可配置到数据库级别,对新增的数据表同样适用 | high |
| getTables 函数赋权方式(此前) | limitation | 此前可通过 getTables 对数据库下数据表赋权;当数据库动态新增表时需不断重新赋权 | high |
| DB_MANAGE | permission_scope | 支持数据库级别的权限设置,可赋予或取消用户对某几个单独数据库的管理权限 | high |
| setMemLimitOfQueryResult | new_field | 新增 QUERY_RESULT_MEM_LIMIT 字段,可为某个单独用户设置查询时的内存限制 | high |
| 表写入权限 | granularity_change | 新增 TABLE_INSERT、TABLE_UPDATE、TABLE_DELETE 来控制插入/更新/删除权限;此前仅用 TABLE_WRITE | high |
| TABLE_WRITE 权限风险 | claim | 仅用 TABLE_WRITE 赋权插入/更新/删除会带来数据安全隐患 | medium |
| 数据库级别写入权限设置 | improvement | 数据库级别的写入权限设置也做了精细化处理 | medium |
| 全年交易日数量(一般情况) | approx_value | 除去国庆、元旦、春节等节假期后,全年交易日约有 250 天左右 | medium |
| 交易日历在金融交易与量化策略研究中的作用 | purpose | 用于判断某天是否交易日、标识下一个/最后一个交易日、获取交易区间等 | high |
| 交易日历功能 | capability | 提供国内外各大交易所交易日历及用户自定义交易日历,并支持在 temporalAdd、resample、asfreq、transFreq 中进行计算 | high |
| getMarketCalendar | function_purpose | 用于获取期望日期内的所有交易日历 | high |
| 高频行情数据下量价因子计算 | challenge | 每只股票每条新数据注入会更新该股票所有因子值;因子有状态,关联当前多个指标及其历史状态 | high |
| DolphinDB 响应式状态引擎 | capability | 可用于解决上述有状态因子更新计算难题 | medium |
| 流数据状态函数插件化 | purpose | 将流数据的状态函数插件化,支持用户灵活定制状态函数 | high |
| listStateFunction | function_purpose | 获取所有通过插件导入的状态函数及其用法列表 | high |
| PluginReactiveState | plugin_name | 用于加载自定义状态函数插件的示例插件名为 PluginReactiveState(通过 loadPlugin 加载) | medium |
| movingWindowData、genericStateIterate 等函数 | development_status | 已利用该插件成功开发,支持在流计算中访问历史数据或任何中间状态,并用于计算与结果传递到下一步处理 | medium |
| 即时编译(JIT) | added_supported_functions | 新增支持 sum、avg、count、size、min、max、iif 等常用函数 | high |
| JIT 对流数据引擎中函数性能的影响 | claim | 可提升流数据引擎中特定函数以及自定义函数的性能;以 moving 为例显著提升计算速度 | medium |
| 知乎案例文章(ETF 期权) | claim | 与 C++ 原生代码相比,耗时仅多出 0.5 倍,接近并突破该计算场景性能瓶颈 | low |
| 流数据订阅客户端 | new_capability | V2.00.9 允许订阅客户端变成接受数据的一方,并在流订阅反转基础上支持 WebSocket 连接 | high |
| group by / context by | performance_improvement | 针对上千万行表且分组数量庞大的情况优化性能,提升十倍以上 | medium |
| context by | input_support | 新增支持 matrix 和 table 的输入形式 | high |
| Pivot by | definition | DolphinDB 独有功能,拓展标准 SQL,将表中一列或多列内容按两个维度重新排列,实现窄表转宽表 | high |
| Pivot by | performance_improvement | 新版本改为用多线程加速计算;资源充足情况下性能提升几十倍,并优化 pivot by 最后一列为分区列时的性能 | medium |
| 下个版本规划 | planned_features | 分布式多线程多表连接;OLTP 内存存储引擎与嵌入式版本(更低时延场景);提升 TSDB 高并发性能;通过 JIT 与脚本语言优化提升流计算与脚本性能;提供数据库安全/健康/稳定性巡检工具提升运维效率;提升数据库系统与流数据引擎稳定性 | medium |