Google App Engine上的社交投票

时间:2017-07-26 01:39:39

标签: google-app-engine social datastore voting-system

我有一个应用程序,用户可以在其中投票或下载博客文章。为了实现投票功能,我创建了以下模型......

 class Upvote(ndb.Model):
   user_id = ndb.IntegerProperty(required=True)
   blog_id = ndb.IntegerProperty(required=True)

当用户赞成帖子时,我会通过以下方式保存:

Upvote(user_id=User.key.id(), blog_id=Blog.key.id()).put()

并查看用户是否已经对我的查询进行了投票:

Upvote.query(Upvote.user_id=User.key.id(), Upvote.blog_id=Blog.key.id())

这是实施此类投票系统的最有效方式吗?我想确保Upvote模型似乎变得非常大。当然,我现在过早地进行了优化,但在数百万用户的理论情况下,我想要最有效/最便宜的方法。

1 个答案:

答案 0 :(得分:1)

好吧,对于我只调用Vote的模型,我会添加一个名为BooleanProperty的{​​{1}},如果它是一个upvote并设置为upvoteTrue,如果它是一个downvote。

否则你必须重复这个故事以获得downvotes并且没有一些额外的逻辑,你将为用户留出一个空间让同一个帖子投了2票,一个上升,一个下来,恕我直言不会很有道理。

是的,可能会有很多False个实体,但它们很小并且与其他实体无关,因此可以很好地扩展。