批量加载200万条记录在内存中可以吗?

时间:2018-09-24 15:08:03

标签: mongodb spring-batch

我必须运行春季批处理作业。我必须阅读mongo的大约200万份文档。文档有15个固定字段。它们包含字符串,日期和_id。

我的问题是,处理此问题的最佳方法是什么?只是一步一步完成还是一步步扩展?最佳做法是什么?将200万条记录加载到内存中不是很糟糕吗?我知道通过Apache Spark加载记录时,它会流式传输数据,这很好。但是我没有使用Apache Spark。

1 个答案:

答案 0 :(得分:1)

最好的方法是使用面向块的步骤。请参阅文档的chunk-oriented processing部分。

在内存中加载200万条记录不是一个好主意(即使您可以通过向JVM添加更多内存来做到这一点),因为您将有一个事务来处理这200万条记录。如果您的工作崩溃了,比如说在处理了100万条记录后,前半部分的处理将丢失。这个想法是对文档进行分块处理,并为每个块提交一个事务。这种进动是:

  • 效率高:因为它不会一次将整个输入数据集加载到内存中
  • 稳健:由于工作崩溃不会要求您重新处理已经处理过的文档

希望这会有所帮助。