gpt4 book ai didi

mongodb - Mongo TTL 与 Capped 集合的效率对比

转载 作者:可可西里 更新时间:2023-11-01 09:57:50 24 4
gpt4 key购买 nike

我正在向一个集合中插入数据以存储用户历史记录(大约 100 条/秒),并使用聚合框架查询最近一小时的数据(每分钟一次)

为了使我的收藏保持最佳状态,我正在考虑两种可能的选择:

  1. 在创建日期创建一个带有 TTL 索引的标准集合
  2. 做一个capped collection,查询最近一小时的数据。

哪种解决方案更有效?即对 mongo 框的要求较低——在 I/O、内存使用、CPU 等方面(我目前有 1 个主节点和 1 个辅助节点,还有一些隐藏节点。以防万一)

(我可以在我的上限集合上添加一点缓冲区以平均存储 3-4 小时的数据,如果用户在某些时候变得非常忙碌而无法获得完整的数据小时)

最佳答案

使用上限集合会更有效率。上限集合通过不允许删除文档或以增加其大小的方式更新它们来保留记录的顺序,因此它始终可以附加到集合的当前末尾。这使得插入比标准集合更简单、更高效。

TTL 索引需要为 TTL 字段维护一个额外的索引,该索引需要在每次插入时更新,这会进一步降低插入速度(当您还要在使用上限集合时的时间戳)。此外,TTL 由定期运行并占用性能的后台作业强制执行。该工作是低优先级的,当有更多高优先级任务要做时,MongoDB 允许延迟它。这意味着您不能依赖准确执行的 TTL。因此,当时间间隔的精确度很重要时,即使您设置了 TTL,也必须在查询中包含时间间隔。

上限集合的一大缺点是很难预测它们真正需要多大。如果您的应用程序扩展并且您收到比预期更多或更大的文档,您将开始丢失数据。通常,您应该只在过早丢失旧文档不是什么大问题的情况下使用上限集合。

关于mongodb - Mongo TTL 与 Capped 集合的效率对比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34181516/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com