基于跳过(分页)的大量订阅的Meteor框架性能

时间:2014-09-14 14:31:50

标签: meteor

来自https://github.com/meteor/meteor/wiki/Oplog-Observe-Driver

  

从Meteor 0.7.2开始,我们使用OplogObserveDriver进行大多数查询。那里   是仍然使用PollingObserveDriver的几种类型的查询:

     

...

     
      
  • 指定跳过选项的查询
  •   
     

...

这意味着当你使用基于skip的分页时,总是当你需要分页机制时,如果你有很多用户可以导航的记录,它将使用那个旧的非常无效的民意调查 - -diff算法。

我仍然认为Meteor只适用于某些有限类型的应用程序,其中只有少数人需要协同工作并且实时更改传播。

如果我有堆栈溢出的东西,它会非常慢,因为每个客户端可能在不同的页面上,这意味着每次添加/删除新消息时重新运行1000个查询,因为流星无法读取mongo oplog对skip运算符的查询会受到影响。

我是对的?

1 个答案:

答案 0 :(得分:2)

有很多方法可以不基于跳过分页。因为你有一些排序顺序(否则你不会以任何有意义的方式分页),你可以说"根据这种排序顺序给我下面的50个大于这个值的项目"。

例如,如果你有这样的分页查询:

Posts.find({ author: "Nick" }, { sort: { timestamp: -1 }, limit: 50, skip: 200 })

你可以像skip这样重写它:

Posts.find({ author: "Nick", timestamp: { $gt: X } }, { sort: { timestamp: -1 }, limit: 50 })

其中X是上次发布的帖子的时间戳。