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.

Reply via email to