I chose to partition data between different users by adding a post-fix
to all entity names. So instead of having a "PhoneCall" entity, I
had "PhoneCall_r35wk", with the random sequence "r35wk" corresponding
to a particular user. There could be thousands of "PhoneCall_****"
entities, each with a different name. I figured this would be a good
architecture since user's data would be completely partitioned. Also, I
would eliminate an equality filter for each query (ie: "userId EQUALS
123456")




It turns out this architecture seems to conflict with another aspect of
App Engine that was seemingly unrelated. And thats the need for adding
custom indexes through the index.yaml file (or executing each query on
the dev server). For a while, I had no need for custom indexes, but
recently I had need to execute this query which seemed to require a
custom index:
Pseudo-code:
SELECT * FROM CallRecord_27sjakla
WHERE callerId IN ["703-678-9832", "540-892-2191"] // number is a String
ORDER BY startTime DESC" // startTime is a Long integer


This problem of needing to manually pre-define custom indexes for
entity names that are not pre-determined could be solved if there was a
way for the application to programmatically add to the index.yaml file
(I did not see documentation for this). However, even in this case, I
have concerns that the index.yaml file would grow to become very big
and cause problems with the application taking too long to initialize.


Is there another way that I should be handling this situation? Is there
are better way to add these custom indexes? Should I be partitioning
user data differently?

-- 
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