gpt4 book ai didi

amazon-web-services - 获取 DynamoDB/AWS 生态系统中的热门帖子

转载 作者:行者123 更新时间:2023-12-02 02:42:34 26 4
gpt4 key购买 nike

我正在尝试构建我自己的社交网络/论坛应用程序,人们可以在其中添加和喜欢彼此的帖子。我使用 DynamoDB 作为我的数据库和一个表。对于帖子点赞功能,我将 Lambda 函数与 DynamoDB-Streams 结合使用,后者聚合了 like 属性。
目前我正在研究这些用户帖子的排名机制。有了这个,我想确保我的用户可以在那个时间点在论坛中列出有趣的帖子。为此,我阅读了 reddit 如何处理它的排名算法 page .我也read this关于我的 Stackoverflow 的问题,我没有一个好的答案。我的问题是,如何在 AWS 生态系统的帮助下解决这个问题(甚至可能仅使用 DynamoDB 和 Lambda 函数?)编辑:我的数据库架构如下所示:

Partitionkey                                     Sortkey             likes       ...
---------- -------- ------
forum#soccer 01.08.19 13:15
forum#baseball 22.08.19 20:11
post#soccer#Do you think FC Barcelona wins? 05.08.19 10:20 203
post#soccer#Which club is your favorite ? 05.08.19 10:20 2
like#Which club is your favorite ? John Wick
like#Which club is your favorite ? Walter White
...

每插入一个以 开头的项目喜欢# 一个 lambda 函数被触发并更新列喜欢的帖子条目。 我的目标是查询当前时间最流行的帖子。这应该可以通过可用信息(例如创建时间和帖子计数)来实现。目前我的查询只是返回最新的帖子

最佳答案

我将提供一个可能的解决方案,仅考虑 DynamoDB 和 Lambda(可能还有 AWS SQS)。如果不合适,我们可能会考虑使用其他解决方案作为 Amazon ElastiCache。

算法:

  • 您的 DynamoBD 表将包含一个名为 trending#posts 的带有分区键 ( NOTE 1 ) 的项目。 , 仅 trending (这取决于您)并将关键字排序为日期或帖子类型(或您想要排序的任何内容。您可能想要分析随时间的趋势 - 使用排序关键字作为日期 - 或按帖子类型过滤趋势)。或者,如果您不需要过滤器,您可以只使用一个值。
  • 帖子中的每个赞都会触发一个 Lambda 来处理热门帖子( NOTE 2 )。
  • 触发时,Lambda 将收到喜欢的帖子并执行:
  • 阅读全部 电话 保存在表格中的热门帖子。
  • 阅读这些帖子的点赞数和发布时间。
  • 执行当前 中的趋势得分电话 帖子,如果喜欢的帖子与这些帖子不同,也会出现在新帖子中。
  • 再次对帖子进行排序并保存 电话 在你的表中得分最高。


  • 注 1 :您不需要随着时间的推移获得确切的分数,只需要排名。我的意思是,如果你在上午 9 点保存趋势,你不需要在下午 1 点的正确趋势,只需要第一个、第二个的位置......当出现新的喜欢时,你只需要新的分数。

    注释 2 : 我说“可能还有 AWS SQS”,因为用户可能会同时喜欢帖子,而 Lambda 会并发执行,可能会出现一致性问题。使用 AWS SQS,每个点赞都会将事件推送到触发 Lambda 的 SQS。这样 Lambda 将不会同时执行。

    关于amazon-web-services - 获取 DynamoDB/AWS 生态系统中的热门帖子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58401018/

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