Yep, two buckets: one for users, one for users_by_id. Or, you could use secondary indexes, and not worry about keeping the ids in sync. http://basho.com/blog/technical/2011/09/14/Secondary-Indexes-in-Riak/

For ID generation, UUIDs will work, SHA1s will work, or you could use an ID generation service like Snowflake. https://github.com/twitter/snowflake

On 10/28/2011 11:09 AM, Justin Karneges wrote:
Hi,

I read that when setting a value I can choose a key name or let Riak come up
with a name for me.  The majority of examples in the docs seem to choose
names.  However, it seems like anytime you'd store "table"-ish data, you'd
want to avoid choosing names for your keys ("rows") and let Riak do it, right?

For example, suppose I want to store some user data, and I let users change
their usernames whenever they want.  Here's a natural first pass at a schema:

/users/{user_fixed_id}:
   data: user data

/users_by_name/{username}:
   data: empty
   link: /users/{user_fixed_id}

Here I have the real user data keyed by some fixed id, and then pointers to
those objects keyed by name.  If the user ever changes his name I delete the
old pointer and create a new one.

"users" is basically the table then, and I let Riak choose the ids.  I have to
put the index ("users_by_name") as a different bucket so that Riak ids don't
conflict with potential usernames.  Unless there is a way to control how Riak
chooses its ids (like choosing key name prefixes), I think you pretty much have
to split into a bucket right?

Alternatively, the client could generate the fixed value itself, allowing it to
use key name prefixes in the same bucket (e.g. "user_{user_fixed_id}" and
"username_{username}"}.  Generated ids would most certainly have to be UUIDs,
though it might be interesting to know if an auto-increment integer is
possible, if the integer is stored in Riak.

I'm just trying to get an idea of how people go about this.

Thanks,
Justin

_______________________________________________
riak-users mailing list
riak-users@lists.basho.com
http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com


_______________________________________________
riak-users mailing list
riak-users@lists.basho.com
http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com

Reply via email to