spring - 哪个最适合批量 XML 数据处理? Spring Batch 还是 ETL 水壶 pentaho?

标签 spring spring-batch cpu-usage kettle

我想处理大量 XML 数据并将其保存到数据库中。这是最好的选择。 Spring 批水壶pentaho? 我有一些检查点。

  1. 当模式已知时,工具就很好用
  2. 支持并行执行、多个 session 和错误日志
  3. 速度更快、内存更少、CPU 利用率更低
  4. 支持插入和更新
  5. 目标表的外键引用,删除约束并在数据加载后添加
  6. 消除重复
  7. 支持 block 或批量加载
  8. headless 执行(无 GUI 用于计划和启动)
  9. 支持多种输入格式
  10. 支持自定义数据转换作为可插入组件
  11. 事务控制、错误处理和日志记录以供将来执行
  12. 检查作业状态、监控
  13. 集成测试、健全性测试
  14. 可扩展,如何并行加载多个节点
  15. 作业崩溃时重新启动,失败后自动重启
  16. 执行期间跟踪状态和统计数据
  17. 能够通过网络或 Rest 界面启动

最佳答案

我将尝试使用 Spring Batch 功能来解决您的观点:

  1. 当模式已知时,工具就很好用

Spring 批处理就是这种情况。您将能够使用需要带注释的 bean(已知架构)的 StaxEventItemReader

  • 支持并行执行、多个 session 和错误日志
  • Spring批处理支持并行执行和错误日志记录。我不确定你所说的多次 session 是什么意思。 Here are some info about spring batch scalability .

  • 速度更快、内存更少、CPU 利用率更低
  • Spring 批处理性能在很大程度上取决于您将如何使用它。尽管它可能不是最快或更高效的,但它已在世界各地的许多生产环境中使用。

  • 支持插入和更新
  • Spring Batch 数据库编写器支持具有此类操作的常见 DBMS(JdcbBatchItemWriterHibernateItemWriter...)

  • 目标表的外键引用,删除约束并在数据加载后添加
  • 我认为这需要一些手动实现,但我不确定,因为到目前为止我还没有满足要求。

  • 消除重复
  • 这将在您的ItemProcessor中完成。这是一个例子:processing batch of records using spring batch before writing to DB

  • 支持 block 或批量加载
  • 您可以使用 Spring Batch 配置编写器的commit-interval 和回滚操作。

  • headless 执行(无 GUI 用于计划和启动)
  • Spring Batch 可以使用 CommandLineJobRunner 启动,也可以使用 JobLauncher 以任何其他方式启动(需要一些手动实现)

  • 支持多种输入格式
  • Spring Batch 可以读取任何类型的平面文件 (FlatFileItemReader)、xml 文件 (StaxEventItemReader)、队列 (JmsItemReader) 或数据库 ( JdbcCursorItemReader)。

  • 支持自定义数据转换作为可插入组件
  • 数据转换是通过ItemProcessor实现的。有开箱即用的实现,但大多数情况下您必须编写自己的实现来应用自定义逻辑。至于可插拔组件,我不确定你的意思。

  • 事务控制、错误处理和日志记录以供将来执行
  • Spring Batch 具有完整的重试机制和可重启性。您可以阅读更多herehere .

  • 检查作业状态、监控
  • Spring Batch 允许您配置存储有关作业状态的元数据(数据库、文件、RAM...)的位置。您将能够读取这些数据。还有第二个项目名为 spring-batch-admin ,它是一个用于监视和控制的 GUI。了解更多 here .

  • 集成测试、健全性测试
  • 无法回答。

  • 可扩展,如何并行加载多个节点
  • 参见 11。 Spring Batch 还可以与 Spring-XD 集成.

  • 作业崩溃时重新启动,失败后自动重启
  • 参见 11。

  • 执行期间跟踪状态和统计数据
  • 参见 12。

  • 能够通过网络或 Rest 界面启动
  • Spring Batch 可以与 Spring-Boot 集成来满足这些需求。


    我希望我回答了您的一些疑虑。

    关于spring - 哪个最适合批量 XML 数据处理? Spring Batch 还是 ETL 水壶 pentaho?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33935152/

    相关文章:

    java - 自动生成的代码不符合 CheckStyle 标准 (jHipster)

    java - 我的 Spring Batch 上下文有什么问题?

    java - 动态 block 大小的 Spring Batch 自定义完成策略

    java - Spring-Batch 没有将元数据持久化到数据库?

    linux - 在可能的值上加载平均

    c++ - gcc 编译(有时)导致 cpu 负载不足

    java - 没有 Spring Cloud 数据流的 Spring Batch

    Java Spring——验证单个对象字段

    java - 在 C++ 或 Java 中有没有办法获得 CPU 使用率?

    java - 如何订购AOP切面和MVC拦截器?