哪个最适合批量 XML 数据处理? Spring 批处理还是 ETL kettle pentaho?
Which is best for bulk XML data processing? Spring Batch or ETL kettle pentaho?
我想处理大量 XML 数据并将其保存到数据库中。这是最好的选择。 Spring 批量水壶 pentaho?
我有一些检查站。
- 当模式已知时,该工具很好用
- 支持并行执行、多会话和错误日志
- 更快、更少内存和更少 CPU 利用率
- 同时支持插入和更新
- 目标表的外键引用,删除约束并在数据加载后添加
- 消除重复
- 块或批量加载支持
- 无头执行(计划和启动无图形用户界面)
- 支持多种输入格式
- 作为可插入组件支持自定义数据转换
- 未来执行的事务控制、错误处理和日志记录
- 检查作业状态,监控
- 集成测试、健全性测试
- 可扩展,如何并行加载多个节点
- Jobs 崩溃时重启,失败后自动重启
- 执行期间的跟踪状态和统计数据
- 能够通过 Web 或 Rest 界面启动
我将尝试使用 Spring 批处理功能来解决您的问题:
- 当架构已知时,该工具很好用
Spring批次就是这种情况。您将能够使用需要带注释的 bean(已知模式)的 StaxEventItemReader
。
- 支持并行执行、多会话和错误日志
Spring批处理支持并行执行和错误记录。我不确定您所说的多个会话是什么意思。 Here are some info about spring batch scalability.
- 更快,内存更少,利用率更低CPU
Spring 批处理性能在很大程度上取决于您将如何使用它。尽管它可能不是最快或更高效的,但它已在全球许多生产环境中使用。
- 同时支持插入和更新
Spring 批处理数据库编写器支持具有此类操作的通用 DBMS (JdcbBatchItemWriter
, HibernateItemWriter
...)
- 目标表的外键引用,删除约束并在数据加载后添加
我认为这需要一些手动实施,但我不确定,因为我今天还没有满足要求。
- 消除重复
这将在您的 ItemProcessor
中完成。这是一个例子:
- 块或批量加载支持
您可以使用 Spring 批量配置编写器的 commit-interval
和回滚操作。
- headless 执行(计划和启动无图形用户界面)
Spring 可以使用 CommandLineJobRunner
或任何其他方式使用 JobLauncher
开始批处理(然后需要一些手动实施)
- 支持多种输入格式
Spring批处理可以读取任何类型的平面文件(FlatFileItemReader
)、xml文件(StaxEventItemReader
)、队列(JmsItemReader
)或数据库(JdbcCursorItemReader
).
- 支持自定义数据转换为可插拔组件
通过ItemProcessor
实现数据转换。有开箱即用的实现,但大多数情况下您必须编写自己的实现来应用您的自定义逻辑。至于可插拔组件,我不太清楚你的意思。
- 未来执行的事务控制、错误处理和日志记录
Spring批处理有完整的Retry
机制和Restartability
。您可以阅读更多 here and here.
- 检查作业状态,监控
Spring Batch 允许您配置有关作业状态元数据的存储位置(数据库、文件、RAM...)。您将能够读取这些数据。还有一个名为 spring-batch-admin
的第二个项目,它是一个用于监视和控制的 GUI。阅读更多 here.
- 集成测试、完整性测试
无法回答。
- 可扩展,如何并行加载多个节点
参见 11。此外 Spring 批处理可以与 Spring-XD 集成。
- 作业崩溃时重启,失败后自动重启
参见 11。
- 执行期间的跟踪状态和统计数据
参见 12。
- 能够通过 Web 或 Rest 界面启动
Spring 批处理可以与 Spring-Boot 集成来满足这些需求。
希望我回答了您的一些问题。
我想处理大量 XML 数据并将其保存到数据库中。这是最好的选择。 Spring 批量水壶 pentaho? 我有一些检查站。
- 当模式已知时,该工具很好用
- 支持并行执行、多会话和错误日志
- 更快、更少内存和更少 CPU 利用率
- 同时支持插入和更新
- 目标表的外键引用,删除约束并在数据加载后添加
- 消除重复
- 块或批量加载支持
- 无头执行(计划和启动无图形用户界面)
- 支持多种输入格式
- 作为可插入组件支持自定义数据转换
- 未来执行的事务控制、错误处理和日志记录
- 检查作业状态,监控
- 集成测试、健全性测试
- 可扩展,如何并行加载多个节点
- Jobs 崩溃时重启,失败后自动重启
- 执行期间的跟踪状态和统计数据
- 能够通过 Web 或 Rest 界面启动
我将尝试使用 Spring 批处理功能来解决您的问题:
- 当架构已知时,该工具很好用
Spring批次就是这种情况。您将能够使用需要带注释的 bean(已知模式)的 StaxEventItemReader
。
- 支持并行执行、多会话和错误日志
Spring批处理支持并行执行和错误记录。我不确定您所说的多个会话是什么意思。 Here are some info about spring batch scalability.
- 更快,内存更少,利用率更低CPU
Spring 批处理性能在很大程度上取决于您将如何使用它。尽管它可能不是最快或更高效的,但它已在全球许多生产环境中使用。
- 同时支持插入和更新
Spring 批处理数据库编写器支持具有此类操作的通用 DBMS (JdcbBatchItemWriter
, HibernateItemWriter
...)
- 目标表的外键引用,删除约束并在数据加载后添加
我认为这需要一些手动实施,但我不确定,因为我今天还没有满足要求。
- 消除重复
这将在您的 ItemProcessor
中完成。这是一个例子:
- 块或批量加载支持
您可以使用 Spring 批量配置编写器的 commit-interval
和回滚操作。
- headless 执行(计划和启动无图形用户界面)
Spring 可以使用 CommandLineJobRunner
或任何其他方式使用 JobLauncher
开始批处理(然后需要一些手动实施)
- 支持多种输入格式
Spring批处理可以读取任何类型的平面文件(FlatFileItemReader
)、xml文件(StaxEventItemReader
)、队列(JmsItemReader
)或数据库(JdbcCursorItemReader
).
- 支持自定义数据转换为可插拔组件
通过ItemProcessor
实现数据转换。有开箱即用的实现,但大多数情况下您必须编写自己的实现来应用您的自定义逻辑。至于可插拔组件,我不太清楚你的意思。
- 未来执行的事务控制、错误处理和日志记录
Spring批处理有完整的Retry
机制和Restartability
。您可以阅读更多 here and here.
- 检查作业状态,监控
Spring Batch 允许您配置有关作业状态元数据的存储位置(数据库、文件、RAM...)。您将能够读取这些数据。还有一个名为 spring-batch-admin
的第二个项目,它是一个用于监视和控制的 GUI。阅读更多 here.
- 集成测试、完整性测试
无法回答。
- 可扩展,如何并行加载多个节点
参见 11。此外 Spring 批处理可以与 Spring-XD 集成。
- 作业崩溃时重启,失败后自动重启
参见 11。
- 执行期间的跟踪状态和统计数据
参见 12。
- 能够通过 Web 或 Rest 界面启动
Spring 批处理可以与 Spring-Boot 集成来满足这些需求。
希望我回答了您的一些问题。