04-job-scheduler-module.sql 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286
  1. /*
  2. 任务调度模块数据库结构
  3. 业务域:SnailJob任务调度相关表
  4. 包含表:sj_distributed_lock, sj_group_config, sj_namespace_config,
  5. sj_notify_config, sj_retry_dead_letter, sj_retry_summary,
  6. sj_retry_task, sj_retry_task_log, sj_server_node,
  7. sj_system_user_permission, sj_workflow_node, sj_workflow_task_batch
  8. 创建时间:2025-01-08
  9. 维护人员:项目开发团队
  10. */
  11. SET NAMES utf8mb4;
  12. SET FOREIGN_KEY_CHECKS = 0;
  13. -- ----------------------------
  14. -- Table structure for sj_distributed_lock
  15. -- ----------------------------
  16. DROP TABLE IF EXISTS `sj_distributed_lock`;
  17. CREATE TABLE `sj_distributed_lock` (
  18. `name` varchar(64) NOT NULL COMMENT '锁名称',
  19. `lock_until` timestamp(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '锁定时长',
  20. `locked_at` timestamp(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '锁定时间',
  21. `locked_by` varchar(255) NOT NULL COMMENT '锁定者',
  22. `create_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  23. `update_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
  24. PRIMARY KEY (`name`)
  25. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='锁定表';
  26. -- ----------------------------
  27. -- Table structure for sj_group_config
  28. -- ----------------------------
  29. DROP TABLE IF EXISTS `sj_group_config`;
  30. CREATE TABLE `sj_group_config` (
  31. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
  32. `namespace_id` varchar(64) NOT NULL COMMENT '命名空间id',
  33. `group_name` varchar(64) NOT NULL COMMENT '组名称',
  34. `description` varchar(256) DEFAULT NULL COMMENT '描述',
  35. `group_status` tinyint(4) NOT NULL DEFAULT '1' COMMENT '组状态 0、关闭 1、开启',
  36. `version` int(11) NOT NULL DEFAULT '1' COMMENT '版本号',
  37. `group_partition` int(11) DEFAULT '0' COMMENT '分区',
  38. `init_scene` tinyint(4) NOT NULL DEFAULT '0' COMMENT '是否初始化场景 0、关闭 1、开启',
  39. `bucket_index` tinyint(4) NOT NULL DEFAULT '0' COMMENT 'bucket索引',
  40. `create_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  41. `update_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
  42. PRIMARY KEY (`id`),
  43. UNIQUE KEY `uk_namespace_group_partition` (`namespace_id`,`group_name`,`group_partition`),
  44. KEY `idx_namespace_id` (`namespace_id`),
  45. KEY `idx_group_name` (`group_name`)
  46. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='组配置';
  47. -- ----------------------------
  48. -- Table structure for sj_namespace_config
  49. -- ----------------------------
  50. DROP TABLE IF EXISTS `sj_namespace_config`;
  51. CREATE TABLE `sj_namespace_config` (
  52. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
  53. `name` varchar(64) NOT NULL COMMENT '命名空间名称',
  54. `unique_id` varchar(64) NOT NULL COMMENT '唯一id',
  55. `description` varchar(256) DEFAULT NULL COMMENT '描述',
  56. `create_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  57. `update_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
  58. PRIMARY KEY (`id`),
  59. UNIQUE KEY `uk_unique_id` (`unique_id`),
  60. UNIQUE KEY `uk_name` (`name`)
  61. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='命名空间';
  62. -- ----------------------------
  63. -- Table structure for sj_notify_config
  64. -- ----------------------------
  65. DROP TABLE IF EXISTS `sj_notify_config`;
  66. CREATE TABLE `sj_notify_config` (
  67. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
  68. `namespace_id` varchar(64) NOT NULL DEFAULT '' COMMENT '命名空间id',
  69. `group_name` varchar(64) NOT NULL DEFAULT '' COMMENT '组名称',
  70. `business_id` varchar(64) NOT NULL COMMENT '业务id',
  71. `notify_status` tinyint(4) NOT NULL DEFAULT '1' COMMENT '通知状态 0、关闭 1、开启',
  72. `notify_type` tinyint(4) NOT NULL COMMENT '通知类型',
  73. `notify_attribute` text NOT NULL COMMENT '配置属性',
  74. `notify_threshold` int(11) DEFAULT '100' COMMENT '通知阈值',
  75. `notify_scene` tinyint(4) NOT NULL COMMENT '通知场景',
  76. `rate_limiter_status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '限流状态 0、关闭 1、开启',
  77. `rate_limiter_threshold` int(11) NOT NULL DEFAULT '20' COMMENT '限流阈值',
  78. `description` varchar(256) DEFAULT '' COMMENT '描述',
  79. `create_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  80. `update_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
  81. PRIMARY KEY (`id`),
  82. UNIQUE KEY `uk_namespace_group_business_type_scene` (`namespace_id`,`group_name`,`business_id`,`notify_type`,`notify_scene`),
  83. KEY `idx_namespace_id` (`namespace_id`),
  84. KEY `idx_group_name` (`group_name`)
  85. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='通知配置';
  86. -- ----------------------------
  87. -- Table structure for sj_retry_dead_letter
  88. -- ----------------------------
  89. DROP TABLE IF EXISTS `sj_retry_dead_letter`;
  90. CREATE TABLE `sj_retry_dead_letter` (
  91. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
  92. `namespace_id` varchar(64) NOT NULL COMMENT '命名空间id',
  93. `unique_id` varchar(64) NOT NULL COMMENT '同组下id唯一',
  94. `group_name` varchar(64) NOT NULL COMMENT '组名称',
  95. `scene_name` varchar(64) NOT NULL COMMENT '场景名称',
  96. `idempotent_id` varchar(64) NOT NULL COMMENT '幂等id',
  97. `biz_no` varchar(64) NOT NULL DEFAULT '' COMMENT '业务编号',
  98. `executor_name` varchar(512) NOT NULL COMMENT '执行器名称',
  99. `args_str` text COMMENT '执行方法参数',
  100. `ext_attrs` varchar(256) DEFAULT '' COMMENT '扩展字段',
  101. `task_type` tinyint(4) NOT NULL DEFAULT '1' COMMENT '任务类型 1、重试数据 2、回调数据',
  102. `create_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  103. `update_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
  104. PRIMARY KEY (`id`),
  105. UNIQUE KEY `uk_namespace_group_scene_idempotent` (`namespace_id`,`group_name`,`scene_name`,`idempotent_id`),
  106. KEY `idx_namespace_id` (`namespace_id`),
  107. KEY `idx_group_name` (`group_name`),
  108. KEY `idx_scene_name` (`scene_name`),
  109. KEY `idx_create_dt` (`create_dt`)
  110. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='死信队列';
  111. -- ----------------------------
  112. -- Table structure for sj_retry_summary
  113. -- ----------------------------
  114. DROP TABLE IF EXISTS `sj_retry_summary`;
  115. CREATE TABLE `sj_retry_summary` (
  116. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
  117. `namespace_id` varchar(64) NOT NULL COMMENT '命名空间id',
  118. `group_name` varchar(64) NOT NULL COMMENT '组名称',
  119. `scene_name` varchar(64) NOT NULL COMMENT '场景名称',
  120. `trigger_date` date NOT NULL COMMENT '统计日期',
  121. `running_num` int(11) NOT NULL DEFAULT '0' COMMENT '重试中',
  122. `finish_num` int(11) NOT NULL DEFAULT '0' COMMENT '重试完成数量',
  123. `max_count_num` int(11) NOT NULL DEFAULT '0' COMMENT '重试到达最大次数',
  124. `suspend_num` int(11) NOT NULL DEFAULT '0' COMMENT '暂停数量',
  125. `create_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  126. `update_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
  127. PRIMARY KEY (`id`),
  128. UNIQUE KEY `uk_namespace_group_scene_date` (`namespace_id`,`group_name`,`scene_name`,`trigger_date`),
  129. KEY `idx_namespace_id` (`namespace_id`),
  130. KEY `idx_group_name` (`group_name`),
  131. KEY `idx_scene_name` (`scene_name`),
  132. KEY `idx_trigger_date` (`trigger_date`)
  133. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='任务重试汇总统计表';
  134. -- ----------------------------
  135. -- Table structure for sj_retry_task
  136. -- ----------------------------
  137. DROP TABLE IF EXISTS `sj_retry_task`;
  138. CREATE TABLE `sj_retry_task` (
  139. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
  140. `namespace_id` varchar(64) NOT NULL COMMENT '命名空间id',
  141. `unique_id` varchar(64) NOT NULL COMMENT '同组下id唯一',
  142. `group_name` varchar(64) NOT NULL COMMENT '组名称',
  143. `scene_name` varchar(64) NOT NULL COMMENT '场景名称',
  144. `idempotent_id` varchar(64) NOT NULL COMMENT '幂等id',
  145. `biz_no` varchar(64) NOT NULL DEFAULT '' COMMENT '业务编号',
  146. `executor_name` varchar(512) NOT NULL COMMENT '执行器名称',
  147. `args_str` text COMMENT '执行方法参数',
  148. `ext_attrs` varchar(256) DEFAULT '' COMMENT '扩展字段',
  149. `next_trigger_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '下次触发时间',
  150. `retry_count` int(11) NOT NULL DEFAULT '0' COMMENT '重试次数',
  151. `retry_status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '重试状态 0、重试中 1、成功 2、最大次数',
  152. `task_type` tinyint(4) NOT NULL DEFAULT '1' COMMENT '任务类型 1、重试数据 2、回调数据',
  153. `create_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  154. `update_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
  155. PRIMARY KEY (`id`),
  156. UNIQUE KEY `uk_namespace_group_scene_idempotent` (`namespace_id`,`group_name`,`scene_name`,`idempotent_id`),
  157. KEY `idx_namespace_id` (`namespace_id`),
  158. KEY `idx_group_name` (`group_name`),
  159. KEY `idx_scene_name` (`scene_name`),
  160. KEY `idx_next_trigger_at` (`next_trigger_at`),
  161. KEY `idx_retry_status` (`retry_status`),
  162. KEY `idx_create_dt` (`create_dt`)
  163. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='任务信息';
  164. -- ----------------------------
  165. -- Table structure for sj_retry_task_log
  166. -- ----------------------------
  167. DROP TABLE IF EXISTS `sj_retry_task_log`;
  168. CREATE TABLE `sj_retry_task_log` (
  169. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
  170. `namespace_id` varchar(64) NOT NULL COMMENT '命名空间id',
  171. `unique_id` varchar(64) NOT NULL COMMENT '同组下id唯一',
  172. `group_name` varchar(64) NOT NULL COMMENT '组名称',
  173. `scene_name` varchar(64) NOT NULL COMMENT '场景名称',
  174. `idempotent_id` varchar(64) NOT NULL COMMENT '幂等id',
  175. `biz_no` varchar(64) NOT NULL DEFAULT '' COMMENT '业务编号',
  176. `executor_name` varchar(512) NOT NULL COMMENT '执行器名称',
  177. `args_str` text COMMENT '执行方法参数',
  178. `ext_attrs` varchar(256) DEFAULT '' COMMENT '扩展字段',
  179. `retry_status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '重试状态 0、重试中 1、成功 2、最大次数',
  180. `task_type` tinyint(4) NOT NULL DEFAULT '1' COMMENT '任务类型 1、重试数据 2、回调数据',
  181. `real_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '真实触发时间',
  182. `create_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  183. `update_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
  184. PRIMARY KEY (`id`),
  185. KEY `idx_namespace_id` (`namespace_id`),
  186. KEY `idx_group_name` (`group_name`),
  187. KEY `idx_scene_name` (`scene_name`),
  188. KEY `idx_idempotent_id` (`idempotent_id`),
  189. KEY `idx_create_dt` (`create_dt`)
  190. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='重试日志';
  191. -- ----------------------------
  192. -- Table structure for sj_server_node
  193. -- ----------------------------
  194. DROP TABLE IF EXISTS `sj_server_node`;
  195. CREATE TABLE `sj_server_node` (
  196. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
  197. `namespace_id` varchar(64) NOT NULL COMMENT '命名空间id',
  198. `group_name` varchar(64) NOT NULL COMMENT '组名称',
  199. `host_id` varchar(64) NOT NULL COMMENT '主机id',
  200. `host_ip` varchar(64) NOT NULL COMMENT '主机ip',
  201. `host_port` int(11) NOT NULL COMMENT '主机端口',
  202. `expire_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '过期时间',
  203. `node_type` tinyint(4) NOT NULL DEFAULT '1' COMMENT '节点类型 1、客户端 2、服务端',
  204. `ext_attrs` varchar(256) DEFAULT '' COMMENT '扩展字段',
  205. `create_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  206. `update_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
  207. PRIMARY KEY (`id`),
  208. UNIQUE KEY `uk_namespace_group_host` (`namespace_id`,`group_name`,`host_id`),
  209. KEY `idx_namespace_id` (`namespace_id`),
  210. KEY `idx_group_name` (`group_name`),
  211. KEY `idx_expire_at` (`expire_at`)
  212. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='服务器节点';
  213. -- ----------------------------
  214. -- Table structure for sj_system_user_permission
  215. -- ----------------------------
  216. DROP TABLE IF EXISTS `sj_system_user_permission`;
  217. CREATE TABLE `sj_system_user_permission` (
  218. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
  219. `group_name` varchar(64) NOT NULL COMMENT '组名称',
  220. `namespace_id` varchar(64) NOT NULL COMMENT '命名空间id',
  221. `create_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  222. `update_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
  223. PRIMARY KEY (`id`),
  224. KEY `idx_group_name` (`group_name`),
  225. KEY `idx_namespace_id` (`namespace_id`)
  226. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='系统用户权限表';
  227. -- ----------------------------
  228. -- Table structure for sj_workflow_node
  229. -- ----------------------------
  230. DROP TABLE IF EXISTS `sj_workflow_node`;
  231. CREATE TABLE `sj_workflow_node` (
  232. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
  233. `namespace_id` varchar(64) NOT NULL COMMENT '命名空间id',
  234. `workflow_id` bigint(20) unsigned NOT NULL COMMENT '工作流id',
  235. `node_name` varchar(64) NOT NULL COMMENT '节点名称',
  236. `node_type` tinyint(4) NOT NULL COMMENT '节点类型 1、任务节点 2、条件节点 3、回调节点',
  237. `job_id` bigint(20) unsigned DEFAULT NULL COMMENT '关联的任务id',
  238. `expression_type` tinyint(4) DEFAULT NULL COMMENT '表达式类型 1、SpEL 2、Aviator 3、QL',
  239. `expression` varchar(256) DEFAULT NULL COMMENT '条件节点的表达式',
  240. `fail_strategy` tinyint(4) NOT NULL DEFAULT '1' COMMENT '失败策略 1、跳过 2、阻塞',
  241. `create_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  242. `update_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
  243. PRIMARY KEY (`id`),
  244. KEY `idx_workflow_id` (`workflow_id`),
  245. KEY `idx_namespace_id` (`namespace_id`)
  246. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='工作流节点';
  247. -- ----------------------------
  248. -- Table structure for sj_workflow_task_batch
  249. -- ----------------------------
  250. DROP TABLE IF EXISTS `sj_workflow_task_batch`;
  251. CREATE TABLE `sj_workflow_task_batch` (
  252. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
  253. `namespace_id` varchar(64) NOT NULL COMMENT '命名空间id',
  254. `workflow_id` bigint(20) unsigned NOT NULL COMMENT '工作流id',
  255. `task_batch_status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '任务批次状态 0、运行中 1、成功 2、失败 3、取消 4、暂停',
  256. `operation_reason` tinyint(4) NOT NULL DEFAULT '0' COMMENT '操作原因 0、系统触发 1、人工操作',
  257. `workflow_task_batch_id` bigint(20) unsigned NOT NULL COMMENT '工作流任务批次id',
  258. `execution_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '执行时间',
  259. `flow_info` text COMMENT '流程信息',
  260. `ext_attrs` varchar(256) DEFAULT NULL COMMENT '扩展字段',
  261. `create_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  262. `update_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
  263. `deleted` tinyint(4) NOT NULL DEFAULT '0' COMMENT '逻辑删除 1、删除',
  264. PRIMARY KEY (`id`),
  265. KEY `idx_workflow_id` (`workflow_id`),
  266. KEY `idx_namespace_id` (`namespace_id`),
  267. KEY `idx_execution_at` (`execution_at`),
  268. KEY `idx_task_batch_status` (`task_batch_status`)
  269. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='工作流任务批次';
  270. SET FOREIGN_KEY_CHECKS = 1;