当数据库API不支持流式传输时,如何处理大型数据集的内存问题?

时间:2015-01-19 13:19:10

标签: streaming

我正在努力在我们的应用程序框架中通过REST公开数据,并且需要处理可能在没有限制/偏移的情况下查询数百万个对象的情况。数据库API不支持流式传输,这在不久的将来不会发生变化。处理这种情况的最佳方法是什么?

到目前为止,我有几个选择:

  • 实施我们自己的批处理机制。因此,从外部客户端只需要我们所拥有的一切,但在内部我们使用限制和抵消进行批处理。我们有唯一标识符,因此我们可以使用它们进行排序。
    • 缺点是数据损坏的风险很小。我们的框架支持自引用,例如有人会检索Person类型的所有对象。人员ID 500指的是人员ID 1500.检索批次1-1000,人员500指的是人员1500.该数据被流式传输。然后删除id为1500的人,并更新id为500的人的参考。检索批次1001-2000但缺少人员1500。人500的数据已经流式传输,即使在一个流中,数据现在也无效。
  • 设置检索的最大对象数量,让客户端处理批处理,包括处理上述数据损坏的方案。
  • 什么也不做,只是让应用程序内存不足。使用该平台让开发人员不要暴露大型表,绝对不是匿名用户。

我希望能听到一些替代方案。

1 个答案:

答案 0 :(得分:0)

我做了更多的研究,并且认为没有适当的解决方案。最后,我们设法在数据库层中获得所需的更改,以便能够流式传输数据。其他一切都会产生太重要的缺点。