If you get by key and set by key, there will be no consistency issues. HR
gets by key are always performed in a transaction. Within a transaction, we
read the journaled write entry from a majority of data centers to determine
which data is the most recent version. Your scenario will not exhibit
consistency issues if you do things by key. If you do a query on property
values, you will need to set a query ancestor to have the same consistency
guarantee.

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 Fri, Feb 25, 2011 at 11:43 AM, Denis Volokhovskiy <
[email protected]> wrote:

> Hello,
>
> High Replication DS solves the issue of latency
> between requested get/put/delete operation and its actual completion,
>
> but it still has limitations on how many put requests
> you can do per second - currently only 1 guaranteed write per second
> per entity group.
>
> (here at the bottom :
> http://code.google.com/appengine/docs/python/datastore/hr/overview.html)
>
> any entity may be considered as single-item entity group, so this
> applied to
> series of puts to the same entity.
>
> As I understand from your example, particular user are supposed to
> write into the same entity instance
> several times - so this may be potentially 'Contention Error'
> I have encountered such situation on frequently updated entity groups
>
> May be you may consider several shards for Email entity?
> Then , you may examine update times and sum chunks in proper order
> (provided you have some field mtime =
> db.DateTimeProperty(auto_now=True))
>
> Or even better - collect some intermediate results in memcache
> instance
> and,say, every 1 or 2 seconds do actual write into datastore?
>
> Best regards,
> Den
>
>
>
> On Feb 25, 11:43 am, de Witte <[email protected]> wrote:
> > Hello,
> >
> > We are developing the following datastore for a big application.
> >
> > One table with 10.000.000 records.
> >
> > The application has at any given time 40.000 active users.
> > These users make frequently adjustments to these records.
> > In rare cases, more than one user writes to a single record.
> >
> > What happens if a specific user does four requests in a row to adjust a
> > single record.
> >
> > For example:
> >
> > Entity Email with property content;
> >
> > Request 1: get Email, add 'hello' to content, put Email.
> > Request 2: get Email, add ',how' to content, put Email.
> > Request 3: get Email, add ' are y' to content, put Email.
> > Request 4: get Email, add ' doing' to content, put Email.
> >
> > How can I ensure that the content property has the value 'hello, how are
> y
> > doing' after the fourth request?
> >
> > The entity group Email, has no parent.
> >
> > Is this scenario strongly consistent?
>
> --
> 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.
>
>

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