在节点中返回大量数据的良好做法

时间:2017-04-24 07:25:37

标签: node.js mongodb optimization koa

我已经使用Koa(nodeJs)编写了一个Web服务器。我需要从mongo数据库返回大量数据。 Large表示大约750.000个json数据的数组。每个json元素都包含几个字符串。

对这样的服务器进行编码以避免崩溃的好方法是什么? 我愿意接受所有提示:)

PS:我的客户端将是Unity(c#或js)。

2 个答案:

答案 0 :(得分:2)

Node默认使用HTTP的分块传输编码,并且使用流可以在一个请求中返回数PB的数据而不会出现任何问题,至少对服务器没有问题 - 让客户端解析该数据是另一个故事。

问题在于将大数据序列化为JSON,这通常是需要内存中所有数据的阻塞操作。但是可以使用流式JSON编码器。

例如,请参阅Big-Friendly JSON - 大型JSON数据集的异步流功能:

另见其他模块:

此外,您不需要发送一个大型JSON,您可以将其拆分为多个对象。而且您不需要使用JSON来序列化数据。您可以使用CSV,TSV或您的数据适合的任何其他内容。您没有告诉我们您的数据,因此很难向您提供具体建议。

答案 1 :(得分:1)

由于数据太大,您实际上是否一次想在客户端上使用它?如果不是另一个简单的选择是在多个请求上分页数据。

可以使用限制和跳过选项轻松查看mongo查询到查找请求。

您可以使用查询参数http://example.com/large_data?skip=5000&limit=1000.

传递它