首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Spring Batch 批处理(1) - 简介及使用场景

什么是 Spring Batch 介绍 Spring Batch 作为 Spring 的子项目,是一款基于 Spring 的企业批处理框架。通过它可以构建出健壮的企业批处理应用。...优化的原则有: 尽量一次事物对同一数据进行读取或写缓存。 一次事物,尽可能在开始就读取所有需要使用的数据。 优化索引,观察SQL的执行情况,尽量使用主键索引,尽量避免全表扫描或过多的索引扫描。...另外批处理输出的数据也需要进行合适的校验(例如处理了100条数据,校验100条数据是否校验成功) 提取数据:批处理的工作是逐条数据库或目标文件读取记录(records),提取时可以通过一些规则从数据源中进行数据筛选...Chunk里面就是不断循环的一个流程,读数据,处理数据,然后写数据。Spring Batch会不断的循环这个流程,直到批处理数据完成。...()) ``` 比如在任务中有一个名为“loadData”的Step,他的作用是文件读取数据写入到数据库,当第一次执行失败后,数据库中有如下数据: BATCH_JOB_INSTANCE: JOB_INST_ID

3.7K21

批处理框架 Spring Batch 这么强,你会用

大批量批处理作业可以高度可扩展的方式利用该框架来处理大量信息。 Spring Batch架构介绍 一个典型的批处理应用程序大致如下: 数据库,文件或队列读取大量记录。 以某种方式处理数据。...使用Spring batch的过程当中spring batch会自动创建一些表用于存储一些job相关的信息,用于存储JobExecution的表为batch_job_execution,下面是一个数据库当中截图的实例...一个step可以非常简单也可以非常复杂。例如,一个step的功能是将文件的数据加载到数据库,那么基于现在spring batch的支持则几乎不需要写代码。...如何默认不启动job 使用java config使用spring batch的job时,如果不做任何配置,项目启动时就会默认去跑我们定义好的批处理job。...spring batch的job会在项目启动时自动run,如果我们不想让他启动时run的话,可以application.properties添加如下属性: spring.batch.job.enabled

92130
您找到你想要的搜索结果了吗?
是的
没有找到

Spring Batch(1)——数据批处理概念

批处理的核心场景 某个位置读取大量的记录,位置可以数据库、文件或者外部推送队列(MQ)。 根据业务需要实时处理读取的数据。...使用Spring Batch主要就是知道每一个基础设置负责的内容,然后在对应的设施实现对应的业务。...优化的原则有: 尽量一次事物对同一数据进行读取或写缓存。 一次事物,尽可能在开始就读取所有需要使用的数据。...另外批处理输出的数据也需要进行合适的校验(例如处理了100条数据,校验100条数据是否校验成功) 提取数据:批处理的工作是逐条数据库或目标文件读取记录(records),提取时可以通过一些规则从数据源中进行数据筛选...()) 比如在任务中有一个名为“loadData”的Step,他的作用是文件读取数据写入到数据库,当第一次执行失败后,数据库中有如下数据: BATCH_JOB_INSTANCE: JOB_INST_ID

1.9K71

批处理框架spring batch基础知识介绍「建议收藏」

大批量批处理作业可以高度可扩展的方式利用该框架来处理大量信息。 Spring Batch架构介绍 一个典型的批处理应用程序大致如下: 数据库,文件或队列读取大量记录。 以某种方式处理数据。...其对应的示意图如下: spring batch的一个总体的架构如下: spring batch中一个job可以定义很多的步骤step,每一个step里面可以定义其专属的ItemReader用于读取数据...使用Spring batch的过程当中spring batch会自动创建一些表用于存储一些job相关的信息,用于存储JobExecution的表为batch_job_execution,下面是一个数据库当中截图的实例...如何默认不启动job 使用java config使用spring batch的job时,如果不做任何配置,项目启动时就会默认去跑我们定义好的批处理job。...spring batch的job会在项目启动时自动run,如果我们不想让他启动时run的话,可以application.properties添加如下属性: spring.batch.job.enabled

1.1K30

spring batch数据库表数据结构

分区远程的工程搭建,期间有使用ActiveMQ(JMS)的实现也有基于RabbitMQ(AMQP)的实现,最终选择了基于RabbitMQ的远程主从模式搭建项目,最终项目模型支持一主多,多主多,主从混用的使用...这些脚本可以按原样使用,也可以根据需要使用其他索引和约束进行修改。文件名的格式为schema-*.sql“*”,表示目标数据库平台的简称。...该的对象表示是 BatchStatus枚举。 COMMIT_COUNT:此执行期间步骤已提交事务的次数。 READ_COUNT:执行过程读取项目数量。...最好的结果取决于数据库平台以及数据库服务器本地配置的方式。 A.10。索引元数据表的建议 Spring Batch为几个常见数据库平台的核心jar文件的元数据表提供了DDL示例。...下面提供了一些WHERE关于Spring批处理提供的DAO实现将使用哪些以及它们可能被使用的频率的一些指示,以便单个项目可以对索引编制自己的想法: 表1.

4.4K80

Spring Batch 批处理框架,真心强啊!!

架构介绍 一个典型的批处理应用程序大致如下: 数据库,文件或队列读取大量记录。...使用Spring batch的过程当中spring batch会自动创建一些表用于存储一些job相关的信息,用于存储JobExecution的表为batch_job_execution,下面是一个数据库当中截图的实例...特别是,需要寻找以下四个常见缺陷: 当数据可以读取一次并缓存或保存在工作存储时,读取每个事务的数据。 重新读取先前同一事务读取数据的事务的数据。 导致不必要的表或索引扫描。...如何默认不启动job 使用java config使用spring batch的job时,如果不做任何配置,项目启动时就会默认去跑我们定义好的批处理job。...spring batch的job会在项目启动时自动run,如果我们不想让他启动时run的话,可以application.properties添加如下属性: spring.batch.job.enabled

1.3K10

批处理框架 Spring Batch 这么强,你会用

大批量批处理作业可以高度可扩展的方式利用该框架来处理大量信息。 Spring Batch架构介绍 一个典型的批处理应用程序大致如下: 数据库,文件或队列读取大量记录。 以某种方式处理数据。...使用Spring batch的过程当中spring batch会自动创建一些表用于存储一些job相关的信息,用于存储JobExecution的表为batch_job_execution,下面是一个数据库当中截图的实例...一个step可以非常简单也可以非常复杂。例如,一个step的功能是将文件的数据加载到数据库,那么基于现在spring batch的支持则几乎不需要写代码。...如何默认不启动job 使用java config使用spring batch的job时,如果不做任何配置,项目启动时就会默认去跑我们定义好的批处理job。...spring batch的job会在项目启动时自动run,如果我们不想让他启动时run的话,可以application.properties添加如下属性: spring.batch.job.enabled

90310

Spring Batch批处理框架,真心强啊!!

大批量批处理作业可以高度可扩展的方式利用该框架来处理大量信息。 Spring Batch 架构 一个典型的批处理应用程序大致如下: 数据库,文件或队列读取大量记录。 以某种方式处理数据。...一个 step 可以非常简单也可以非常复杂。 例如,一个 step 的功能是将文件的数据加载到数据库,那么基于现在 Spring Batch 的支持则几乎不需要写代码。...特别是,需要寻找以下四个常见缺陷:当数据可以读取一次并缓存或保存在工作存储时,读取每个事务的数据;重新读取先前同一事务读取数据的事务的数据;导致不必要的表或索引扫描;未在 SQL 语句的 WHERE...| 如何默认不启动 job 使用 java config 使用 Spring Batch 的 job 时,如果不做任何配置,项目启动时就会默认去跑我们定义好的批处理 job。...Spring Batch 的 job 会在项目启动时自动 run,如果我们不想让他启动时 run 的话,可以 application.properties 添加如下属性: spring.batch.job.enabled

1K10

批处理框架 Spring Batch 这么强,你会用

大批量批处理作业可以高度可扩展的方式利用该框架来处理大量信息。 Spring Batch架构介绍 一个典型的批处理应用程序大致如下: 数据库,文件或队列读取大量记录。 以某种方式处理数据。...使用Spring batch的过程当中spring batch会自动创建一些表用于存储一些job相关的信息,用于存储JobExecution的表为batch_job_execution,下面是一个数据库当中截图的实例...一个step可以非常简单也可以非常复杂。例如,一个step的功能是将文件的数据加载到数据库,那么基于现在spring batch的支持则几乎不需要写代码。...如何默认不启动job 使用java config使用spring batch的job时,如果不做任何配置,项目启动时就会默认去跑我们定义好的批处理job。...spring batch的job会在项目启动时自动run,如果我们不想让他启动时run的话,可以application.properties添加如下属性: spring.batch.job.enabled

3K20

批处理框架 Spring Batch 这么强,你会用

大批量批处理作业可以高度可扩展的方式利用该框架来处理大量信息。 Spring Batch 架构介绍 一个典型的批处理应用程序大致如下: 数据库,文件或队列读取大量记录。 以某种方式处理数据。...一个 step 可以非常简单也可以非常复杂。例如,一个 step 的功能是将文件的数据加载到数据库,那么基于现在 spring batch 的支持则几乎不需要写代码。...特别是,需要寻找以下四个常见缺陷: 当数据可以读取一次并缓存或保存在工作存储时,读取每个事务的数据。 重新读取先前同一事务读取数据的事务的数据。 导致不必要的表或索引扫描。...如何默认不启动 job 使用 java config 使用 spring batch 的 job 时,如果不做任何配置,项目启动时就会默认去跑我们定义好的批处理 job。...spring batch 的 job 会在项目启动时自动 run,如果我们不想让他启动时run 的话,可以 application.properties 添加如下属性: spring.batch.job.enabled

71730

批处理框架 Spring Batch 这么强,你会用

大批量批处理作业可以高度可扩展的方式利用该框架来处理大量信息。 Spring Batch架构介绍 一个典型的批处理应用程序大致如下: 数据库,文件或队列读取大量记录。 以某种方式处理数据。...使用Spring batch的过程当中spring batch会自动创建一些表用于存储一些job相关的信息,用于存储JobExecution的表为batch_job_execution,下面是一个数据库当中截图的实例...一个step可以非常简单也可以非常复杂。例如,一个step的功能是将文件的数据加载到数据库,那么基于现在spring batch的支持则几乎不需要写代码。...如何默认不启动job 使用java config使用spring batch的job时,如果不做任何配置,项目启动时就会默认去跑我们定义好的批处理job。...spring batch的job会在项目启动时自动run,如果我们不想让他启动时run的话,可以application.properties添加如下属性: spring.batch.job.enabled

1.2K30

Spring Batch快速入门

Spring Batch简介 Spring Batch简单来说就是一个轻量级的批处理框架,名字就可以知道它是Spring 的子项目。...我们企业开发可能会面临到一些需要处理较大数据量的场景,例如将一个表的全部数据导入到另一张表结构类似的表、批量读取一个或多个文件内容并写入到数据库,又或者将一张表的数据批量更新到另一张表。...而Spring Batch可以帮助我们快速的开发这种场景下的批处理应用程序。...对于大数据量和高性能的批处理任务,Spring Batch 同样提供了高级功能和特性来支持,例如分区功能、远程功能等,大大简化了批处理应用的开发,将开发人员复杂的任务配置管理过程解放出来,让我们可以更多地去关注核心的业务的处理过程...通常运行Job的方式有两种,一种是我们把Job对象注入到Spring容器里,Spring Batch默认项目启动完成后就会运行容器里配置好的Job,如果配置了多个Job也可以通过配置文件去指定。

1.8K20

读取Excel还用POI?试试这款开源工具

数据按照我们预期做出了转换,从这里也可以看出,Converter 可以一次定义到处是用的便利性 日期信息转换 日期信息也是我们常见的转换数据,比如 Excel 中新增「出生年月」我们要解析成 yyyy-MM-dd...到这里都是以测试的方式来编写程序代码,作为 Java Web 开发人员,尤其目前主流 Spring Boot 的架构下,所以如何实现 Web 方式读取 Excel 的信息呢?...,这是不符合 Spring IoC 的规则的,我们通常读取 Excel 数据之后都要针对读取的数据编写一些业务逻辑的,而业务逻辑通常又会写在 Service 层我们如何在 listener 调用到我们的...很显然这种方式不是我们的最佳编码实现 构造器传参 之前分析 SpringBoot 统一返回源码时,不知道你是否发现,Spring 底层源码多数以构造器的形式传参,所以我们可以将为 listener 添加有参构造器...」文件夹的内容即可,更多文章可以 https://dayarch.top/archives 入口查看

78320

读取Excel还用POI?试试这款开源工具

数据按照我们预期做出了转换,从这里也可以看出,Converter 可以一次定义到处是用的便利性 日期信息转换 日期信息也是我们常见的转换数据,比如 Excel 中新增「出生年月」我们要解析成 yyyy-MM-dd...到这里都是以测试的方式来编写程序代码,作为 Java Web 开发人员,尤其目前主流 Spring Boot 的架构下,所以如何实现 Web 方式读取 Excel 的信息呢?...,这是不符合 Spring IoC 的规则的,我们通常读取 Excel 数据之后都要针对读取的数据编写一些业务逻辑的,而业务逻辑通常又会写在 Service 层我们如何在 listener 调用到我们的...很显然这种方式不是我们的最佳编码实现 构造器传参 之前分析 SpringBoot 统一返回源码时,不知道你是否发现,Spring 底层源码多数以构造器的形式传参,所以我们可以将为 listener 添加有参构造器...,具体的逻辑交给抽象方法的实现来完成 业务逻辑可扩展性也更好,逻辑更加清晰 总结 到这里,关于如何使用 EasyExcel 读取 Excel 信息的基本使用方式已经介绍完了,还有很多细节内容没有讲,大家可以自行查阅

1.3K10

省内存的 Excel 导入导出库还是得了解下它...

我们创建一个 SpringBoot 的项目,然后 pom.xml 文件引入 EasyExcel 的依赖,依赖如下: <!...实际的导入导出功能,数据一般是通过查询数据库获取的,这部分功能由程序员自己来完成实现,而 Excel 的导入导出实际是由类库帮助我们完成。...四、读取 Excel 的数据 在读取 Excel 的内容时,EasyExcel 类库为我们提供了同步读取,或者创建监听器的方式进行读取。...五、通过 Web 导出数据为 Excel 文件 项目中,通常是通过一个页面来完成数据导入,我们可以写一个接口来供前端进行使用。... EasyExcel 官网给出了一段 Demo 供大家参考,代码我直接复制过来,供大家阅读,代码如下: // 有个很重要的点 DemoDataListener 不能被spring管理,要每次读取excel

85030

使用EasyExcel导入导出Excel

/doc/easyexcel 使用场景 日常开发 我们难免需要导入数据 可以用EasyExcel来解决 2、EasyExcel特点 Java领域解析、生成Excel比较有名的框架有Apache...EasyExcel能大大减少占用内存的主要原因是解析Excel时没有将文件数据一次性全部加载到内存,而是磁盘上一行行读取数据,逐个解析。...我们读取到 数据之后 肯定要持久化到数据库 这个操作就由我们的监听器来完成 1、Mapper层批量插入 接口:DictMapper void insertBatch(List<ExcelDictDTO...,实际使用可以100条,然后清理list ,方便内存回收 */ private static final int BATCH_COUNT = 100; /** *...实际使用如果到了spring,请使用下面的有参构造函数 demoDAO = new DemoDAO(); } /** * 如果使用spring,请使用这个构造方法

35310

使用EasyExcel导入导出Excel

/doc/easyexcel 使用场景 日常开发 我们难免需要导入数据 可以用EasyExcel来解决 2、EasyExcel特点 Java领域解析、生成Excel比较有名的框架有Apache poi...EasyExcel能大大减少占用内存的主要原因是解析Excel时没有将文件数据一次性全部加载到内存,而是磁盘上一行行读取数据,逐个解析。...我们读取到 数据之后 肯定要持久化到数据库 这个操作就由我们的监听器来完成 1、Mapper层批量插入 接口:DictMapper void insertBatch(List<ExcelDictDTO...,实际使用可以100条,然后清理list ,方便内存回收 */ private static final int BATCH_COUNT = 100; /** *...实际使用如果到了spring,请使用下面的有参构造函数 demoDAO = new DemoDAO(); } /** * 如果使用spring,请使用这个构造方法

2.6K30

POI和EasyExcel-你还在为导入导出数据苦恼

文章目录 写在前面 POI 导入依赖 写入 读取 计算公式 EasyExcel 导入依赖 写入 读取 实战 写在前面 ---- 开发中经常会涉及到excel的处理,比如导出用户信息为excel表格...、打印报表、月销售情况、成绩单等等(导出数据),还有将excel的信息录入到网站数据库等(导入数据),我们不可能手动操作,所以介绍Apache的POI和阿里巴巴的EasyExcel。...EasyExcel ---- EasyExcel是阿里巴巴开源的excel处理框架,因为没有一次全部加载进内存,是磁盘上一行行解析,所以节省内存,同时操作十分简便,一行代码,可以根据实体类自动生成表。...实际使用如果到了spring,请使用下面的有参构造函数 demoDAO = new DemoDAO(); } public DemoDataListener(DemoDAO...了,需要去存储一次数据库,防止数据几万条数据在内存,容易OOM if (list.size() >= BATCH_COUNT) { saveData(); //持久化逻辑

4.2K11
领券