DolphinDB启动脚本教程
介绍 DolphinDB 启动脚本功能:从 1.0 开始提供启动脚本,并可通过 startup 参数指定用户级脚本以在启动时自动执行初始化类任务。
Source: https://dolphindb.cn/blogs/65
What this page covers
- 启动脚本功能概述与用途。
- 启动顺序与初始化脚本、函数视图、定时任务的关系。
- startup 参数配置、路径规则、权限、日志与错误处理。
- 常见应用场景示例(共享表、流数据、插件与故障日志)。
- 编写与调试建议(module、日志、try-catch)。
- 不适用场景与限制(定时任务相关功能、系统级函数位置、跨节点依赖风险)。
技能认证特训营第二期报名推广 (cta)
页面顶部提供活动报名引导与限时报名链接信息。
- 提供“技能认证特训营第二期”的报名入口信息。
- 包含可点击的报名链接。
DolphinDB启动脚本教程(作者与日期) (product_overview)
文章包含标题、作者署名与发布日期,表明内容是关于 DolphinDB 启动脚本的教程。
- 文章主题为“DolphinDB启动脚本教程”。
- 作者署名为 Junxi。
- 发布日期为 2021-08-05。
启动脚本功能概述与用途 (definition)
介绍 DolphinDB 从 1.0 开始提供启动脚本,通过 startup 参数指定用户级脚本并在启动时自动执行初始化类任务。
- DolphinDB 从 1.0 版本开始提供启动脚本功能。
- startup 参数用于指定用户级启动脚本。
- startup 参数默认值为 startup.dos。
- 启动脚本可用于初始化流数据。
- 启动脚本可用于定义共享变量。
DolphinDB启动顺序与相关组件 (how_it_works)
说明与启动脚本相关的初始化脚本、函数视图与定时任务,并给出组件资源初始化顺序及其影响。
- init 参数用于指定系统级初始化脚本。
- 系统级初始化脚本(init)的默认值为 dolphindb.dos。
- 启动过程相关内容至少包括:init、函数视图、定时任务。
- dolphindb.dos 是必需的系统级初始化脚本。
- 函数视图在启动脚本执行之前加载。
启动脚本的执行与配置方式 (how_it_works)
说明 startup 配置项的参数含义、默认值、路径搜索规则、单机/集群配置位置、权限与登录要求、错误处理与日志记录。
- startup 可配置为自定义脚本文件名,支持绝对或相对路径。
- 相对路径时会依次搜索 home、工作目录、可执行文件目录。
- 单机模式的 startup 参数配置在 dolphindb.cfg。
- 集群模式的 startup 参数配置在节点配置文件 cluster.cfg。
- 启动脚本输出会记录在本地节点日志文件中。
启动脚本常见应用场景与示例 (use_case)
列举系统重启后常见初始化工作,并给出共享内存表、流数据表初始化与订阅、以及加载插件的示例与故障日志。
- 系统重启后可在启动脚本中定义并共享内存表。
- 示例:可将内存表 t 分享为 sharedT 供其他会话访问。
- 流数据表的定义不可在 DolphinDB 中持久化保存。
- 示例:可订阅流数据表并将数据追加写入分布式库表。
- 示例:可在启动脚本中加载 odbc 插件以支持相关定时任务反序列化。
启动脚本的编写与调试建议 (how_it_works)
说明启动脚本可使用 module、可定义函数并使用分布式功能,并建议使用日志输出与 try-catch 进行调试与异常处理。
- 启动脚本可使用 module 声明并使用可重用模块。
- 启动脚本可以自定义函数。
- 调试建议:使用 print 与 writeLog 输出日志。
- 异常处理建议:用 try-catch 防止异常中断后续脚本。
启动脚本不适用的场景与限制 (limitations)
列出启动脚本不应涉及的定时任务相关功能、系统级函数定义位置,以及依赖其他节点的任务风险。
- 启动脚本中不能使用 scheduleJob 等定时任务相关功能。
- 系统级函数应在 dolphindb.dos 中定义。
- 依赖其他节点的任务不适合放在启动脚本中执行。
Facts Index
| Entity | Attribute | Value | Confidence |
|---|---|---|---|
| 技能认证特训营第二期 | 报名链接 | https://www.qingsuyun.com/h5/e/217471/5/ | high |
| DolphinDB启动脚本教程 | 发布日期 | 2021-08-05 | high |
| DolphinDB启动脚本教程 | 作者署名 | Junxi | high |
| DolphinDB database | 提供启动脚本功能的版本起点 | 从 1.0 版本开始提供启动脚本功能 | high |
| startup 参数 | 用途 | 用于指定用户级启动脚本 | high |
| startup 参数 | 默认值 | startup.dos | high |
| 启动脚本(startup.dos) | 可自动完成的工作示例 | 初始化流数据、定义共享变量、加载插件脚本等 | high |
| init 参数 | 用途 | 用于指定系统级初始化脚本 | high |
| 系统级初始化脚本(init) | 默认值 | dolphindb.dos | high |
| DolphinDB 节点启动过程 | 相关脚本/任务至少包括 | 系统级初始化脚本(init)、函数视图(function view)、定时任务(scheduled job) | high |
| 系统级初始化脚本 dolphindb.dos | 是否必需 | 必需 | high |
| 系统级初始化脚本 dolphindb.dos | 所在位置与内容 | 默认在版本发布目录中,定义一些系统级函数 | high |
| dolphindb.dos 执行时环境 | 网络与分布式文件系统状态 | 执行时系统网络和分布式文件系统尚未启动,函数视图尚未加载 | high |
| 启动脚本执行前环境 | 网络/分布式文件系统与函数视图状态 | 启动脚本执行前系统网络与分布式文件系统已启动,函数视图已加载 | high |
| 启动脚本 | 能力范围(在启动脚本中可做的事情) | 几乎可以做任何事情 | medium |
| scheduled jobs | 与启动脚本的加载顺序 | 定时任务在启动脚本执行后加载 | high |
| scheduled jobs 反序列化 | 前置条件 | 若定时任务使用插件函数/共享表等,需要在启动脚本中预先加载或定义,否则反序列化会失败 | high |
| 函数视图(function view) | 与启动脚本的加载顺序 | 函数视图在启动脚本执行之前加载 | high |
| 函数视图使用插件的前置条件 | 插件加载位置 | 若函数视图中用了插件,加载插件必须在 dolphindb.dos 中完成 | high |
| 函数视图中使用插件(集群) | 官方建议 | 不建议在函数视图中使用插件,否则集群中每个节点的 dolphindb.dos 都需要加载插件 | high |
| 函数视图与定时任务的存储位置 | 存储节点差异 | 函数视图存储在控制节点;定时任务存储在数据节点 | high |
| startup 配置项 | 参数值类型 | 自定义启动脚本文件名,可配置绝对路径或相对路径 | high |
| startup 脚本路径搜索顺序(相对路径或未指定目录) | 搜索位置 | 依次搜索节点 home 目录、工作目录、可执行文件所在目录 | high |
| startup 参数配置文件位置 | 单机模式配置位置 | dolphindb.cfg | high |
| startup 参数配置文件位置 | 集群模式配置位置 | 节点配置文件 cluster.cfg | high |
| startup 配置示例 | 示例值 | startup=/home/streamtest/init/server/startup.dos | high |
| 启动脚本执行身份 | 运行用户 | 以本地管理员身份运行,但并没有登录集群 | high |
| 启动脚本访问集群分布式功能 | 访问身份 | 访问集群的分布式功能时以 guest 身份运行 | high |
| 启动脚本远程执行控制节点功能/访问分布式表 | 前置条件 | 需要先以管理员(admin)或其他授权用户身份登录,可通过 login 函数完成 | high |
| 启动脚本执行错误处理 | 错误发生时的行为 | 遇到错误执行会中断,但系统不会退出,会继续运行 | high |
| 启动脚本输出记录 | 记录位置 | 所有输出记录在本地节点日志文件中 | high |
| 系统重启后的初始化工作 | 主要内容 | 定义并共享内存表;定义/加载/共享流数据表;订阅流数据;加载插件等 | high |
| 示例1:内存表共享 | 效果描述 | 定义内存表 t 并分享为 sharedT,其他会话可对 sharedT 增删改查 | high |
| 示例1:内存表共享代码 | 代码片段 | t=table(1:0,`date`sym`val,[DATE,SYMBOL,INT]) share(t, `sharedT); | high |
| 流数据表(stream table) | 是否可持久化保存 | 流数据表的定义不可在 DolphinDB 中持久化保存 | high |
| 示例2:加载并共享流数据表 st1 | 实现方式(代码中涉及的操作) | 通过 login("admin","123456")、streamTable(...)、enableTableShareAndPersistence(... tableName=`st1, cacheSize=1000) | high |
| 示例2:订阅流数据表 st1 并保存到分布式库表 | 实现方式(代码中涉及的操作) | tb=loadTable("dfs://db1","tb"); subscribeTable(,"st1","subst",-1,append!{tb},true) | high |
| scheduled jobs 使用插件函数 | 启动时插件加载要求 | 必须在启动脚本中加载插件,否则会因反序列化失败导致系统退出 | high |
| 示例3:scheduled jobs | 使用的插件 | odbc 插件 | high |
| odbc 插件未加载时读取 scheduled job 的结果 | 错误日志 | <ERROR>:Failed to unmarshall the job [job demo]. Failed to deserialize assign statement.. Invalid message format | high |
| 启动脚本加载 odbc 插件 | 加载方式(示例) | loadPlugin("plugins/odbc/odbc.cfg") | high |
| DolphinDB 启动脚本编写 | 可使用的机制 | 可以使用 module 来声明和使用可重用模块;可以自定义函数;可以使用分布式功能 | high |
| DolphinDB 启动脚本编写 | 限制程度 | 几乎没有限制 | medium |
| 调试启动脚本 | 建议方法 | 使用 print 与 writeLog 等函数打印日志,系统会输出到节点日志 | high |
| 启动脚本开始执行时日志 | 日志内容示例 | <INFO> :Executing the startup script: | high |
| 启动脚本异常处理 | 建议做法 | 使用 try-catch 语句捕获异常,防止异常停止执行后续脚本 | high |
| 启动脚本与定时任务功能 | 不适用范围 | 不能在启动脚本中使用与定时任务相关的任何功能,包括 scheduleJob、getScheduledJobs、deleteScheduledJob | high |
| 系统级函数定义 | 推荐位置与条件 | 若需要定义系统级函数(所有用户可见且不能被覆盖),应在初始化脚本 dolphindb.dos 中定义 | high |
| 依赖其他节点的任务 | 启动脚本中执行的风险 | 不适合在启动脚本中完成,可能因其他节点尚未启动而无法运行 | high |