NoSQL具有分析功能

时间:2012-10-31 11:03:23

标签: mapreduce nosql analytic-functions

我正在搜索支持分析函数的任何NoSQL系统(最好是开源代码)(简称AF),如Oracle / SQL Server / Postgres。我没有找到任何内置函数。我读过有关Hive的内容,但它没有AF(windows,first_last值,ntiles,lag,lead等)的实际特征,只是直方图和ngrams。另外一些NoSQL系统(例如Redis)支持map / reduce,但我不确定AF是否可以替换它。

我想进行性能比较,选择Postgres或NoSQL系统。

简而言之:

  1. 使用NoSQL
  2. 搜索AF个系统
  3. 我可以依靠map / reduce来替换AF吗?它快速,可靠,易于使用。
  4. PS。我试图让我的问题更有建设性。

2 个答案:

答案 0 :(得分:2)

一旦你真正理解了MapReduce的工作原理,你就可以通过几行代码做出惊人的事情。

这是一个很好的视频课程:

http://code.google.com/intl/fr/edu/submissions/mapreduce-minilecture/listing.html

真正的难度因素将介于可以使用单个MapReduce实现的函数与需要链接的MapReduces的函数之间。此外,一些不错的MapReduce实现(如CouchDB)不允许链接MapReduces(很容易)。

答案 1 :(得分:1)

当某些函数涉及聚合之王(平均值,中位数,标准差)或某些排序(第一个,最后一个)时,它会使用所有现有数据的知识。

如果您想要支持AF的分布式NOSQL解决方案,系统将需要依赖一些集中索引和元数据来保存所有节点中的数据信息,从而拥有一个主节点,可能还有一个失败点。

您必须询问使用NoSQL您希望完成的任务。你想要无模式表吗?分布式数据?非常简单的查询可以提高原始性能吗?

根据您的需要,我在这里看到三个主要选择:

1 - 使用没有单点故障的分布式NoSQL(即:Cassandra)来存储数据并使用map / reduce处理数据并生成所需函数的结果(几乎任何主要的NoSQL)解决方案支持Hadoop)。需要注意的是,map / reduce查询不是实时的(执行查询可能需要几分钟或几小时),需要额外的设置和学习。

2 - 使用支持多个服务器的传统RDBMS,如MySQL Cluster

3 - 使用具有主/从拓扑的NoSQL,支持临时和聚合查询,如Mongo

关于第二个问题:是的,您可以依靠M / R来取代AF。使用M / R几乎可以做任何事情。