【问题标题】:Sending large data sets. Best approach发送大型数据集。最佳方法
【发布时间】:2016-10-20 07:00:23
【问题描述】:
我使用 Hapi/React/Sequelize/MySQL 堆栈
我有一个客户。根据请求,服务器可能会发送 1 个或最多 500k 个结果。这些结果是一个包含对象的数组(每个对象可能有 15 个属性)。发送大列表不是一种选择,因为它需要很多时间来记忆。我还需要对结果集进行一些计算。
所以我想以块的形式发送数据,每个可能 10k(3 秒)。
我可以想到两种方法。
方法一(长轮询):
- 我在服务器上发出初始请求,服务器只返回产品的 ID。
- 例如,我得到 100k 个 ID。客户端以 10k 块发送 AJAX 请求。一旦达到 100k,就会向客户端显示结果。
方法二(套接字):
- 客户端发出请求。套接字已打开。
- 服务器通过套接字发送 10k 的块。
套接字可以处理那么多流量吗? 10k 大小约为 300kb。
还有其他方法吗?
【问题讨论】:
标签:
javascript
mysql
socket.io
hapijs
【解决方案1】:
我建议对每 10k 或更低的块进行并行请求,然后在计算后显示结果,而其余的仍会加载,因为它会附加主显示等等:)
EDIT: pseudocode
listOfProductsIDArray = get id of products;
itemsPerLoad = 10;
mainDisplay = array;
for loop (index = listOfProductsIDArray/itemsPerLoad ){
send AJAX request with index;
if(AJAXrequest is success)
procees results
mainDisplay appends results from mysql
}
mysql side::
select * from products limit AJAXindex,itemsPerload
return results