我有一个庞大的数据集,大约200MB的txt格式。我能够通过http调用将数据发送到Angular。
现在,我需要在本地进行小的编辑之后,将数据发送回去,这可以在每个“行”中完成(请参阅读取FASTA文件,这是文件格式)。
令我惊讶的是,它不能寄回,它太大了。我要保存到MongoDB。我注意到,如果我发送1%的通知,它就可以了。因此,我现在的解决方案是以较小的数据块发送数据。尽管如此,我在这里尝试了一些建议的方法,但是什么也没有。
我在这里找到了一个类似的问题:Angular 7处理大帖子http请求
我的问题是:为了接收数据,我们可以使用观察者;因此,以小卡盘接收数据。有没有明确的方法可以做到这一点,比如说一种方法,或者我可以输入整个数据集的东西,剩下的事情可以做到吗?
可能的提示:如果我可以发送1%,则可以将其分成1%的块,然后按顺序发送;但我需要确保Angular在上一个操作完成之前不会发送HTTP调用,否则,快速应用程序由于JavaScript内存问题而崩溃。
在这里看到此问题的第一个版本,所有内容均从此处开始:如何保持http调用一段时间?
我不确定这是否是一个未解决的问题,因为我没有提供代码。我仍在学习使用该平台。有时候我们从鸡身上拿了太多的金蛋!提前致谢!:)
讨论区
@zzfs明智地给了我一些见解,我会考虑的;尽管如此,我仍然愿意以代码为例进行示例;至少对我来说,从代码中学习变得容易。
@zzfs提到要考虑“差异”,只保存更改,这是我当前的方法。我坚持认为,我已经打开了这个赏金的理由是,如果可能的话,我希望拥有一个强大的系统,这意味着如果一个人添加过多的评论,差异将很小,并且系统可能崩溃;我认为发生这种情况的可能性很小,因为有些人不可能一次添加例如1.000-10.000条评论。
另一个问题是,我不知道我当前的上传数据集的方式是否最好,我是从Mongo和Express中的一个应用程序上传的,是本地保存的。
仅当例如下载zip之类的blob或将blob上传到服务器(例如youtube或dropbox上传)时,才将这样大的文件发送到&从客户端发送才有意义。所有其他用例通常都无需进行如此大的转移就可以处理...
您提到您只会执行“小修改”。这意味着您应该只寄出差额,而不是全部。您的问题太笼统了,所以我无法给您一个更清晰的答案,但是当您的大型文件是JSON或文本文件,并且用户更改了其中的内容时,您可以轻松地标记出更改的位置并将其发送更改后的实际有效负载。然后,您的服务器(运行Express?的节点)应该能够进行差异检查并将更改应用于200MB文件。
分块多个HTTP请求当然是受支持的,并且经常发生。当您确实要上传200MB的文件时,可以将其拆分并switchMap
用于顺序上传或forkJoin
并行请求。
但是随后您仍将在服务器上进行某种后处理(在最简单的情况下合并块),因此您的注意力应该放在实现上述diff-checker方法上。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句