我们有一个java应用程序,它从表中读取所有记录并形成json文档。最后,将所有json文档推入弹性搜索。这个应用程序需要3个多小时才能完成,因为有超过100万条记录。我们尝试应用多线程,但性能没有达到标准。因此,我们想要使用spring批处理块处理。
但是如何在春季批处理中实现相同。我们不能为每个表编写pojo类。我们只是迭代结果集并形成一个json对象。所有可用的示例都使用pojo类
步骤。
- 从数据库 读取数据迭代结果集并形成json对象。将所有json对象推送到Elasticsearch。
首先考虑:
您是否已经考虑返回您的数据库实体本身?因此,您不需要使用for迭代器手动转换所有数据记录。使用Jackson或Gson这样的映射器非常简单。
第二考虑:
你是否已经考虑过使用一个No-SQL数据库,如MongoDB,来存储这些记录?与关系数据库相比,它在性能方面具有表现力优势。
第三考虑:
你可以尝试使用Spring Batch,正如你已经提到的。但在这一点上,我不知道它是否比其他解决方案更有效。阅读这个主题,它可能会有所帮助