Mysql NOSQL数据库的聚合和统计功能
使用SQL数据库,可以轻松地执行统计/聚合功能,如协方差、标准差、峰度、偏度、偏差、均值和中值、总和和乘积等,而无需将数据输出到应用程序服务器。 对于大型数据集,如何在NoSql数据库(尤其是dynamodb(cassandra))上有效地进行此类计算(尽可能靠近存储,假设map/reduce“作业”不会是实时的)Mysql NOSQL数据库的聚合和统计功能,mysql,postgresql,cassandra,amazon-dynamodb,amazon-redshift,Mysql,Postgresql,Cassandra,Amazon Dynamodb,Amazon Redshift,使用SQL数据库,可以轻松地执行统计/聚合功能,如协方差、标准差、峰度、偏度、偏差、均值和中值、总和和乘积等,而无需将数据输出到应用程序服务器。 对于大型数据集,如何在NoSql数据库(尤其是dynamodb(cassandra))上有效地进行此类计算(尽可能靠近存储,假设map/reduce“作业”不会是实时的) AWS RDS(MySQL,PostgresSQL,…)不是NoSQL,Amazon Redshift(ParAccel)——一种列存储——有一个SQL接口,可能是一种过度使用(6
AWS RDS(MySQL,PostgresSQL,…)不是NoSQL,Amazon Redshift(ParAccel)——一种列存储——有一个SQL接口,可能是一种过度使用(6.85美元/小时)。Redshift的聚合功能有限(,)在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);
}});
db.system.js.save({u id:“方差”,
值:函数(键、值)
{
var平方_Diff=0;
var平均值=平均值(键、值);
对于(变量i=0;i
描述如下。在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);
}});
db.system.js.save({u id:“方差”,
值:函数(键、值)
{
var平方_Diff=0;
var平均值=平均值(键、值);
对于(变量i=0;i
描述如下。对于没有聚合功能的数据库(如Cassandra),您总是需要提取一些数据。目前,在数据库附近构建分布式计算集群是一种流行的选择(使用诸如的项目)。通过这种方式,您可以并行请求和处理数据以执行操作。把它想象成一个“实时”Hadoop(尽管它不一样)
实现这样一个设置显然比拥有一个开箱即用的支持它的系统要复杂得多,所以在您的决策中考虑到这一点。好处是,如果需要,集群允许您执行复杂的自定义分析,这超出了传统数据库解决方案所支持的任何功能。对于没有聚合功能的数据库(例如Cassandra),您总是需要提取一些数据。目前,在数据库附近构建分布式计算集群是一种流行的选择(使用诸如的项目)。通过这种方式,您可以并行请求和处理数据以执行操作。把它想象成一个“实时”Hadoop(尽管它不一样)
实现这样一个设置显然比拥有一个开箱即用的支持它的系统要复杂得多,所以在您的决策中考虑到这一点。好处是,如果需要,集群允许您执行复杂的自定义分析,而不是传统DB解决方案所支持的任何分析。MongoDB具有一些聚合功能,可能适合您的需要。MongoDB具有一些聚合功能,可能适合您的需要