我的公司有一个内部API,其中包含大量事实数据(目前为80MM记录)。我有四个客户定期联系我。主API调用将新项添加到数据库,验证其真实性,然后根据提交的项返回结构化的分析数据。
随着时间的推移,当我们识别出与项目相关联的更多数据时,我需要能够让我的客户知道记录已经更改。
现在我有一个/recent
端点,它返回自$timestamp
以来已更改的所有记录。这适用于小型数据集,但考虑到大量事务,人们可能很容易得到超过一百万个项目的/最新数据集,特别是如果有大量数据导入的话。
我的另一个想法是使用Web钩子将数据推送到客户端,但随后问题就变得过多了。我的客户不一定需要更改每个更改的项目 - 可能他们只需要他们已经提交的项目。
问题不在于代码,更多的是关于设计模式或代码策略:
有什么最佳策略可以通知我的客户更新的记录,而不会给客户带来不必要的请求或提供数百万条投票记录?
答案 0 :(得分:0)
我使用了对大量请求进行分页的第三方API(例如亚马逊)。如果数据集超出页面限制,则客户端需要再次请求下一页。这将与/ recent端点结合使用。
实际的实现类似于
{
requestId: "foobar",
page: 0,
pages: 10,
data: {
...
}
}
客户端发出请求并获取第一页数据,然后向端点发送requstId和页码。不知何故,你想要持久引用与requestId相对应的数据。