【发布时间】:2015-08-30 10:25:03
【问题描述】:
我有大量数据,因此我无法将所有数据都保存在内存中,并且总是出现内存不足错误;显然,其中一种解决方案是在 Node.JS 中使用流式传输;但是流式传输是不可能的(据我所知),排序是我应用于数据的功能之一;是否有任何算法可能是分而治之的算法,我可以将其用于流式传输和排序的组合(这是我应用于数据的功能之一?)
【问题讨论】:
-
@KirillSlatin 这是一个对象数组!正如我所说,我不能将所有数据保存在内存中并进行排序(至少我会说基于朴素算法),您需要将所有数据都保存在内存中!是否使用分页无关紧要;换句话说,排序需要所有数据,并且您不能仅对部分数据应用排序(这是我的问题,这可能吗?是否有任何算法可以通过使用流式传输或分页结果对部分数据应用排序?)
-
你从哪里得到这么多的数据?数据库?我猜你并不真正理解分页的概念......对服务器的请求应该包含排序字段,它们的顺序,页码和页面大小。服务器排序并返回一小部分结果
-
如果您的数据库不支持排序并且服务器无法读取所有数据(这显然是排序所必需的),那么您唯一能做的就是 1. 购买更大的服务器(如果您的数据库增长)和 2. 切换到支持排序查询的数据库
-
数据从何而来,又将流向何方? dedicated sorting algorithms 用于内存中无法容纳的数据。
-
@Pasargad:请更具体地了解您正在使用的数据库。它到底不支持什么?如果大量排序数据对您的应用程序至关重要,这听起来像是您选择了错误的数据库引擎。这不应该在应用层处理。
标签: node.js algorithm sorting amazon-dynamodb divide-and-conquer