哪种技术(SQL / NoSQL)用于实时数据聚合

时间:2012-01-06 14:53:03

标签: nosql aggregate-functions

我需要设计一个近乎实时的系统,其中文档(带有字段:id,关键字,时间戳)被添加到系统中。要求是在最后x分钟内从添加到系统的文档中获取top-k关键字。典型的文档添加率约为100个文档/秒,将来可能会增加(因此技术应该是水平可扩展的)。

我正在考虑使用solr-facets(带分片)来生成top-k关键字,其中我有点担心solr的高写/秒。另一种选择是使用Cassandra,但不确定如何扩展范围查询(计算聚合),因为OrderPreservingPartitioner可能使分配负载变得困难。

2 个答案:

答案 0 :(得分:1)

这听起来像Complex Event Processing问题,而不是数据库或搜索问题。您并不关心如何保存数据,就像实时获取关键字趋势或类似内容一样。您想要查看的一些供应商/库(有许多遗漏):

<强>微软/ .NET:

StreamInsight - 微软的CEP产品

Reactive Extensions for .NET - 用于流处理的.NET扩展

<强>爪哇:

Esper - 非常受欢迎的OSS流处理库

Storm - 在Hadoop上进行流处理,可能扩展到极大的数据量

第三方/专有(不会评论这些,对它们不够了解):

StreamBase

Aleri

答案 1 :(得分:0)

同时使用sql和nosql。

使用sql进行查询,并将nosql用于复杂数据。

编写x2代码。并根据他们的需求解决每一个问题。