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 google-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.

Reply via email to