新年伊始,DolphinDB 迎来了24年度的首次版本升级。在刚刚发布的 2.00.11 & 1.30.23 版本中,DolphinDB 带来了如下亮点新功能:增加了 TSDB 引擎的软删除功能、支持了 SQL 开窗函数、新增了 Web 端的数据面板功能。除此之外,DolphinDB 的数据分析能力也进一步领先:新增了适合风控计算场景的规则引擎、优化了对数据回放的倍速限制、新增并扩展了一系列函数、还更新了2024年度的交易日历。
同时,新版本还改善了函数视图、强化了资源监控与隔离等运维管理功能……
下面一起来看看,具体都有哪些功能更新吧~
软删除(Soft Delete)是一种在数据库中处理数据删除的方法,这种删除方式并不是直接从数据库中移除数据,而是通过特定的标记方式在查询的时候将此记录过滤掉,在后台合并数据文件时才真正删除数据。相对于硬删除(Hard Delete),即直接从数据库中永久删除数据,软删除以追加方式进行数据删除,可大幅度提升列式数据库删除的效率。
2.00.11版本中支持了 TSDB 引擎的软删除功能,通过建表时进行配置,仅在去重机制为保留最新一条时可以生效。
除此之外,新版本还优化了部分场景下的用户查询性能(如 sortkey 很多,且使用了 sortKeyHashMappingFunc 时),提升了流数据引擎的计算性能,降低了计算的峰值时延。
此次跟随 server 版本一起更新的,还有 DolphinDB 数据面板功能。
自2.00.11版本起,DolphinDB 为用户提供了数据面板这一强大的数据可视化和分析工具,帮助用户更好地理解和利用数据。
DolphinDB 数据面板位于 Web 端,包含创建面板、编辑变量、配置数据源和自定义图表等功能。
用户可以通过对表进行查询的方式添加数据源,选择包括柱状图、折线图、饼图、表格、K线、混合图、订单图、富文本、描述表、编辑器、仪表盘、雷达图、变量、散点图等14种图表形式进行自定义的数据呈现,并通过参数配置实现对仪表盘中查询元素的动态控制,以便更灵活地分析和呈现数据。
分钟 K 线图
DolphinDB 是集数据存储、数据分析和流数据处理为一体的统一实时数据处理平台,通过多范式的编程语言、强大的函数库、历史数据分析与实时流计算的有机融合等设计,为用户提供了卓越的数据分析使用体验。新版本在?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
,分别用于更新或删除规则引擎中的规则。
例如持仓风控场景中,我们可以利用规则引擎,检查最大持仓、最大亏损以及收益率:
// 默认规则检查最大持仓,最大亏损以及收益率
y = [ [ < position >= 3000000 >, < pnl < -10000 >, < pnl\position < 0.01 >], [< pnl < -10000 > ], [ < pnl\position < 0.01 > ] ]
ruleSets = dict(x, y)
//创建规则引擎
test = createRuleEngine("posRule",ruleSets, dummy ,`sym`position`pnl, outputTable, "all")
//仓位表
posTable = table([230012,230005,230212] as sym, [1000000, 2000000, 3000000] as position, [20000, -30000, -10000] as pnl)
// 根据默认的风控规则检查仓位表中的数据
test.append!(posTable)
输出结果展示:
可以看到,债券代码为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
?的功能,借助这类模式编写脚本,代码的表达能力得以提升。
随着新的一年到来,DolphinDB 也在新版本中内置了2024年的交易日历,其中包含各国的法定节假日、休市日、交易时间调整等信息,能够为投资交易者提供更多参考。
同时,新版本拓展了?transfreq
,asFreq
?和?resample
?函数的规则。过去,参数?rule?可以指定交易日历的标识(国外交易所的 ISO Code、国内交易所简称或自定义交易日历名称),以便基于交易日历进行计算。新版本中,交易日历可以配合使用数字,表示多个交易日(此时只能指定由4个大写字母组成的交易日历标识)。例如:“2XSHG”,表示上海证券交易所每两个交易日。
新版本在模块、函数视图功能上做了较大的改善,将函数视图的权限约束和集群共享功能与 module 的模块化管理结合,从而在使用上更为便捷可控,更利于代码的工程化管理。改进具体表现在:
新版本在资源监控与隔离、备份恢复、可观测性、权限和作业管理等方面都进行了升级,帮助 DBA 监控并保障相关业务稳定运行。
以资源监控隔离为例,新版本新增了用户级别的资源跟踪功能:
getUserHardwareUsage
,用于采样?CPU 和内存使用量。getUserTableAccessRecords
,用于记录?SQL 访问分布式表的信息。enableResourceTracking?
和?disableResourceTracking
,用于开启或关闭控制资源隔离。此次版本发布,不但进一步提升了数据库的数据分析处理能力,也大大优化了用户的使用体验。后续我们也将致力于满足不断演进的用户需求,积极倾听大家的反馈。
接下来的版本中,DolphinDB 将会推出的重点功能如下:
温馨提示:1.30.23版本是1.30系列的最后一个版本,将于2025.12.31停止维护。后续 DolphinDB 更新版本为:2.00系列版本(稳定版)& 3.00系列版本(最新版)。