You're on the right track.
class User(db.Model):
uid = db.IntegerProperty()
score = db.IntegerProperty()
friends = db.ListProperty(int)
1. Global high score.
select * from User order by score desc
2. Friend's high score
select * from User where friends = <user id here> order by score desc
This works if you have an index on friends and score (desc). And because the
uid of the user in question will be in the list of "friends" of all his
friends, so basically the condition of friends = uid will limit the result
to the friends of that user. The only missing component here is that the
user himself won't be in the list. You can get around that by either adding
the user id to the friends list (i.e. a user is a friend of himself) or by
getting the results for the friends and then inserting the score of the
user programmatically.
Waleed
On Sun, Apr 11, 2010 at 3:01 AM, Herbert <[email protected]> wrote:
> hi all,
>
> suppose i have a network of 100k users, each of them have 100 friends.
> they're all playing some games and have scores , i want to do two
> rankings: 1. global ranking, 2. ranking of friends. how am i going to
> design my datastore for this?
>
> can i do something like this?
>
> class User(db.Model):
> uid = db.IntegerProperty()
> score = db.IntegerProperty()
> friends = db.ListProperty(int)
>
> since we don't have join, i'm thining of putting ids of friends in a
> listProperty like above, learning from a GAE presentation that
> listproperty gets inefficient at (or limited to) 1k entries, which i
> think it's more than enough for my app.
>
> i think it's question of best practices for designing entities for GAE
> without JOIN, yet i couldn't seem to find a discussion that nails what
> i'm looking for. would be grateful if anyone could share some
> thoughts.
>
> the appengine's been great! thanks all GAE team!
>
> Herbert
>
> --
> You received this message because you are subscribed to the Google Groups
> "Google App Engine" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected]<google-appengine%[email protected]>
> .
> For more options, visit this group at
> http://groups.google.com/group/google-appengine?hl=en.
>
>
--
You received this message because you are subscribed to the Google Groups
"Google App Engine" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/google-appengine?hl=en.