2012-06-19 47 views
0

我有一个超过20000个项目的大名单,从数据库中提取并每天在一个简单的基于控制台的Java应用程序中处理它。在Java中处理来自数据库的大列表

什么是最好的方法来做到这一点。我是否应该以小集合的形式获取列表并处理它,或者是否应该将完整列表提取到数组中并处理它。保持数组意味着巨大的内存需求。

注意:只有一列要处理。

处理手段,我必须将该列中的字符串作为SOAP请求传递到其他位置。 20000项是长度为15的字符串。

回答

1

这取决于。 20000并不是一个真正的大数字。如果您只处理20000个短字符串或数字,则内存要求不会太大。但是,如果它是20000的图像有点大。

总是有一个折衷。多个数据块意味着多次访问数据库。但单次旅行意味着更多的记忆。哪一个对你更重要?你的数据也可以分块吗?或者您是否需要例如记录1才能够处理记录1000.

这些都是要考虑的事情。希望他们能帮助你找到最适合你的设计。

+0

20000长度为15的字符串。多次旅行不是问题。数据可以被分块,因为所有数据都是独立的。 –

+1

16位(2字节)*每个字符串15个字符* 20000个字符串只有大约600kb –

+0

@AkhilKNambiar在您的案例中,数据大小不够大,无法让您流汗。只需将其堵塞在适当的数据结构中,例如ArrayList。我宁愿避免多次旅行。 – Shahzeb

0

纠正我如果我错了,一点一点地取出它,并且还为它提供回滚操作。

0

如果可以在数据库级别完成工作,我会使用SQL sripts来完成工作,如果这不可能,我可以推荐您加载包含两列的小部分数据,如ID列和需要的列待处理。

这将使你在这个过程中获得更好的性能,如果你有任何崩溃,你不会丢失所有处理过的数据,但是在崩溃的情况下,你需要知道哪些数据集被处理,哪些不是,这可以完成使用第三栏或每轮保存最后处理的ID。

相关问题