When I first started using appengine, my initial impression of
transactions is "what good is this?" because of the entity group
limitation.  But I've since found that single-entity transactions are
really useful for preventing exactly this issue.

So, if you are worried about conflicts, use a transaction.

One thing that helps in javaland is to adapt Python's programming
model of a transaction.  Implement your transactional behavior as an
inner class that you hand off to a method that will retry it as many
times as necessary.

Jeff

On Mon, Apr 4, 2011 at 1:34 AM, Ikai Lan (Google) <ika...@google.com> wrote:
> If the updates are that important, just use a transaction since it
> effectively does what Didier describes.
> Ikai Lan
> Developer Programs Engineer, Google App Engine
> Blog: http://googleappengine.blogspot.com
> Twitter: http://twitter.com/app_engine
> Reddit: http://www.reddit.com/r/appengine
>
>
> On Sun, Apr 3, 2011 at 5:10 AM, Peter Backx <peter.ba...@gmail.com> wrote:
>>
>> I have an application that accesses a user entity. This entity also
>> contains a number of user specific settings that the user can update. Some
>> of those settings are updated by different servlets in parallel (for
>> instance uploading a profile picture to the blobstore)
>>
>> I'm having some serious issues keeping everything in sync. If I'm not
>> careful, I can easily overwrite updates that have been done in another
>> thread.
>>
>> I have the feeling this is a recurring issue for many GAE application, so
>> I'm looking for some best practices of how to deal with it.
>>
>> In the relational world, often a "version" column is added. Before
>> updating a row, the version number in the database is compared to the one in
>> memory. I suppose I can implement something like that on GAE too, but I was
>> wondering whether there are better/other options available in the NoSQL
>> world.
>>
>>
>> Regards,
>> Peter
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "Google App Engine for Java" group.
>> To post to this group, send email to
>> google-appengine-java@googlegroups.com.
>> To unsubscribe from this group, send email to
>> google-appengine-java+unsubscr...@googlegroups.com.
>> For more options, visit this group at
>> http://groups.google.com/group/google-appengine-java?hl=en.
>
> --
> You received this message because you are subscribed to the Google Groups
> "Google App Engine for Java" group.
> To post to this group, send email to google-appengine-java@googlegroups.com.
> To unsubscribe from this group, send email to
> google-appengine-java+unsubscr...@googlegroups.com.
> For more options, visit this group at
> http://groups.google.com/group/google-appengine-java?hl=en.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine for Java" group.
To post to this group, send email to google-appengine-java@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.

Reply via email to