0

我的公司有一个内部 API,其中包含大量事实数据(截至目前为 80MM 记录)。我有四个定期与我联系的客户。主要的 API 调用将新项目添加到数据库中,验证其真实性,然后根据提交的项目返回结构化的分析数据。

随着时间的推移,当我们确定更多与项目相关联的数据时,我需要能够让我的客户知道记录已更改。

现在我有一个/recent端点,它返回自$timestamp. 这对于小型数据集来说很好,但考虑到大量事务,很容易得到超过一百万个项目的 /recent 数据集,尤其是在导入大量数据的情况下。

我的另一个想法是使用 web 挂钩将数据推送到客户端,但是问题变成了推送太多数据。我的客户不一定需要对每个更改的项目进行更新——也许他们只需要他们已经提交的项目。

问题不在于代码,而在于设计模式或代码策略:

有哪些最佳策略可以通知我的客户更新的记录,而不会向我的客户发出不必要的请求或在民意调查中提供数百万条记录?

4

1 回答 1

0

我使用了对大型请求进行分页的 3rd 方 API(例如 Amazon)。如果数据集超过页面限制,客户端需要再次请求下一页。这将与 /recent 端点结合使用。

实际的实现类似于

{
  requestId: "foobar",
  page: 0,
  pages: 10,
  data: {
    ...
  }
}

客户端发出请求并获取第一页数据,然后将requstId 和页码发送到端点。不知何故,您希望保留对与 requestId 对应的数据的引用。

于 2013-10-08T00:14:59.607 回答