首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

MapReduce初探之一~基于Mongodb兑现标签统计

2013-03-10 
MapReduce初探之一~~基于Mongodb实现标签统计咋一看,怎么就是分布式计算的原理图解了?论道分布式计算,就扯

MapReduce初探之一~~基于Mongodb实现标签统计

咋一看,怎么就是分布式计算的原理图解了?论道分布式计算,就扯远了,回到主题上,这次是讨论如何利用MapReduce的思想,实现Blog文章标签的统计!

按照传统的关系数据库设计,统计标签,无非就是建一张标签表,我们姑且叫左Tb_tags,大致的结构就是id和value,然后关联id到Blog表的外键上。恩,不差错。可是这次,NodeBlog的数据库用的可是Mongodb哦,难道照搬即可?

我们先看看在mongodb下,Blog表是如何描述的:

/** * 统计Blog中标签出现的次数,采用MapReduce进行实时计算 * @param callback --> result: _id(tag name), value(occupied count) */exports.tagStatistical = function(callback){    var o = {};    o.map = function () {        this.tags.forEach(function(z){  //z即是具体的某个tag了            emit(z,1);                    //对某个tag出现一次就计数一次        });    }    o.reduce = function (k, values) {        var total=0;        for(var i=0;i<values.length;i++){            total += values[i];        }        return total;    }    Blog.mapReduce(o, function (err, results) {        if(err) {            console.log("mapReduce err:"+err);        }        console.log(results);        callback(results);    })} 

最后我们通过callback函数获得的result事实上就是(tag,count)的Map了,这是如何实现的?这点,就有赖于Mongodb的高级特性了,Mongodb对于?MapReduce?是骨子里支持的,因而这种运算的效率是有保障的!难怪Mongodb的掌门人叫嚣:不是Mongodb不行,是你们不懂Mongodb!??

总结一下,尽管这篇Blog讲得有点乱,但是主要还是想讲清楚MapReduce的思想!?MapReduce的实现五花八门,但是其中心思想~map和reduce才是我们必须理解和掌握的!

?

本文由zhiweiofli编辑发布,转载请注明出处,点击,谢谢。

热点排行