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

Reply via email to