2017-07-26 47 views
0

我有一個應用程序,用戶可以在其中投票或向下投票。爲了實現投票功能,我創建了下面的模型......Google App Engine上的社交投票

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

當一個用戶upvotes後,我通過保存:

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

而且以查看是否有用戶已經upvoted我查詢:

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

這是實現這種投票系統最有效的方法嗎?我想確保看起來Upvote模型可以變得非常大。當然我現在過早優化,但與數百萬用戶的理論情況我想最有效的/最廉價的方法。

回答

1

那麼,對於一個我稱之爲模型只是Vote,我想補充一個BooleanProperty稱爲upvote,設置爲True如果它是一個給予好評,並設置爲False,如果它是一個downvote。

否則你不得不重複故事爲downvotes和沒有一些額外的邏輯,你會留出空間讓用戶投2票,一上一下,爲同一職位,恕我直言,恕不另立很有道理。

是的,可能有許多Vote實體,但它們規模小,沒有涉及到每個-等,縮放不錯。