我如何通过API公开200k +记录?

时间:2015-10-16 18:48:39

标签: api pagination integration webhooks large-data

将220k记录暴露给第三方应用程序的最佳选择是什么?

  • SF样式'批量API' - 独立于标准API以保持可用性
  • 服务器端分页
  • 回调一个ftp生成的文件?
  • 网络挂接?

这一批量必须每天发生一次。任何其他建议欢迎!

2 个答案:

答案 0 :(得分:2)

如何使用220k记录?

必须立即服务

如果没有特殊的GUI考虑和沟通,这个终端的人类消费者并不理想。

一个。我认为使用批量API'比阅读相同数据的文件略胜一筹。 (对此不是100%肯定。)打开和解释文件可能比直接访问端点的响应主体中提供的数据花费更多的时间。

可以分批发送

B中。如果一次只需要少量数据,则应使用服务器端分页,并允许消费者根据需要请求新批量数据。这可以通过在没有特别请求的情况下发送数据来减少不必要的服务器负载。

℃。如果在用户会话期间需要接收所有这些内容,那么找到一种方法来沿途发送消费者部分信息。通常,用户可以在其余部分加载时暂时满足部分数据,因此在客户端到达时会定期更新客户端。考虑AJAX长轮询,HTML5服务器发送事件(SSE),HTML5 Websockets,如下所述:What are Long-Polling, Websockets, Server-Sent Events (SSE) and Comet?。技术堆栈详细信息和第三方要求可能会限制您的选择。确保在完成后确认应用程序仍在处理请求的用户。

可以发送更少的数据

d。如果第三方应用程序只需要显示更新的记录,是否可以创建一个不同的端点来暴露这个更易于管理(希望)的记录子集?

电子。如果最终结果是在以用户为中心的应用程序中显示此数据,那么可能会发送可管理数量的摘要数据?是否有以用户为中心的应用程序一次显示220k记录,而不是取出单个(或小批量)?

答案 1 :(得分:1)

我会使用流API。这是一个执行“select * from table”的API,然后将结果流式传输给使用者。您可以使用for循环来获取和输出记录。这样你就不会占用太多内存,只要经常刷新输出,webserver就不会关闭连接,你将支持任何大小的结果集。

我知道这是有效的,因为我(无耻的插件)写了实际上这样做的mysql-crud-api