Hi Mos, The short answer is that you should use entity groups if and only if you need transactionality for the entities in that group. If you don't, put them in separate entity groups. If you have a firm requirement for transactionality but you can't put the relevant entities in the same group (for instance because that would put everything in one group, or you need a high write rate per-group), you will need to employ a different approach, such as redesigning your model or using global transactions.
-Nick Johnson On Sun, Oct 23, 2011 at 6:16 AM, Mos <[email protected]> wrote: > I'm still in a design phase of a new App Engine application and I'm > wondering > if it makes sense to go *without* using any Entity Groups. > > My application's data-model is similar to a discussion-forum. > It has Postings, Comments, Users, Ratings and so on. If the application > becomes successful, there will be significant write operations on > Postings, Comments and Ratings. > > If I would model hierarchical *Entity-Groups* (e.g. starting from a > User-Root), I would > have the following *advantages*: > +1: Transactional behavior during writes > +2: Queries are strongly consistent > +3: For hierachical data-structures, fast ancestor queries are available > > But *Entity-Groups* introduce also some *disadvantages*: > -1: Limitation in write throughput (in worst case just 1 write per > second on an entity group) > -2: Inflexible and a more complex data-model, which makes it harder to > add or re-factor relationships (forces "owned-relations" all over your > application) > > *I think all together the disadvantages outweigh the advantages for a > typical web application like mine.* > The limitation for writes seems to be a significant disadvantage. Ok, you > can work around this with sharding but this makes > you data-model even more complex. > And an hierarchical data-model which is technically motivated and not > related to your domain seems to be a bad idea. > > On the other hand transactions during write operations are often not > necessary ("the last one wins"). > Hierarchical searches are not needed most of the time. > > The only issue I'm not sure about is the advantage of "Queries are > strongly consistent "? > What does it mean if they are not strongly consistent? > Is this just an issue for a small time frame when new data are written? > Once the data is > stored and replicated this shouldn't be an issue at all, or? > > I'm happy about feedback! > > Thanks > Mos > > -- > 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. > -- Nick Johnson, Developer Programs Engineer, App Engine -- 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.
