使用 spring 批次应用流口水规则

Applying drools rules using spring batch

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

我想使用 spring batch+drools+hibernate

我们一次有百万条记录,是否可以批量应用规则?

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

Spring Batch 是一个 Read -> Process -> Write 框架,我们使用 drools 所做的与我们在 Process 中所做的相同Spring 批处理的 步,即我们在 ItemProcessor 中转换读取的项目。

Batch 如何帮助您处理大量项目是通过实施 Chunk Oriented 处理,即我们一次性读取 N-number 个项目,在处理器中一个一个地转换这些项目,然后在编写器中写入大量项目——这样我们基本上减少了数据库调用的数量。

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

所以我们批量读取项目,一个一个地转换,然后批量写入目标数据库,我不认为 hibernate 是在写入步骤批量更新/插入的好工具 - 我会通过简单的 JDBC。

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