ok.. in my case i have something like this..

class ForumGroup(db.Model):
    name = db.StringProperty()
    description = db.StringProperty(multiline=True)
    created_at = db.DateTimeProperty(auto_now_add=True)

class Forum(db.Model):
    name = db.StringProperty()
    description = db.StringProperty(multiline=True)
    group = db.ReferenceProperty(ForumGroup,collection_name='forums')
    created_at = db.DateTimeProperty(auto_now_add=True)

Forum has a reference property group that references to ForumGroup so
now ForumGroup object has a 'forums' property that is a Query
object..

i thought that when i got a ForumGroup doing get_by_id()
simultaneously GAE made the query to get 'forums' object and so i got
so many read quota..

then i have other DB objects referenced so i can do

group = ForumGroup().get_by_id(x)

last_post_on_forum = group.forum.threads.posts.fetch(10)



On 27 ene, 08:01, Robert Kluin <[email protected]> wrote:
> Hi,
>   When you access those reference properties they are fetched by key.
> Unfortunately this will happen serially, which will significantly
> impact your performance.  You're not going to avoid the read
> operations without changing your schema, but you can at least improve
> the performance by doing a batch fetch on all those referenced
> entities.  One way to do this would look something like:
>
>   class SomeThing(db.Model):
>     ref_prop = db.ReferenceProperty()
>
>     @property
>     def ref_prop_key(self):
>       return SomeThing.ref_prop.get_value_for_datastore(self)
>
>   thing = db.get(some_thing_key)
>   other, entities = db.get([thing.ref_prop_key, thing.another_ref_prop_key])
>
>   This trick is to then *never* directly touch thing.ref_prop because
> it will fetch the entity again.
>
> Robert
>
>
>
>
>
>
>
> On Thu, Jan 26, 2012 at 07:30, ikalbeniz <[email protected]> wrote:
> > Hi,
>
> > I have developed a forum where i have structured the database using
> > ReferenceProperties to link forum groups, forums, threads, posts and
> > users.. so a group (db.model object) has N forums that have N threads
> > with N posts..
>
> > I have a problem with the Datastore Read Operations Quota and i think
> > than can be because when i get a Group object GAE gives me all tree
> > structure so with one get_by_id i have lots of Datastore Read
> > Operations..
>
> > Can someone confirm that this is ok? How an i avoid GAE do this so if
> > i only want to show Group properties values so i dont need to acces
> > all forums belongs to the group..
>
> > thanks.
>
> > --
> > 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 
> > athttp://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.

Reply via email to