最近几天上海的天气可真是够恼人的,晚上总是很难入睡,所以就上来闲扯两句。

最近看了许多关于MapReduce这种编程模型的资料,这其实并不是什么完全开创性的东西,里面的思路其实在很早以前就已经出现,看看Google那篇文档里的参考文献的资料就可以知道这点。之所以在过去那么多年里这种模型没有流行开来,一方面是因为并没有出现一个像Google这样需要并发处理海量数据的应用。

其实,关于数据引擎在多年前也是做过一场重大的赌注,那时将赌注放在了关系理论上,关系理论模型在数据库引擎中的应用为现在这个年代的诸多应用打下了坚实的基础构件。但在过去的那么多年里,一个超级的数据中心始终未出现,随着硬件的极速发展,发现现有数据库引擎在高并行的运算处理上似乎是遇到了瓶颈。这个时候MapReduce的模型得到了许多关注,包括伯克利大学也将其作为计算机系学生需要学习的内容。

相比之下,目前MapReduce与已经经过多年发展的关系数据库相比,仍然缺乏许多特性支持其得到广泛的应用。只有在处理非常巨大的数据量,并且需要对并行运算有很大的需求时,这种模型才能发挥出相对的优势。同时高并行的关系型数据库技术也在不断取得进展,这些事情非常有意思,从这两个方向进行的研究和取得的进展,越来越让人觉得一个超级的数据中心在数年内是有可能出现的,那会是一个非常具有历史意义的事件。

在Google的文档中,提到了MapReduce的高度可扩展性,但所叙述的内容实在让人感觉有些模糊。我还是认为,这套模型在现在的应用中,扩展性方面仍然是一个比较有难度的事情,至少在可扩展性这个话题上,历来这个行业中的任何新事物都明白这大多时候都是不得不说的话。

一个有趣的现象是,随着硬件的运算速度不断提升,却越来越发现我们遇到了运算能力的瓶颈。热门的词汇从几年前的cluster逐渐开始像parallel过渡,而parallel带来的一个有趣的问题是这让多年来面向对象的编程模型开始有些捉襟见肘,许多新东西已经重新回归到当年函数式编程模型去寻找新的突破口。