gpt4 book ai didi

node.js - 在 Mongo 中实现对大量记录进行排序的最佳方法?

转载 作者:行者123 更新时间:2023-12-03 23:38:38 25 4
gpt4 key购买 nike

关闭。这个问题是opinion-based .它目前不接受答案。












想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题.

5 个月前关闭。




Improve this question




我正在这里制作一个应用程序,用户将能够发布和喜欢/不喜欢。在后端,我使用 Node 和 Mongoose。现在,假设我有大约 50 万个帖子(或者可能是数百万,只是为了理解)。那么,我如何获取热门帖子?排序需要大量时间,对吗?做这个的最好方式是什么?
让我进一步解释一下。假设,用户在类别“A”下发表了一篇文章。现在,为了获取该类别中的热门帖子,我必须首先找到该类别下列出的帖子。然后我需要排序。这将需要很长时间。
您对此有何建议?关于 Mongo 是否适合此用例的任何建议?
我有两件事要处理。

  • 必须在合理的时间内获取结果。
  • 数据库必须容纳大量数据。

  • 我也研究了 Cassandra 和 Elasticsearch。对于给定的上下文,您认为这些会提供更好的解决方案吗?

    最佳答案

    老实说,这更像是一个系统设计问题。即使使用 Elasticsearch ,您也必须根据某些元素正确标记分析器,因此它不应该适用于所有内容,您必须以这种方式定义它。
    关于数据库,MongoDB,你能做的最好的事情就是有索引来帮助排序,因为如果没有,那么系统将不得不在 WiredTiger 缓存(WiredTiger = 存储引擎)中获取这些值,然后在内存中对它们进行排序,想象一下会导致的讽刺:D
    大多数公司对这样的事情保持更精细的控制,基于预期,大多数事情都是预编译的,基于标签,例如在 Twitter 中。在它运行一次之后,您不需要再次对整个事情进行排序。
    例如,我已经对字段 A 上的数据集进行了排序,我是否需要为新请求再次对所有数据集进行排序?否:只需调整新条目。此调整将取决于您要向用户显示的内容。
    总而言之,这是一个需要解决的有趣问题,但在很大程度上取决于用例。确切的访问模式。话虽如此,ElasticSearch 听起来是一个不错的选择,但是……它也有其局限性。专注于确切的访问模式,就像我已经提到的那样。
    按照 OP 的要求进行编辑。
    那么,我如何获取热门帖子?
    这并不完全取决于对您的结果进行排序,这更取决于比率更重要的主题的爆炸性。
    查看这篇文章 here通过吉拉德。
    想想你在那里检查标签和单词的比率,你会为此保持一个基于比率的计数。
    类似地,对于您的类别,基于算法将这部分与仅查询所有帖子隔离开来。
    亚马逊不会针对它的所有数据集对某个类别的产品进行即时排名,是吗?想想吧。
    预先排列内容并基于新添加的内容,保持该部分动态并合并它们。
    例如对于类别 x => 我根据我的算法准备了前 500 名,现在对于今天进来的新数据,我使用算法来获得相对排名,然后将前 500 名与今天的排名内容合并并显示结果。

    关于node.js - 在 Mongo 中实现对大量记录进行排序的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67554699/

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