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.
