Modeling a Friend relationship in GAE
I am working with GAE and have a user table. Now I want to model friend relationships between users. I am thinking of having 3 properties user1
, user2
and request_status
, but the problem is in querying to find a particular user's friends. Since GAE does not allow OR
filtering, I have to merge two queries. Clearly t开发者_高级运维hat is very inefficient. This is just one problem with my approach.
If someone could suggest a solution that lets me keep track of all friend requests as well as the friendship, then that would be very helpful.
Denormalization will let you more efficiently find a user's friends with a single query. Try storing another property users
(a db.ListProperty
) in your model which contains both user1
and user2
. Then you can simply execute a query like this to find a user's friends:
friendships = Friendship.all().filter('users =', user).fetch(...)
The advantage is that you only need a single query (faster). The disadvantage is that you will have a little extra space overhead to store the users
property and the (automatic) index on it.
精彩评论