Eric, That seems a very reasonable way to accomplish your query. If you use Riak Search, you could make a query like "author_id:bob AND tag:riak" and use that to feed your map-reduce query.
Sean Cribbs <[email protected]> Developer Advocate Basho Technologies, Inc. http://basho.com/ On Jan 11, 2011, at 7:34 PM, Eric Moritz wrote: > I'm still getting a feel for schema design in Riak. I need to fetch > blog entries using a compound index of (author, tag). > > This is what I've come up with. > > I have two buckets: > > /riak/entry/{id} > /riak/entries_by_author_and_tag/{author_id}.{tag} > > Assume the keys are url safe. > > Stored in entries_by_author_and_tag is a document that is just a JSON > document that is: > > { > author_id: string, > tag: string, > entry_keys: { > entry_key: {pub_dt: iso8601zulu_string}, > ... > } > } > > When I need to locate entries by a list of [(author_id, tag)] I map > the entries_by_author_and_tag documents to a list of {entry_key:"", > pub_dt:""} objects and then sort and limit them in the reduce phase. > > This works, but it feel really dirty to me. Is this just plain dumb? > It feels dumb. > > At first I figured I would just store the {author_id}.{tag} keys as a > author_tag_list in the entry and user Riak Search to fetch them but > because a user could follow hundreds or thousands of author/tag pairs, > the query string to fetch those entries would get too large. I assume > that looking up a 1000 entries_by_author_tag documents could be too > slow, I'll have to test that out. > > Thanks, > Eric. > > _______________________________________________ > riak-users mailing list > [email protected] > http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com _______________________________________________ riak-users mailing list [email protected] http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com
