A friend of mine found out how it could work: I have to delete the entry first and after storing it in the database I've to check the result. It's not the prettiest code I've written before, but without the while-loop it will work for nearly 97% of my tuples. With the while-loop everything works fine.
====================================== RiakObject riakIndex = new RiakObject(attrName, attrValue, indexString.getBytes()); riakIndex.setContentType("text/plain; charset=UTF-8"); try{ //have to be deleted because of cache (?) riakPBCClient.delete(attrName, attrValue); riakPBCClient.store(riakIndex); RiakObject[] fetched = riakPBCClient.fetch(attrName, attrValue); //check whether the entry is correctly stored in the database while(fetched.length == 0) {//try it until it works... riakPBCClient.store(riakIndex); fetched = riakPBCClient.fetch(attrName, attrValue); } //fetched entry doesn't match our stored one if(!riakIndex.getValue().equals(fetched[0].getValue())) { System.err.println("index match: failed -> " + attrName + "." + attrValue); } } ====================================== Best regards Lukas On Mon, Aug 29, 2011 at 9:20 AM, Lukas Schulze <i...@lukas-schulze.de>wrote: > Hi, > > thank you for your answers. > I know that Riak is designed for running on distributed servers. > But what's about adding lots of data and every tuple depends on another > one? > I thought that having only 1 node and disabling replications could solve my > problems of getting always the latest data from Riak. > > Is there another way to achieve 100% consistency in a riak database after a > very short time? > > Best regards > Lukas > > > > On Sat, Aug 27, 2011 at 5:43 PM, Ian Plosker <i...@basho.com> wrote: > >> Jonathan, >> >> Excuse me, that last message should have been addressed to you. >> >> Ian Plosker >> Developer Advocate >> Basho Technologies >> >> >> On Aug 27, 2011, at 11:39 AM, Ian Plosker wrote: >> >> Lukas, >> >> Yes, even for dev you'd be best advised to develop and test your >> application with the same or similar number of nodes and n, r, and w >> settings as you would in production. It's good practice to develop >> applications in a dev/test environment that mirrors the production >> environment as much as is reasonable/feasible. You can run a single node >> cluster, but note that this isn't a configuration you'll see in a >> production. >> >> Ian Plosker >> Developer Advocate >> Basho Technologies >> >> >> >> On Aug 27, 2011, at 5:33 AM, Jonathan Langevin wrote: >> >> Even for development-purposes only? Otherwise it seems data would be >> written n times to the same machine, which is needless in a dev environment >> with low storage specs...* >> >> <http://www.loomlearning.com/> >> Jonathan Langevin >> Systems Administrator >> Loom Inc. >> Wilmington, NC: (910) 241-0433 - jlange...@loomlearning.com - >> www.loomlearning.com - Skype: intel352 >> * >> >> >> On Fri, Aug 26, 2011 at 5:01 PM, Ian Plosker <i...@basho.com> wrote: >> >>> Lukas, >>> >>> Also, we don't advise that you run single node clusters. Riak is designed >>> to be used in clusters of at least 3 nodes. You can run a multi-node cluster >>> on a single development machine by downloading the Riak source, and running >>> "make devrel". Take a look at the Riak Fast Track ( >>> http://wiki.basho.com/The-Riak-Fast-Track.html) for more details. >>> >>> Ian Plosker >>> Developer Advocate >>> Basho Technologies >>> >>> On Aug 26, 2011, at 3:17 PM, Lukas Schulze wrote: >>> >>> 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 >>> _______________________________________________ >>> 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 >>> >>> >> >> _______________________________________________ >> 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 >> >> >
_______________________________________________ riak-users mailing list riak-users@lists.basho.com http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com