Thank you for the explanation, Matija. Yes, we need to perform one transaction per entity group if reads need to be strongly consistent, which can have a huge performance price if you have are reading multiple entity groups in a single request.
-- Ikai Lan Developer Programs Engineer, Google App Engine Blogger: http://googleappengine.blogspot.com Reddit: http://www.reddit.com/r/appengine Twitter: http://twitter.com/app_engine On Fri, Jan 21, 2011 at 1:34 AM, Matija <matija.jerko...@gmail.com> wrote: > Insert or update can't be strong or eventual consistent. Consistency is > related to read operation and if every subsequent read will get same last > inserted/updated values immediately (strong consistency read) > or eventually (eventual consistency read). > > An entity insert with a parent key won't help you with your application > problem. It will simply insert entity to same entity group tree. But they > have enabled us in high replication datastore to read entities (within same > entity group <= parent key usage) with key (or in ancestor query) in strong > consistent way and they achieved that trough some behind paxos, consensus > and transactional log 'magic' that you can't replicate in any way to get > strong standard multiple entity groups query read. > > Let's say you insert two entities with same parent key and now they are in > same entity group. If you now query these entities, only with some standard > filters, you can't read them in strong consistent way because, query planer > uses index table and they can be different across different datacenter. But > if you know parent key (parent entity, etc), you can query these entities > with ancestor query and read them in strong consistent way. Reason that you > can use ancestor query is because this kind of query is almost same as > get_by_key query that can use transactional log magic. > > Problem with entity groups are that they have low update per second > performance and you can very easily get contention problems if you try to > build large ancestor trees. > > Matija > > -- > You received this message because you are subscribed to the Google Groups > "Google App Engine" group. > To post to this group, send email to google-appengine@googlegroups.com. > To unsubscribe from this group, send email to > google-appengine+unsubscr...@googlegroups.com<google-appengine%2bunsubscr...@googlegroups.com> > . > 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 google-appengine@googlegroups.com. To unsubscribe from this group, send email to google-appengine+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en.