I'm pretty sure that the protocol buffer saves just the key.

However, I'm virtually certain that pickle will save both the instance
and the key if an reference property has been used.  And, if that
instance has used reference properties, their instances are also saved
by pickle.  I mention pickle because that's what memcache uses to
store instances.

It's an interesting choice - do you pickle instances as is, which
won't change their datetime now properties, but will save instances if
you've used the a reference property that names them.  Or, do you
memcache a protocol buffer, which will update datetime now properties
but won't save instances associated with reference properties.



On Feb 4, 10:27 pm, Nickolas Daskalou <[email protected]> wrote:
> Thanks Andy. Do you know what happens to a RefenceProperty that has already
> had the referenced entity "loaded" on the Model instance? Does the
> referenced entity also get saved in the ProtocolBuffer, or is only its key
> saved?
>
> On 5 February 2010 16:54, Andy Freeman <[email protected]> wrote:
>
>
>
> > Note that memcaching a protocol buffer has interesting consequences.
> > One is that the auto-now datetime properties are updated when the
> > protocol buffer is created.  This update is just on the protocol
> > buffer - it doesn't affect the datastore copy.
>
> >http://code.google.com/p/googleappengine/issues/detail?id=2402
>
> > On Feb 4, 8:11 am, Sylvain <[email protected]> wrote:
> > > I think the answer (and more) is here :
> >http://blog.notdot.net/2009/9/Efficient-model-memcaching
>
> > > On Feb 4, 10:43 am, Nickolas Daskalou <[email protected]> wrote:
>
> > > > Is it better/safer to store a Model instance into Memcache directly
> > (Method
> > > > 1 below), or should we convert it to a protocol buffer first, then
> > store it
> > > > (Method 2 below)?
>
> > > > Method 1:
>
> > > > memcache.set(cache_key, entity)
> > > > ...
> > > > entity = memcache.get(cache_key)
>
> > > > Method 2:
>
> > > > memcache.set(cache_key, db.model_to_protobuf(entity))
> > > > ...
> > > > entity = db.protobuf_to_model(memcache.get(cache_key))
>
> > > > I'm assuming Method 2 results in a smaller Memcache footprint, yes?
>
> > > > Nick- Hide quoted text -
>
> > > - Show quoted text -
>
> > --
> > 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.- Hide quoted text -
>
> - Show quoted text -

-- 
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