【问题标题】:Mongodb natural sort on non-capped collections, how wrong is it?Mongodb自然排序对非封顶集合,错在哪里?
【发布时间】:2011-09-17 15:58:54
【问题描述】:

mongo 文档解释说自然排序不能保证在无上限的集合中工作

http://www.mongodb.org/display/DOCS/Sorting+and+Natural+Order

但它有多大的错误?对于非关键用例,0.1% 的误差是完全可以的,尤其是在性能/尺寸节省的情况下。

谢谢。

【问题讨论】:

  • 用例是什么?宇宙飞船的日志记录或关键任务轨迹计算(在后一种情况下,即使您的计算速度很快,0.1% 实际上也会让您错过目的地)
  • @Matt,显然这不是关键任务......

标签: mongodb


【解决方案1】:

对无上限的集合使用 $natural 排序(顺序)没有任何问题。

$natural 的含义在一个有上限的集合和一个普通的集合(可能会发生更新/删除)上是截然不同的。对于定期收集,文档的顺序可能会随着时间而改变。

如果您想按插入顺序返回文档,那么 $natural 索引(不是真正的索引)除了上限集合之外没有任何用处。这是因为只有上限集合要求不能在集合中删除或移动任何文档。

【讨论】:

  • 你知道是什么导致了自然顺序的变化吗?
  • 正如我所说,自然顺序不是自然的,而是磁盘上的顺序。例如,如果您从集合中删除一个文档,则该漏洞可能会被一个新文档填补。
  • 另一个例子是复制:当副本集中的辅助节点进行初始同步时,它可能以与主节点 100% 不同的顺序将数据写入磁盘。
【解决方案2】:

如前所述和记录:您没有任何保证,因此无法给出数字。

【讨论】:

  • 我不需要保证,如果有某种方法可以判断订单何时会被搞砸,那么我可能能够找出可能的“典型”错误率,至少对于一个特定的用例
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-29
  • 1970-01-01
相关资源
最近更新 更多