0

我们有一个基于 Meteor 的系统,它基本上从第三方 REST API 轮询数据,循环检索到的数据,将每条记录插入或更新到 Meteor 集合。

但后来我突然想到:当从第三方数据中删除一个条目时会发生什么?

  • 有人会说插入/更新数据,然后遍历集合并找出哪个不在获取的数据中。没错,这是一种方法。

  • 另一种方法是清除集合,并从获取的数据中重写所有内容。

但是有数千个条目(目前有 1500 多条记录,可能会爆炸),两者似乎都非常慢且占用 CPU。

将数据从 JS 对象镜像到 Meteor/Mongo 集合的最佳过程是什么,这样从数据中删除的项目也会在集合中被删除?.

我认为代码在这里无关紧要,因为这可能适用于可以做类似壮举的其他语言。

4

1 回答 1

1

对于这种用法,请尝试使用更优化的东西。流星人正在努力使用流星作为一种副本 mongodb 设置来获取/设置数据。

目前有 Smart-Collections 使用 mongodb 的 oplog 来显着提高性能。它可以在一种适合所有场景的情况下工作,而无需针对具体情况进行优化。有一些基准可以证明这一点。

当 Meteor 1.0 出来时,我想他们会优化他们自己的 mongodb 驱动程序。

我认为这可能有助于成千上万的条目。如果您每秒更改数千个文档,则需要更接近 mongodb。Meteor 采用了很多缓存技术,但对于这个来说并不是最优的。我认为它每 5 秒轮询一次数据库以刷新其缓存。

智能收藏: http: //meteorhacks.com/introducing-smart-collections.html

请让我知道它是否有帮助我有兴趣知道它在这种情况下是否有用。

如果这不起作用,redis 也可能会有所帮助,因为所有内容都存储在内存中。不确定你的用例是什么,但如果你不需要持久性,redis 会比 mongo 挤出更多的性能。

于 2013-10-24T21:27:07.433 回答