Achieving 100% consitency

Lukas Schulze lspcity at gmail.com
Fri Aug 26 15:17:38 EDT 2011


I'm doing some simple tests with Riak and tried to build something like an
index.
Therefore I created new buckets for some attributes like "name", "street"
and "city".
One entry in the index-bucket "name" is for example "Mueller" and the value
contains all user ids, formatted as an JSON string: "{id:[1,5,8,13,2,7]}"
The java objects are saved as JSON strings in a separate bucket "users", the
keys in this bucket are the user-ids, the values are the JSON strings.

If I add 200 users via Java and the RiakPBC client every loop I fetch the
index, add the new user id and store it again in Riak.
But java is too fast, so I receive an old version of the bucket.

Because I've only one node I set the n-value to 1, r = 1, w = 1 and dw = 1.
But I have to wait nearly 2 seconds to be mostly sure to get the correct
response. (the computer isn't an high-end machine ;-) )

Is it possible to be sure that the data will be saved permanently and I can
continue adding users?
Are there any caching methods I can configure?
Can I set the default n-value to 1 so that every newly created bucket will
have this value?
Does Riak have any kind of indexes or is it possible to implement it a
better way?

In my first version I saved all users in one bucket and iterated over all of
them to find the correct one. But for every single request from the Java
Service to Riak it took nearly 200ms. For a huge amount of entries (10,000)
this isn't practible. Therefore I tried to implement my own indexes.

The main focus of my question is getting rid of the inconsistent reads.

Thank you.

Best Regards
Lukas
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.basho.com/pipermail/riak-users_lists.basho.com/attachments/20110826/c998e989/attachment.html>


More information about the riak-users mailing list