数据模型

关系模型

突出数据之间的关联。

文档模型

数据来自于包含文档,文档间关联很少。

图状数据模型

针对所有数据都可能互相关联。

数据查询语言

Web 上声明式查询

CSS 选择器。

MapReduce 查询

MapReduce 是一种编程模型,用于在许多机器上批量处理海量数据。

MongoDB 中的 MapReduce

db.observations.mapReduce(
  function map() {                   // 2
	var year = this.observationTimestamp.getFullYear();
	var month = this.obbservationTimestamp.getMonth() + 1;
	emit(year + "-" + month, this.numAnimals);    // 3
  },
  function reduce(key, values) {     // 4
	return Array.sum(values);        // 5
  },
  {
	query: {family: "Sharks"},       // 1
	out: "monthlySharkReport"         // 6
  }
);
  1. 过滤器声明式执行鲨鱼种类(MongoDB 特有扩展)。
  2. mapper:对于每个匹配的文档都会调用一次这个 JavaScript 函数。
  3. mapper 发射一个「键-值」对,键是 “2013-12” 格式的字符串,值是动物的数量
  4. mapper 发射的键值对按键分组,对于相同键的所有「键-值」对,调用 reduce 函数。
  5. reducer 函数将特定月份的所有观察到的动物数量相加。
  6. 最终输出写入到 monthlySharkReport 集合中