Hi everyone, I'm trying to build a (seemingly) relatively simple 'Gmail like' label functionality using the app engine and am concerned about making proper use of app engine specific characteristics as much as possible to avoid fan out issues and make the code scalable.
Here is the problem: I have a very large number of Learning Object entities LO each possessing a knowledge value K (between 0% and 100%). Each of these LO can be tagged with several tags T (a tag can contain a very large nbr of LO). For the moment this is exactly like gmail labels. The only difference is that each of these tags order their LO differently according to their importance Imp within each tag. So for instance, LO1 could be tagged with T1 and T2 and have importances Imp5 and Imp155 within each tag (an importance of 0 represents the most important learning object) Now the query I would like to make is the following: Give me a list of Learning objects tagged with T1 where K<30 and order these by tag importance Imp. 1/ So my first idea was simply to create a Tag entity with a List<Key> LO feature ordering each LO. By doing this, getting the LO in Imp order becomes easy (since LO are stored in order) but only getting those with a value of K<30 means I need to query each of these LO to find out if they have the appropriate K value. 2/ So then I thought of creating a List<String> tags feature in each LO entity, query for LO's with tag T1 and K<30 and then use the Tag entity to find the correct order. This seems cumbersome, and also, I'm assuming whenever a user needs to delete a Tag, this creates a fan out issue since each LO needs to be accessed to remove T1 from it's list right? What is the correct approach to use in this case? Any recomendations? I found a talk by Brett Slatkin covering these issues which helped but I'm still having problems getting my head around this problem. http://code.google.com/events/io/2009/sessions/BuildingScalableComplexApps.html I would really appreciate your input ! :-) Thanks in advance -- 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.
