首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取DynamoDB / AWS生态系统中的趋势帖子

获取DynamoDB / AWS生态系统中的趋势帖子
EN

Stack Overflow用户
提问于 2019-10-15 18:54:52
回答 1查看 446关注 0票数 4

我试图建立自己的社交网络/论坛应用程序,人们可以添加和喜欢对方的帖子。我使用DynamoDB作为我的数据库,只有一个表。对于post喜欢的功能,我使用Lambda函数与DynamoDB-Streams相结合,后者聚合了like属性。

目前,我正在为这些用户的帖子制定一个排名机制。有了这一点,我想确保我的用户可以在那个时候在论坛上列出有趣的帖子。

为此,我阅读了reddit如何在此页面上处理其排序算法。

我也阅读这篇文章的问题,堆叠溢出,这是接近我,没有一个好的答案,海事组织。

我的问题是,如何在AWS生态系统的帮助下解决这个问题(甚至仅仅使用DynamoDB和Lambda函数?)

编辑:

我的数据库模式如下所示:

代码语言:javascript
复制
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#开头的条目,就会触发lambdaf散,并在“喜欢”列上更新post条目。

我的目标是查询当前最时髦的帖子。这应该是可能的,与可用的信息,如创建时间和类似计数的帖子。目前,我的查询只是重放最新的帖子

EN

回答 1

Stack Overflow用户

发布于 2019-10-21 15:10:51

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

算法:

  1. 您的DynamoBD表将有一个分区键(NOTE 1)名为trending#posts的项,只有trending (由您决定)并将键排序为date或post类型(或任何您想排序的内容)。您可能需要分析随时间变化的趋势--使用排序键作为日期-或按post类型筛选趋势)。或者,如果您不需要筛选器,您可以只使用一个值。
  2. 每个类似的帖子都会触发一个Lambda,它将处理趋势帖子(,注2,)。
  3. 触发时,Lambda将收到喜欢的帖子并执行:
代码语言:javascript
复制
1. Read all **N** trending posts saved in your table.
2. Read number of likes and post time of those posts.
3. Perform the trending score in the current **N** posts and, if the liked post is different from those, in the new post too.
4. Sort again the posts and save the **N** with greatest score in your table.

注1:你不需要经过一段时间就能得到确切的分数,只需要排名。我的意思是,如果你在上午9点保存趋势,你不需要正确的趋势在下午1点,只是1,2的位置.你只需要新的分数,当一个新的相似发生。

备注2:我说“可能是AWS”,因为用户可能同时喜欢posts,而Lambda将同时执行,一致性问题可能会发生。对于AWS,每个类似的类都会将事件推送到SQS,后者触发Lambda。这样就不会同时执行Lambdas。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58401018

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档