We previously used Riak to do something similar, using the Ruby client Ripple, which provides the AciveModel interface. However, I really need to advise against this (like the others). Using a heavy ORM on top of the key / value store, you really lose the main advantage of speed.
Now we are moving to the Ripple pass and talking directly to Riak for many high-speed things (we also go to Erlang and use the PBC, not the HTTP interface, but that's another story: D), here's how we do it:
In our objects, we save the JSON document in a format compatible with Ripple. Although we have a requirement for this, since we are still using Ripple for some things, if I did it again without Ripple, I would probably use this format.
Riak , . , , , (, ).
Ripple ( Riak) , . "fen2nf4j9fecd" "" . "tom" user_index_by_username Riak "" . , , "tom".
. , , . Riak, , - , , Riak , bucket.
- , , . , " ".