使用SQL数据库,可以很容易地完成统计/聚合函数,如协方差、标准差、峰度、偏度、偏差、均值和中间值、求和和积等,而无需将数据输出到应用服务器。http://www.xarg.org/2012/07/statistical-functions-in-mysql/
这些计算是如何有效地完成(尽可能靠近存储,假设映射/减少“作业”不会是实时的)在NoSql数据库上,特别是对于大型数据集的dynamodb(cassandra)。
(MySQL,PostgresSQL,.)不是NoSQL和Amazon (ParAccel) --一个列存储区--有一个SQL接口,而且可能是过分的(6.85美元/小时)。Redshift的聚合功能有限(Functions.html、functions.html)
发布于 2013-11-17 17:21:06
对于没有聚合功能的DB(例如Cassandra),您总是需要提取一些数据。目前,在靠近DB的地方构建分布式计算集群是一个流行的选择(使用像风暴这样的项目)。通过这种方式,您可以请求并并行处理数据以执行操作。把它看作是一个“实时”Hadoop (尽管它不一样)。
实现这样的设置显然比有一个支持它的系统要复杂得多,所以在您的决策中要考虑到这一点。好处是,如果需要,集群允许您执行复杂的自定义分析方法,而不是传统DB解决方案中支持的任何内容。
发布于 2013-11-16 08:37:16
在MongoDB中,您可以创建某种UDF:
db.system.js.save( { _id : "Variance" ,
value : function(key,values)
{
var squared_Diff = 0;
var mean = Avg(key,values);
for(var i = 0; i < values.length; i++)
{
var deviation = values[i] - mean;
squared_Diff += deviation * deviation;
}
var variance = squared_Diff/(values.length);
return variance;
}});
db.system.js.save( { _id : "Standard_Deviation"
, value : function(key,values)
{
var variance = Variance(key,values);
return Math.sqrt(variance);
}});描述是这里。
发布于 2013-11-18 08:43:02
MongoDB有一些可能适合您的需求的聚合功能,http://docs.mongodb.org/manual/aggregation/
https://stackoverflow.com/questions/20016300
复制相似问题