我正在努力在我们的应用程序框架中通过REST公开数据,并且需要处理可能在没有限制/偏移的情况下查询数百万个对象的情况。数据库API不支持流式传输,这在不久的将来不会发生变化。处理这种情况的最佳方法是什么?
到目前为止,我有几个选择:
- 实施我们自己的批处理机制。因此,从外部客户端只需要我们所拥有的一切,但在内部我们使用限制和抵消进行批处理。我们有唯一标识符,因此我们可以使用它们进行排序。
- 缺点是数据损坏的风险很小。我们的框架支持自引用,例如有人会检索Person类型的所有对象。人员ID 500指的是人员ID 1500.检索批次1-1000,人员500指的是人员1500.该数据被流式传输。然后删除id为1500的人,并更新id为500的人的参考。检索批次1001-2000但缺少人员1500。人500的数据已经流式传输,即使在一个流中,数据现在也无效。
- 设置检索的最大对象数量,让客户端处理批处理,包括处理上述数据损坏的方案。
- 什么也不做,只是让应用程序内存不足。使用该平台让开发人员不要暴露大型表,绝对不是匿名用户。
我希望能听到一些替代方案。