You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DolphinDB中跨会话共享全局配置参数的声明定义最佳方法

在DolphinDB中声明和定义跨会话共享的全局变量

在DolphinDB里,要实现跨会话共享的全局配置参数,有几种常用的方式,以下是具体实现方法:

1. 全局函数存储配置

通过defg关键字定义全局函数,用来保存和返回配置参数,全局函数在所有会话中可见:

// 定义全局函数返回初始配置
defg getGlobalConfig(){
    return {"timeout": 3000, "maxConnections": 100, "logLevel": "INFO"}
}

如果需要修改配置,可以扩展为带参数的全局函数来更新:

defg setGlobalConfig(key, value){
    config = getGlobalConfig()
    config[key] = value
    // 重新定义全局函数以更新配置
    defg getGlobalConfig(){ return config }
}

任意会话中直接调用getGlobalConfig()就能获取最新配置。

2. 共享内存表存储键值对配置

创建共享内存表来存储配置的键值对,所有会话都可访问和修改:

// 创建空内存表并设为共享
configTable = table(1:0, `configKey`configValue, [STRING, ANY])
share configTable as sharedConfig

// 插入初始配置项
insert into sharedConfig values ("timeout", 3000)
insert into sharedConfig values ("maxConnections", 100)

查询或修改配置的示例:

// 查询指定配置
select configValue from sharedConfig where configKey = "timeout"

// 更新配置
update sharedConfig set configValue = 5000 where configKey = "timeout"

3. 模块定义全局变量

编写模块文件(如config.dos),在模块中用global关键字声明全局变量:

// config.dos 文件内容
global timeout = 3000
global maxConnections = 100
global logLevel = "INFO"

在任意会话中导入模块即可访问这些变量:

use config
print(timeout) // 输出3000

若要修改并让所有会话生效,修改后需重新导入模块,或结合共享表实现持久化更新。

注意事项

  • 并发修改共享配置时,建议使用lock函数避免冲突:
    lock("configLock", update sharedConfig set configValue = 5000 where configKey = "timeout")
    
  • 全局函数和内存表的配置会在服务器重启后丢失,若需持久化,可将配置存储到磁盘表,启动时自动加载。

内容的提问来源于stack exchange,提问作者Polly

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 03:41:44