Spring Batch 批处理数据表

news2025/1/18 17:00:00

目录

引言

概述

batch_job_instance表

batch_job_execution表

batch_job_execution_context表

batch_job_execution_params表

btch_step_execution表

batch_step_execution_context表

H2内存数据库

转视频版


引言

接着上篇:Spring Batch 步骤对象-返回状态-ExitStatus,了解返回状态ExitStatus状态类后,接下来一起学习一下Spring Batch 批处理核心的数据表

概述

学习阶段,Spring Batch数据存储可以采用2种方式,1:H2内存数据库 2:关系型数据库。选择1这个好说,基本上不需要我们做过多干预,选择2也一样,但是我们可以借助数据库的可视化工具来查看数据表,帮助我们更好的了解springbatch执行流程或原理。

当我们选择数据库方式存储批处理数据,Spring Batch 在启动时会自动创建9张表,分别存储: JobExecution、JobContext、JobParameters、JobInstance、JobExecution id序列、Job id序列、StepExecution、StepContext/ChunkContext、StepExecution id序列 等对象。Spring Batch 提供 JobRepository 组件来实现这些表的CRUD操作,并且这些操作基本上封装在步骤,块,作业api操作中,并不需要我们太多干预,所以这章内容了解即可。

batch_job_instance表

 当作业第一次执行时,会根据作业名,标识参数生成一个唯一JobInstance对象,batch_job_instance表会记录一条信息代表这个作业实例。

字段描述
JOB_INSTANCE_ID作业实例主键
VERSION乐观锁控制的版本号
JOB_NAME作业名称
JOB_KEY作业名与标识性参数的哈希值,能唯一标识一个job实例

batch_job_execution表

每次启动作业时,都会创建一个JobExecution对象,代表一次作业执行,该对象记录存放于batch_job_execution 表。

字段描述
JOB_EXECUTION_IDjob执行对象主键
VERSION乐观锁控制的版本号
JOB_INSTANCE_IDJobInstanceId(归属于哪个JobInstance)
CREATE_TIME记录创建时间
START_TIME作业执行开始时间
END_TIME作业执行结束时间
STATUS作业执行的批处理状态
EXIT_CODE作业执行的退出码
EXIT_MESSAGE作业执行的退出信息
LAST_UPDATED最后一次更新记录的时间

batch_job_execution_context表

batch_job_execution_context用于保存JobContext对应的ExecutionContext对象数据。

字段描述
JOB_EXECUTION_IDjob执行对象主键
SHORT_CONTEXTExecutionContext系列化后字符串缩减版
SERIALIZED_CONTEXTExecutionContext系列化后字符串

batch_job_execution_params表

作业启动时使用标识性参数保存的位置:batch_job_execution_params, 一个参数一个记录

 

字段描述
JOB_EXECUTION_IDjob执行对象主键
TYPE_CODE标记参数类型
KEY_NAME参数名
STRING_VALUE当参数类型为String时有值
DATE_VALUE当参数类型为Date时有值
LONG_VAL当参数类型为LONG时有值
DOUBLE_VAL当参数类型为DOUBLE时有值
IDENTIFYING用于标记该参数是否为标识性参数

btch_step_execution表

作业启动,执行步骤,每个步骤执行信息保存在tch_step_execution表中

 

字段描述
STEP_EXECUTION_ID步骤执行对象id
VERSION乐观锁控制版本号
STEP_NAME步骤名称
JOB_EXECUTION_ID作业执行对象id
START_TIME步骤执行的开始时间
END_TIME步骤执行的结束时间
STATUS步骤批处理状态
COMMIT_COUNT在步骤执行中提交的事务次数
READ_COUNT读入的条目数量
FILTER_COUNT由于ItemProcessor返回null而过滤掉的条目数
WRITE_COUNT写入条目数量
READ_SKIP_COUNT由于ItemReader中抛出异常而跳过的条目数量
PROCESS_SKIP_COUNT由于ItemProcessor中抛出异常而跳过的条目数量
WRITE_SKIP_COUNT由于ItemWriter中抛出异常而跳过的条目数量
ROLLBACK_COUNT在步骤执行中被回滚的事务数量
EXIT_CODE步骤的退出码
EXT_MESSAGE步骤执行返回的信息
LAST_UPDATE最后一次更新记录时间

batch_step_execution_context表

StepContext对象对应的ExecutionContext 保存的数据表:batch_step_execution_context

字段描述
STEP_EXECUTION_ID步骤执行对象id
SHORT_CONTEXTExecutionContext系列化后字符串缩减版
SERIALIZED_CONTEXTExecutionContext系列化后字符串

H2内存数据库

 作业的运行指的是对作业的控制,包括作业启动,作业停止,作业异常处理,作业重启处理等。

到这,本篇就结束了,欲知后事如何,请听下回分解~

转视频版

看文字不过瘾可以切换视频版:Spring Batch高效批处理框架实战

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/197732.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MybatisPlus多表查询之零sql编写实现

1.前言 年初节奏还没有快起来,适合做做技术前瞻,无论是对个人还是团队都是好事。真要说分享,其实感觉也没啥好分享的,就像接手新项目一样,代码都是自己看,别人讲的再多,不看,不用&am…

OpenMP For Construct dynamic 调度方式实现原理和源码分析

OpenMP For Construct dynamic 调度方式实现原理和源码分析 前言 在本篇文章当中主要给大家介绍 OpenMp for construct 的实现原理,以及与他相关的动态库函数分析,与 for construct 非常相关的是循环的调度方式,在 OpenMP 当中一共有四种调…

KVM,QEMU与libvirt关系

KVM:负责cpu虚拟化内存虚拟化,实现了cpu和内存的虚拟化,但kvm不能模拟其他设备;KVM是linux内核的模块,它需要CPU的支持,采用硬件辅助虚拟化技术Intel-VT,AMD-V,内存的相关如Intel的E…

FPGA纯verilog代码实现8位精简指令集CPU,一学期的微机原理不如看懂这套代码,提供工程源码和技术支持

目录1、前言2、设计思想和架构3、硬件组成讲解4、vivado仿真5、vivado工程6、上板调试验证7、福利:工程源码获取1、前言 本文章主要针对大学本科阶段学生; 读文章之前先来几个灵魂拷问: 1、你是否学过《微机原理》、《单片机》、《汇编语言》…

怎样做一个优秀的程序员?这10个问题ChatGPT这样说 ……

本文目录 1 怎样做一个优秀的程序员? 2 怎样成为优秀的架构师? 3 怎样写容易阅读的代码? 4 怎样做项目管理? 5 怎样学习计算机程序设计? 6 怎样提升个人影响力? 7 怎样提升认知? 8 程序员怎样面试通过几率高? 9 怎样提升研发效能? 10 怎样保障软件系统的稳定…

字体图标的使用【购物车】

方法1 <link rel"stylesheet" href"2购物车/iconfont.css"><style>*{padding: 0;margin: 0;}li{width: 90px;height: 40px;background-color: pink;margin: 0 auto; list-style: none;text-align: center;line-height: 40px;}a{text-decoratio…

4.6 Python元组

列表非常适合用于存储在程序运行期间可能变化的数据集。Python将不能修改的值称为不可变的&#xff0c;而不可变的列表被称为元组。4.5.1 定义元组元组看起来犹如列表&#xff0c;但使用圆括号而不是方括号来标识。定义元组后&#xff0c;就可以使用索引来访问其元素&#xff0…

vue3组件库项目学习笔记(七):正式开发问题拾遗

目前组件库的开发还在进行中&#xff0c;这里把一些开发过程中遇到的问题和解决方案总结一下&#xff0c;也方便后续开发的同学踩坑了可以马上解决问题&#xff0c;这期的问题主要是&#xff1a; 多项目开发的配置文件优化和全局导入方法的修改怎么样使用 icon 组件怎么样使用…

git-学习git,这一篇就足够了(初学者视角实战教程)

目录git概念命令git配置README.gitignore工作区、暂存区和版本库基础配置创建远程仓库克隆修改查看工作区当前状态添加到暂存区回退版本比较工作区与缓存区的差异添加到本地仓库并加注释push提高git pull文件删除与恢复分支管理列出分支创建分支切换分支分支操作标签管理创建标…

【linux】进程间通信——管道通信

进程间通信一、进程间通信1.1 通信的介绍1.2 通信的目的1.3 通信的分类二、管道2.1 匿名管道2.1.1 pipe2.2.2 读写特征2.2.3 命名管道一、进程间通信 1.1 通信的介绍 通信就是一个进程把数据传递给另一个进程&#xff0c;但是每个进程都具有独立性。通信的本质&#xff1a;OS需…

STL——vector

一、标准库中的vector 1.vector文档介绍 &#xff08;1&#xff09;vector是表示可变大小数组的序列容器。 &#xff08;2&#xff09;像数组一样&#xff0c;vector也采用连续存储空间来存储元素&#xff0c;也就意味着可以采用下标对vector的元素进行访问&#xff0c;和数…

深度:用10000字总结了嵌入式C语言必学知识点

导读&#xff1a;怎么做好嵌入式&#xff1f;相信这个问题无论问谁你都会得到一句学好C语言&#xff01;今天推荐一篇大佬写的嵌入式C语言知识点总结&#xff0c;非常值得一读。 目录 1 关键字 2 数据类型 3 内存管理和存储架构 4 指针和数组 5 结构类型和对齐 6 预处理…

RDC 2022纪念版开发板-D1S在RT-Smart运行

开发环境 软件 ubuntu20.04VMware Workstation 硬件 RDC2022纪念版开发板全志D1s芯片 材料下载 首先打开虚拟机&#xff0c;创建一个目录存放本次测试的代码&#xff0c;然后克隆RT-Smart用户态代码。 git clone https://github.com/RT-Thread/userapps.git在userapps目…

SMB2协议特性之oplock与lease(下

前期回顾上篇文章我们介绍了oplock/lease的相关概念及其基本工作原理&#xff0c;由于间隔时间较长&#xff0c;忘记的读者可以先去回顾一下。本篇文章带大家了解一下&#xff0c;在实际场景中&#xff0c;oplock/lease是如何工作的。实际场景分析在一些警匪影视剧中&#xff0…

PCI驱动程序框架

PCI驱动程序框架 文章目录PCI驱动程序框架参考资料&#xff1a;一、 PCI驱动框架二、 RK3399驱动致谢参考资料&#xff1a; 《PCI Express Technology 3.0》&#xff0c;Mike Jackson, Ravi Budruk; MindShare, Inc.《PCIe扫盲系列博文》&#xff0c;作者Felix&#xff0c;这是…

【NS2】打印c++函数名字/bash将echo赋值给变量

需求&#xff1a;将tcl在c调用的路由算法名字&#xff08;函数名&#xff09;输出&#xff0c;并作为变量赋值给文件名字&#xff0c;但就怎么将函数名字打印出来就思考了很久&#xff0c;并尝试了其他网站“在shell脚本使用tcl变量、如何在bash脚本打印tcl变量、NS2&#xff0…

【实际开发12】- 经验 experience

目录 1. 经验 experience 1. 无多大价值 , 停留数据展示层面 2. 保证数据一致性问题 3. 新增时 , 可先关注核心基础数据 ( 复杂数据以修改形式完善 ) 4. 新增 / 修改 ( 幂等性处理 ) 5. 增 / 删 / 改 添加日志 , 查询无需日志 6. 需要对接多模块的通用字段设计 : String…

什么是CRM系统 企业如何选择合适的CRM系统

在如今市场竞争激烈情况下&#xff0c;企业更加注重客户的数据和管理&#xff0c;因此逐渐形成了“以客户为核心”的理念。而借助CRM系统管理客户数据已然成为一种趋势。 选择一款适合企业的CRM系统可以帮助企业实现更多的价值。但一些企业在初期根本不了解什么是CRM系统&…

Hadoop安装(一) --- JDK安装

目录 1.安装虚拟机 2.关防火墙 3.修改网络配置文件 4.重启网络服务 5.连接shell 6.安装vim工具 7.免密登陆 8. 开启远程免密登录配置 9.远程登录 10.同步时间 10.1.安装ntpdate 10.2.定时更新时间 10.3.启动定时任务 10.4.查看状态 11.修改计算机名 12.配置ho…

数据仓库的架构以及传统数据库与数据仓库的区别

一、数据仓库的分层架构 数据仓库的数据来源于不同的源数据&#xff0c;并提供多样的数据应用&#xff0c;数据自下而上流入数据仓库后向上层开放应用&#xff0c;而数据仓库只是中间集成化数据管理的一个平台。 1&#xff0c;源数据层&#xff08;ODS&#xff09; 操作性数…