Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 对海量数据集进行排序_Node.js_Mongodb_Mongoose_Bigdata - Fatal编程技术网

Node.js 对海量数据集进行排序

Node.js 对海量数据集进行排序,node.js,mongodb,mongoose,bigdata,Node.js,Mongodb,Mongoose,Bigdata,我有一个庞大的数据集(超过3亿个文档)。它是一个用于存档数据和回滚功能的系统 回滚功能是一个游标,它遍历整个数据集,并对一些外部端点执行少量post请求,这是一段简单的代码 被迭代的数据需要按时间戳(文档中的文件)顺序发送。数据库关闭了一段时间,因此使用了备份数据库,但收到了手动存档的旧数据,之后所有数据都与主数据库合并 旧的数据破坏了秩序。我需要对这个数据集进行排序,但问题是大小;内存不足,无法立即执行此操作。如何实现这种排序 PS:文档不包含任何索引字段。没有索引就无法进行有效排序。如果在日

我有一个庞大的数据集(超过3亿个文档)。它是一个用于存档数据和回滚功能的系统

回滚功能是一个游标,它遍历整个数据集,并对一些外部端点执行少量post请求,这是一段简单的代码

被迭代的数据需要按时间戳(文档中的文件)顺序发送。数据库关闭了一段时间,因此使用了备份数据库,但收到了手动存档的旧数据,之后所有数据都与主数据库合并

旧的数据破坏了秩序。我需要对这个数据集进行排序,但问题是大小;内存不足,无法立即执行此操作。如何实现这种排序


PS:文档不包含任何索引字段。

没有索引就无法进行有效排序。如果在日期字段上有一个索引,那么事情就已经被排序了(从某种意义上说),因此按照所需的顺序进行事情是非常便宜的(在索引开销之后)

对所有没有索引的条目进行排序的唯一方法是获取要对每个文档进行排序的字段,并在内存中对它们进行排序

我看到的唯一好的选择是在日期字段上创建索引(目前为止是最好的选择),或者增加数据库上的RAM(昂贵且不可扩展)


注意:由于您有大量文档,因此即使您的索引也可能不具有超级可伸缩性——在这种情况下,您需要研究如何对数据库进行分片。

没有索引,也无法进行有效排序。如果在日期字段上有一个索引,那么事情就已经被排序了(从某种意义上说),因此按照所需的顺序进行事情是非常便宜的(在索引开销之后)

对所有没有索引的条目进行排序的唯一方法是获取要对每个文档进行排序的字段,并在内存中对它们进行排序

我看到的唯一好的选择是在日期字段上创建索引(目前为止是最好的选择),或者增加数据库上的RAM(昂贵且不可扩展)

注意:由于您有大量的文档,所以即使您的索引也可能不是超级可伸缩的——在这种情况下,您需要研究如何对数据库进行切分