to play this game on GAE: - consider de-normalizing the data and storing a list of activities on each user record. - get the data from table X, then do a query on table Y like: "db(db.Y.id.belongs(keys).select()" where keys is a list of IDs from the first query. remember that GAE limits belongs to 30 items in the list, so you might have to run the query several times and merge the results.
i've learned the hard way - GAE (and probably other nosql DB's) run best with a de-normalized schema. cfh