I'm actually testing with an object that has only one link as that's my use-case.
In testing, 2 separate gets is way faster than using a map-reduce link-walk, which is disappointing :( I'm also testing on a one node cluster, and my bucket has a N/R/W=1. I was thinking that the reduction in network hops would outweigh the map reduce overhead, but apparently that's not the case. Simple get (one value) : 0.000741 Multiget linkwalk (get one object, then link walk in php) : 0.001567 Linkwalk (map reduce): 0.041994 The map phase does not significantly change anything as far as performance. In case it matters, I'm testing against the latest riak code on github. Cheers, Mark Steele Bering Media Inc. On Tue, Aug 30, 2011 at 3:00 PM, Jonathan Langevin < jlange...@loomlearning.com> wrote: > Good catch Kev. > > Mark, If you run the same operation with map removed, what is the > performance at that point?* > > <http://www.loomlearning.com/> > Jonathan Langevin > Systems Administrator > Loom Inc. > Wilmington, NC: (910) 241-0433 - jlange...@loomlearning.com - > www.loomlearning.com - Skype: intel352 > * > > > > On Tue, Aug 30, 2011 at 2:45 PM, Kev Burns <kevburn...@gmail.com> wrote: > >> Mark, >> >> That's not just a link walk, you're also performing a map operation there. >> >> $client->add($bucketname, 'linkkey1')-> >> link()-> >> map(array("riak_kv_mapreduce", "map_object_value")) -> >> run(); >> >> >> If the expected number of returned objects is small, performing the map >> phase in PHP may be faster. >> >> - Kev >> c: +001 (650) 521-7791 >> >> >> On Tue, Aug 30, 2011 at 7:31 AM, Mark Steele <mste...@beringmedia.com>wrote: >> >>> Hi folks, >>> >>> Just want to know if I'm doing something obviously dumb here. >>> >>> First the (PHP) code (Sorry of the API is different from the official >>> API, we're using a heavily modified version): >>> >>> <snip> >>> $obj1 = $bucket->newObject('linkkey1', array('link1')); >>> $obj2 = $bucket->newObject('linkkey2', 'dataforlinkkey2'); >>> $obj1->addLink($obj2); >>> $obj2->addLink($obj1); >>> $obj1->store(); >>> $obj2->store(); >>> >>> $start = microtime(true); >>> $blargh = $bucket->get('linkkey2'); >>> $end = microtime(true); >>> printf("Took : %04f\n",$end - $start); >>> >>> $start = microtime(true); >>> $result = >>> $client->add($bucketname, 'linkkey1')-> >>> link()-> >>> map(array("riak_kv_mapreduce", "map_object_value")) -> >>> run(); >>> foreach ($result as $data) { >>> //var_dump($data); >>> } >>> $end = microtime(true); >>> printf("Took : %04f\n",$end - $start); >>> <snip> >>> >>> So here's what I'm seeing: >>> >>> The simple key fetch takes 0.000661 seconds to execute, whereas the >>> link-walk takes 0.042043. Ouch. Quite a bit slower. Any ways to speed >>> this up? >>> >>> Cheers, >>> >>> Mark Steele >>> Bering Media Inc. >>> >>> >>> _______________________________________________ >>> 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