2

语境:

  1. 我有一个基于 Java 的应用程序,比如说 AppA
  2. 它查询数据库,比方说 DataD
  3. 它适用于该数据,发挥一些作用并将其传递给另一个应用程序,例如 AppB

问题:

  1. DataD中的数据量非常大。
  2. 我的 AppA 并没有真正具备一次性处理所有数据的能力。
  3. 我的 AppB 对一次性获取所有数据也不是很感兴趣。

解决方案:

  1. 我想从 DataD 查询数据,但一次只能以 10,000 个(可配置)的形式查询。
  2. 我将在 AppA 中处理该批次,将其传递给 AppB,然后在 DataD 上执行另一个查询。
  3. 我将不得不告诉 DataD,我已经阅读了多少条记录,并要求它提供接下来的 10,000 条记录。所以不知何故,我的 AppA 需要跟踪最后读取的数字,并有一种巧妙的方式有效地查询 DataD 以获取一系列数据。
  4. 我的 DataD 没有任何方法来记录它已经发回的内容(或维护标志)。它是一个数据库,也不可能在其上添加任何 SOA / REST 智能。因此,我的 AppA 必须足够智能才能查询特定范围。

问题:

  1. 无需在核心 java 中使用太多杂耍,是否有可能使用任何框架来实现这一点 - 我喜欢称之为 - “数据流”?如果是这样,怎么做?
4

1 回答 1

2

这听起来有点复杂,我建议你尽量让它尽可能简单。

我会让 AppA 执行查询并在获取每一行时对其进行处理,并将派生数据写入 AppB 正在侦听的 Socket。除非您知道这会导致性能问题,否则我不会让它变得更复杂。

于 2012-09-03T14:31:23.910 回答