There are no "tables" on App Engine, only Kinds which are arbitrary collections of properties. In fact, all applications' entities are stored in a single bigtable "table."
Entity groups refers to a logical group of entities that are physically stored together; this allows that group of entities to be updated in a transaction. If you make entity groups with lots and lots of entities in them your data can not be sharded across bigtable tablets. That means if you are try to write 5 entities in that group the writes are done serially. Fetches will also be less efficient for the same reasons. You can read all about these topics: http://code.google.com/appengine/articles/datastore/overview.html Robert On Wed, Oct 27, 2010 at 21:40, sodso <[email protected]> wrote: > 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. > > -- 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.
