Amazon web services 在DynamoDB/AWS生态系统中获取趋势帖子

Amazon web services 在DynamoDB/AWS生态系统中获取趋势帖子,amazon-web-services,amazon-ec2,aws-lambda,amazon-dynamodb,Amazon Web Services,Amazon Ec2,Aws Lambda,Amazon Dynamodb,我正在尝试建立自己的社交网络/论坛应用程序,人们可以在其中添加和喜欢彼此的帖子。我使用DynamoDB作为我的数据库,只有一个表。对于post liking功能,Im将Lambda函数与DynamoDB流结合使用,后者聚合like属性。 目前,我正在为这些用户帖子建立排名机制。有鉴于此,我想确保我的用户能够在该时间点在论坛中列出感兴趣的帖子。为此,我阅读了reddit如何处理其在这方面的排名算法。我还对Stackoverflow提出了问题,它离我的问题很近,我没有一个好的答案。我的问题是,如何在

我正在尝试建立自己的社交网络/论坛应用程序,人们可以在其中添加和喜欢彼此的帖子。我使用DynamoDB作为我的数据库,只有一个表。对于post liking功能,Im将Lambda函数与DynamoDB流结合使用,后者聚合like属性。

目前,我正在为这些用户帖子建立排名机制。有鉴于此,我想确保我的用户能够在该时间点在论坛中列出感兴趣的帖子。
为此,我阅读了reddit如何处理其在这方面的排名算法。
我还对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
...
每次插入以“like”开头的项目时,都会触发lambda函数,并更新like列上的帖子条目。
我的目标是查询当前最流行的帖子。这应该是可能的可用信息,如创建时间和类似的职位计数。目前,我的查询只是返回最新的帖子

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


算法:
  • 您的DynamoBD表将有一个名为
    趋势#posts
    的分区键(注1),只有
    趋势
    (由您决定)和排序键作为日期或帖子类型(或任何您想要排序的内容)。您可能希望分析随时间变化的趋势-使用排序键作为日期-或按帖子类型筛选趋势)。或者,如果不需要过滤器,可以只使用单个值

  • 帖子中的每个like将触发一个Lambda,该Lambda将处理趋势帖子(注2

  • 触发时,Lambda将收到类似的post并执行:

  • 阅读表中保存的所有趋势帖子

  • 阅读喜欢的数量和这些帖子的发布时间

  • 在当前N帖子中进行趋势评分,如果喜欢的帖子与新帖子不同,也在新帖子中进行趋势评分

  • 再次对帖子进行排序,并保存表中得分最高的N


  • 注1:你不需要随着时间的推移得到准确的分数,只需要排名。我的意思是,如果你在上午9点保存趋势图,你不需要在下午1点进行正确的趋势图,只需要第一、第二。。。当出现新的相似项时,您只需要新的分数


    注2:我说“可能还有AWS SQS”,因为用户可能同时喜欢帖子,而Lambda将同时执行,一致性问题可能会发生。在AWS SQS中,每个like都会将事件推送到SQS,从而触发Lambda。这样Lambdas就不会同时执行。

    您的实际问题是什么,我如何组织我的DDB表,以便查询最喜欢的帖子?如果是,请描述您当前的表格设计。您的表格结构会很有帮助,从描述中很难理解。@dmigo我编辑了我的问题。现在清楚了吗?谢谢你的支持help@AshamanKingpin我编辑了我的问题:)您希望查询返回什么?按喜欢的数量排序的帖子列表?职位名单会一直保留吗?最后一个小时?最后一天?注2听起来像是最佳实践方法,解耦并允许将来使用其他一些功能。