Sanne came with a good follow up to this email, just some small clarifications:

On Mar 4, 2014, at 6:02 PM, Emmanuel Bernard <emman...@hibernate.org> wrote:

>>> If you have to do a map reduce for tasks so simple as age > 18, I think you 
>>> system better have to be prepared to run gazillions of M/R jobs.
>> 
>> I want to run a simple M/R job in the evening to determine who turns 18 
>> tomorrow, to congratulate them. Once a day, not gazzilions of times, and I 
>> don't need to index the age filed just for that. Also when it comes to 
>> Map/Reduce, the drawback of holding all the data in a single cache is 
>> two-folded:
>> - performance: you iterate over the data that is not related to your query. 
> 
> If the data are never related (query wise), then we are in the database split 
> category. Which is fine. But if some of your queries are related, what do you 
> do? Deny the user the ability to do them?

Here's where cross-site query would have been used. As Sanne suggested (next 
post) these limitations overcome the advantages.

> 
>> - programming model: the Map/Reduce implementation has a dependency on both 
>> Dog and Person. If I add Cats to the cache, I'll need to update the M/R code 
>> to be aware of that as well. Same if I rename/remove Dog. Not nice.
> 
> Well it’s called type safety, some people find it good ;)

If anything, this model reduces type safety and reusability. E.g. say you want 
a M/R task to see how many Persons speak French. With the single cache 
model(both Dog and Person int he Cache<String, Mammal>) it would look something 
like:

a)
//pseudocode
map (String k, Mammal value) {  
  if (value instanceof Person)) { //this is the ugly part
        if  (((Person)value).speaks("French")) ...
  } else {
     //ignore it, it's an Dog
  }
}

Same thing written for a Cache<String, Person>:

b)
map (String k, Person value) {
   if  (value.speaks("French")) ...
}

I don't think people would prefer writing a) instead of b) ;)


Cheers,
-- 
Mircea Markus
Infinispan lead (www.infinispan.org)





_______________________________________________
infinispan-dev mailing list
infinispan-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/infinispan-dev

Reply via email to