Hi Ikan Lan, I have seen this on so many discussions here in the forums - "A best practice, however, is to keep entity groups as small as possible"
As far as I understand it, one Model class should not have too many records i.e. one table should not have many records Isn't this strange ? When we talk of GAE, we talk of scalability but if the best practice says to limit ther records to only a few in a Model class, what use is the scalability for ? If we store millions fo records (for eg- customer records) in one db.Model table, are you saying it would really impact the performance. Please correct me if I am wrong. I am unclear if my app can survive on GAE if its working with millions of records in one db.Model table ?? Thanks, Sodso On Oct 27, 11:27 pm, "Ikai Lan (Google)" <[email protected]> wrote: > 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.
