Generally speaking: no. Entity groups will guarantee a stronger chance of data locality, but this should not affect index traversal or batch reads.
A best practice, however, is to keep entity groups as small as possible. There aren't many compelling reasons to not use root entities if you don't need transactions, as working with root entities is generally simpler. -- 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 Tue, Oct 26, 2010 at 3:26 PM, djidjadji <[email protected]> wrote: > Parent and child objects are stored in the same Bigtable node. This is > done for the transactions. A transaction works on a single > entity-group. > If you perform a query you use an index to find the objects needed. At > this point there is no performance penalty for parent or child objects > that match the query. The query results in a number of keys of objects > that need to be retrieved. The best query responds time is when the > objects > to fetch are stored in as many Bigtable nodes as possible (parallel fetch). > > Why do you need so many child objects? > Can you implement it with adding a Parent Reference Property to the > child object and thus remove the need to store the entity group all in > one Bigtable node? > > The parent-child objects are needed > 1) if you need transactions on them > or > 2) if you want to extract the parent key given a child key > Perform a keys_only query on child objects and from these keys get > the set of parent keys of objects that you need to fetch complete. > Brett Slatkin uses this technique in a number of Google IO talks, > the child object has a ListProperty that is used in the keys_only > query. > > Most other applications can be implemented without the explicit parent > object. > > 2010/10/26 Charles <[email protected]>: > > Hi all, > > > > I'm wondering, since the datastore is hierarchical, does the number of > > children an entity has affect the performance on querying on the parents > > themselves? For example, if I have a set of parents, say... > > > > Jane > > Margaret > > Graham > > Arthur > > > > ...and I have a set of children associated with those parents... > > > > Jane > > -Sam > > -Robert > > Margaret > > -Lisa > > Graham > > Arthur > > -Rowen > > -Jerry > > > > ...will the number of children for each parent affect the performance of > > querying the parents themselves? For instance, if I wanted to select all > of > > the parents (SELECT * FROM parents), that would be easy with the data > > above. But, since the datastore is hierarchical, does the performance > get > > hampered if say the parents have many thousands or even millions of > > children? Say, like... > > > > Jane > > -Sam > > -Robert > > ...1 million more > > Margaret > > ... > > > > If so, I'm just wondering if it would make more sense to make the > children > > root entities too, so as not to affect the performance of querying on the > > parents. Anyways, hope I've explained my question well enough. > > > > Thanks in advance! > > > > > > Charles > > > > -- > > 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]<google-appengine%[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]<google-appengine%[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.
