上下文:
我有一个基于java的应用程序,比如appa
它查询数据库,比如说datad
它对这些数据起作用,做一些魔术并将其传递给另一个应用程序,比如appb
问题:
datad中的数据量相当大。
我的appa并不能一次处理所有的数据。
我的appb对一次性获取所有数据也不是很感兴趣。
解决方案:
我想从datad查询数据,但一次只能查询10000个(可配置的)数据。
我将在appa中处理该批,将其传递到appb,然后对datad执行另一个查询。
我必须告诉datad,我已经读了多少条记录,并要求它给出下10000条。因此,不知何故,我的appa需要跟踪最后一次读取的数据,并有一个聪明的方法来有效地查询一系列数据。
我的数据没有任何方法来记录(或维护)它已经发送回来的内容。它是一个数据库,不可能在它之上添加任何soa/rest智能。因此,我的appa必须足够智能,才能查询特定范围。
问题:
在核心Java中不需要太多的技巧,是否可以使用任何框架来实现这一点——我喜欢称之为“数据流”?如果是,怎么做?
最佳答案
听起来很复杂,我建议你尽量使它简单。
我会让appa执行查询,并在得到每一行时对其进行处理,然后将派生数据写入appb正在监听的套接字。除非你知道这会导致性能问题,否则我不会让它变得更复杂。