Geo*_*off 6 couchdb mapreduce bigdata mongodb nosql
我在看这张图...
http://www.mongodb.org/display/DOCS/MongoDB,+CouchDB,+MySQL+Compare+Grid
...说:
查询方法
CouchDB - 映射/减少javascript函数以懒惰地为每个查询构建索引
MongoDB - 动态; 基于对象的查询语言
这到底是什么意思?例如,如果我想取平均1,000,000,000个值,那么CouchDB会以MapReduce方式自动执行吗?
有人可以告诉我如何使用两个系统平均获得1,000,000,000个值......这将是一个非常有启发性的例子.
谢谢.
我不能谈论MongoDB,但我可以告诉你有关CouchDB的信息.CouchDB只能通过Map/Reduce View Engine进行本地查询.事实上,一个很好的起点是维基的这一部分.
视图包含一个map函数和一个可选的 reduce函数.编写这些函数的典型语言是JavaScript,但是有一个Erlang选项可用,并且可以用几乎任何其他编程语言构建视图引擎.
map函数用于从数据库中的文档构建数据集.reduce函数用于聚合该数据集.因此,一旦创建视图,就会在数据库中的每个文档上运行map函数.(以及第一查询)创建之后,该函数只能运行在其或者新创建的,或者被修改/删除的文件.因此,视图索引是以增量方式构建的,而不是动态构建的.
在10亿个价值的情况下,CouchDB的将不再需要计算你的查询结果它要求每一次.相反,它只报告它已存储的视图索引的值,它本身仅在创建/更新/删除文档时更改.
至于编写Map/Reduce函数,由于没有内置的map函数,很多工作都由程序员完成.(即它不是"自动")不过,也有一些本土减少功能(_sum,_count,_stats)可用.
这是一个简单的例子,我们将计算一些人的平均身高.
// sample documents
{ "_id": "Dominic Barnes", "height": 64 }
{ "_id": "Some Tall Guy", "height": 75 }
{ "_id": "Some Short(er) Guy", "height": 58 }
// map function
function (doc) {
// first param is "key", which we do not need since `_id` is stored anyways
emit(null, doc.height);
}
// reduce function
_stats
Run Code Online (Sandbox Code Playgroud)
此视图的结果如下所示:
{
"rows": [
{
"key": null
"value": {
"sum": 197,
"count": 3,
"min": 58,
"max": 75,
"sumsqr": 13085
}
}
]
}
Run Code Online (Sandbox Code Playgroud)
从这里计算平均值就像将总和除以计数一样简单.如果您想在视图中计算平均值,可以查看此示例.
小智 8
CouchDB的观点是一个奇怪而迷人的野兽.
CouchDB执行增量map/reduce,也就是说,一旦指定了"view",它就会像关系数据库中的物化视图一样工作.如果你平均有3到30亿个文件,那就无所谓了.结果就在那里.
但那里有三重陷阱
1)一旦创建并更新视图,查询就会很快.如果您有大量小文档(如果可能的话,请使用更丰富的文档),视图创建可能会很慢.创建视图后,中间减少步骤将存储在B树节点内,您不必重新计算它们.
2)当您查询时,视图会被懒惰地更新.为了获得可预测的性能,您最好设置某种工作来定期更新它们. 如何在CouchDB中安排索引更新
3)您需要非常了解如何使用复合键,范围和分组查询数据.CouchDB很难进行临时查询. http://wiki.apache.org/couchdb/Introduction_to_CouchDB_views
我确定有人会很快发布如何在两个数据库中平均1,000,000,000个项目的细节,但你必须明白CouchDB会让你做更多的前期工作,以便从增量方法中受益.它确实是一个非常独特的东西,但是当你在平均查询数据上做平均值或任何事情时,它并不真正用于场景.
在Mongo中,您可以使用map/reduce(不是增量.无论您是平均3或30亿个文档,但mongo由于其内存映射I/O方法被认为是非常快)或它们的聚合功能都很重要.http://www.mongodb.org/display/DOCS/Aggregation
| 归档时间: |
|
| 查看次数: |
3320 次 |
| 最近记录: |