如何获得最受欢迎的帖子?

时间:2012-04-28 09:52:43

标签: android database

我正在创建一个应用程序,用户可以在其中发布帖子和其他用户可以喜欢和评论这些帖子。要实现此功能,我使用的表格如POSTS,LIKES,COMMENTS。(我使用parse.com数据库存储这些表)。

POSTS包含postId,content,userWhoMadeThePost,dateOfPosting等字段

LIKES包含filelds为id,postOnWhichLikeWasMade(POSTS的外键(postId)),userWhoLiked,dateofLike

评论有id,content,postOnWhichCommentWasMade(POSTS的外键(postId)),userWhoCommented,dateOfComment

我想要检索大多数热门帖子(最喜欢和评论的帖子)。

  1. 这样做的第一种方法是每当发布热门帖子的请求时,每次发帖都会计算帖子和喜欢,但如果这样做会非常耗时 有数百万的帖子。
  2. 这样做的另一种方法是在POSTS表中包含'noOfLikes'和'noOfComments',所以为了获得热门帖子,我只能访问post表,但这种方法的问题是每当用户对帖子发表评论然后我将不得不在POSTS表中增加'noOfComments'以及在COMMENTS表中创建一个条目,当成功地对POST表进行增量时以及在更改COMMENTS表连接之前问题就会丢失。在这种情况下,POST和COMMENTS表将显示错误的数据。
  3. 怎么做?

1 个答案:

答案 0 :(得分:2)

如果您可以控制数据库,这很简单,但使用Parse执行此操作意味着您有两个主要问题(其中一个已经提到过):

  1. 据我所知,Parse不允许在查询中进行分组。这意味着(使用您的架构)实际上不可能获得最喜欢/评论的帖子而不检索所有这些。这是因为您无法像在标准SQL查询中那样(使用JOIN和GROUP BY)动态添加具有喜欢/评论数量的新列。
  2. 您无法在一个事务中更新多个对象,因此用户可能会添加注释,但post对象中的注释数量不会更改。
  3. 据说我认为(至少如果你坚持使用解析)你必须将'noOfLikes'和'noOfComments'列添加到Post对象。它不仅为检索N个帖子提供了唯一可行的解​​决方案(没有获得所有这些帖子),但在我看来,实际的不一致风险相当低。您始终可以捕获网络(或其他)异常,并在本地临时存储更新请求,然后再重试。