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

how would I expose 200k+ records via an API?

将 22 万条记录公开给第三方应用程序的最佳选择是什么?

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

如何使用 220k 条记录?

必须一次性上齐

如果没有特殊的 GUI 考虑和通信,对于此端点的人类消费者来说并不理想。

一个。我认为使用 'bulk API' 比读取包含相同数据的文件要好一些。 (对此不是 100% 确定。)打开和解释文件可能比直接访问端点响应正文中提供的数据花费更多时间。

可以拼件寄送

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

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

可以发送更少的数据

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

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

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

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