新年伊始,DolphinDB 迎来了24年度的首次版本升级。在刚刚发布的 2.00.11 & 1.30.23 版本中,DolphinDB 带来了如下亮点新功能:增加了 TSDB 引擎的软删除功能、支持了 SQL 开窗函数、新增了 Web 端的数据面板功能。除此之外,DolphinDB 的数据分析能力也进一步领先:新增了适合风控计算场景的规则引擎、优化了对数据回放的倍速限制、新增并扩展了一系列函数、还更新了2024年度的交易日历。同时,新版本还改善了函数视图、强化了资源监控与隔离等运维管理功能……下面一起来看看,具体都有哪些功能更新吧~
引擎性能再提升
软删除(Soft Delete)是一种在数据库中处理数据删除的方法,这种删除方式并不是直接从数据库中移除数据,而是通过特定的标记方式在查询的时候将此记录过滤掉,在后台合并数据文件时才真正删除数据。相对于硬删除(Hard Delete),即直接从数据库中永久删除数据,软删除以追加方式进行数据删除,可大幅度提升列式数据库删除的效率。
2.00.11版本中支持了 TSDB 引擎的软删除功能,通过建表时进行配置,仅在去重机制为保留最新一条时可以生效。
除此之外,新版本还优化了部分场景下的用户查询性能(如 sortkey 很多,且使用了 sortKeyHashMappingFunc 时),提升了流数据引擎的计算性能,降低了计算的峰值时延。
Dashboard 大更新
此次跟随 server 版本一起更新的,还有 DolphinDB 数据面板功能。
自2.00.11版本起,DolphinDB 为用户提供了数据面板这一强大的数据可视化和分析工具,帮助用户更好地理解和利用数据。
DolphinDB 数据面板位于 Web 端,包含创建面板、编辑变量、配置数据源和自定义图表等功能。
用户可以通过对表进行查询的方式添加数据源,选择包括柱状图、折线图、饼图、表格、K线、混合图、订单图、富文本、描述表、编辑器、仪表盘、雷达图、变量、散点图等14种图表形式进行自定义的数据呈现,并通过参数配置实现对仪表盘中查询元素的动态控制,以便更灵活地分析和呈现数据。
分钟 K 线图
数据分析功能更强大
DolphinDB 是集数据存储、数据分析和流数据处理为一体的统一实时数据处理平台,通过多范式的编程语言、强大的函数库、历史数据分析与实时流计算的有机融合等设计,为用户提供了卓越的数据分析使用体验。新版本在 SQL 编程、流数据、函数功能拓展等层面都进行了功能增强。
SQL 开窗函数功能支持
开窗函数又叫做分析函数,是一种强大的分析工具,开窗函数允许用户在数据集中定义一个窗口,对窗口内的数据进行聚合或计算,而不是仅仅对整个数据集进行操作。这使得用户可以根据特定的条件来选择分析的范围,例如,计算每行的累积总和或平均值等。开窗函数能够满足更复杂的分析需求,特别是处理大型数据集或需要更详细分析的情况。DolphinDB 从第一个版本开始就推出了 SQL 子句 context by,可以完成开窗函数的功能。此次支持 SQL 的开窗函数,主要是为了兼容标准 SQL,方便用户迁移。
DolphinDB 新版本中新增了一系列 SQL 开窗函数,包括:sum,avg,std,stdp,var,varp,count,min,max,skew,kurtosis,med,rank,dense_rank,percent_rank,row_number,cume_dist,lead,lag,ntile,first_value,last_value,nth_value 函数。
新增规则引擎,为风控计算提供更优解
金融风控场景包含了流动性风险、信用风险、市场风险、法律和合规风险等,具有高度复杂性和即时性。为了有效管理和应对这些风险,往往会采用规则引擎,根据制定好的规则,自动识别异常交易,监测潜在欺诈行为,从而触发相应的预警或阻断措施。
新版本中,通过新增函数 createRuleEngine,可以创建规则引擎(RuleEngine)。该引擎支持用户自定义规则集,引擎会根据每条数据指示的规则集,校验输入,并按要求输出检查结果。同时还新增了函数 updateRule 和 deleteRule,分别用于更新或删除规则引擎中的规则。
例如持仓风控场景中,我们可以利用规则引擎,检查最大持仓、最大亏损以及收益率
输出结果展示:
可以看到,债券代码为230012的持仓数据通过了风控限额检查;230005在最大亏损和收益率上超过了限额,没有通过规则检查;230212在最大持仓和收益率上没有通过检查。
数据回放再升级,回放倍速更灵活
新版本中,数据回放可以完全支持按照数据到来时间的倍速进行回放,这意味着回放精度提高,用户可以更细致地控制回放的时间单位和间隔。
此外,新版本缩短了用户取消回放任务的响应时间,帮助用户进一步提升分析决策效率。
函数的新增与扩展
新版本增加了对金融场景函数 bondDuration, bondDirtyPrice, bondConvexity 的支持,用于计算久期、含息价格、凸性等金融指标。
统计分析层面,新增支持了:
·函数 iminLast ,imaxLast 以及对应的滑动窗口实现,拓展了查找最值索引的功能,支持多个最值取最大的索引。
·函数 kendall ,用于计算 Kendall 相关性系数。
·函数 clip ,用于按数据范围进行极值掩盖。
数值计算层面,新增支持了:
·函数 socp,用于更高效地求解二阶锥规划问题,计算目标函数在限定条件下的最小值。
·函数 osqp,支持半正定的二次项矩阵的优化问题求解。
·函数 brentq ,用于在给定区间范围内求根。
高阶函数层面,新版本对已有函数 byRow 和 byColumn 进行了系统性的增强和统一,支持 tuple, array vector 和 matrix,并进行了大量的性能优化。同时新增了用模式符号 :H, :V 和 :U 表示函数 byRow, byColumn 和 loop 的功能,借助这类模式编写脚本,代码的表达能力得以提升。
2024年度交易日历更新
随着新的一年到来,DolphinDB 也在新版本中内置了2024年的交易日历,其中包含各国的法定节假日、休市日、交易时间调整等信息,能够为投资交易者提供更多参考。
同时,新版本拓展了 transfreq,asFreq 和 resample 函数的规则。过去,参数 rule 可以指定交易日历的标识(国外交易所的 ISO Code、国内交易所简称或自定义交易日历名称),以便基于交易日历进行计算。新版本中,交易日历可以配合使用数字,表示多个交易日(此时只能指定由4个大写字母组成的交易日历标识)。例如:“2XSHG”,表示上海证券交易所每两个交易日。
易用性增强
新版本在模块、函数视图功能上做了较大的改善,将函数视图的权限约束和集群共享功能与 module 的模块化管理结合,从而在使用上更为便捷可控,更利于代码的工程化管理。改进具体表现在:
·过去用户在命名函数视图时,可能会出现函数重名冲突的问题。新版本中为函数视图的功能增加了 namespace 属性,即用户可以把模块里的函数定义成函数视图,在不同模块定义同名函数时,也不会产生冲突。
·拓展了权限管理功能,可以通过 grant(`user, VIEW_EXEC, `module::fun) 的方式对模块及其函数进行权限管理。
·addFunctionView 的模块将持久化至控制节点,并自动同步至整个集群,省去手动在各节点上传 module 的繁琐操作及一致性问题。
运维管理功能再强化
新版本在资源监控与隔离、备份恢复、可观测性、权限和作业管理等方面都进行了升级,帮助 DBA 监控并保障相关业务稳定运行。
以资源监控隔离为例,新版本新增了用户级别的资源跟踪功能:
·新增函数 getUserHardwareUsage,用于采样 CPU 和内存使用量。
·新增函数 getUserTableAccessRecords,用于记录 SQL 访问分布式表的信息。
·新增函数 enableResourceTracking 和 disableResourceTracking,用于开启或关闭控制资源隔离。
·新增配置项 resourceSamplingInterval, resourceSamplingMaxLogSize 和resourceSamplingLogRetentionTime,支持用户自定义采样间隔、拆分日志文件的大小阈值和日志保留时间。
未完待续……
此次版本发布,不但进一步提升了数据库的数据分析处理能力,也大大优化了用户的使用体验。后续我们也将致力于满足不断演进的用户需求,积极倾听大家的反馈。
接下来的版本中,DolphinDB 将会推出的重点功能如下:
·数据库提供 catalog 功能,用户对库表的访问更加方便,进一步兼容标准 SQL。
·推出新的主键存储引擎和向量存储引擎。
·计算节点支持数据缓存,增强分布式计算的拓展能力。
·支持 GPU 在计算中的应用,大大加速算子的计算性能,并支持遗传算法。
·流计算推出复杂事件处理引擎,为实时事件应用程序提供低代码开发环境与完整的运行平台。
·脚本语言支持 Class,极大增强脚本语言的可扩展能力。
温馨提示:1.30.23版本是1.30系列的最后一个版本,将于2025.12.31停止维护。后续 DolphinDB 更新版本为:2.00系列版本(稳定版)& 3.00系列版本(最新版)。