key name conventions

Aphyr aphyr at aphyr.com
Fri Oct 28 14:22:59 EDT 2011


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 at lists.basho.com
> http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com
>



More information about the riak-users mailing list