首页 > 解决方案 > 使用弹簧批处理应用流口水规则

问题描述

我们有这样的场景,我必须在应用业务规则后从一个数据库获取数据并将数据更新到另一个数据库。

我想使用 spring batch+drools+hibernate

我们可以批量应用规则,因为我们一次有数百万条记录吗?

标签: spring-batchdrools

解决方案


我不是流口水专家,我只是想提供一些有关 Spring Batch 的背景信息。

Spring Batch 是一个Read -> Process -> Write框架,我们对 drools 所做的与我们在Spring Batch 的Process步骤中所做的相同,即我们将读取项目转换为ItemProcessor.

Spring Batch 如何帮助您处理大量项目是通过实现面向块的处理,即我们一次读取 N 个项目,在处理器中逐个转换这些项目,然后在写入器中写入大量项目 - 这样我们基本上减少了数据库调用的数量。

如果您的数据可以根据某些标准进行分区,则通过分区等实现并行性可以进一步提高性能。

所以我们批量读取项目,逐个转换然后批量写入目标数据库,我不认为休眠是在写入步骤进行批量更新/插入的好工具——我会使用普通的 JDBC。

您的口水在转换步骤中出现,这将是您的自定义代码,其性能与 Spring Batch 无关,即您如何初始化会话、预编译规则等。您必须以这样一种方式插入此代码,即您不会每次都初始化 drools 会话等,但这应该是一次活动。


推荐阅读