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

使用哪种技术(SQL/NoSQL)进行实时数据聚合,nosql,aggregate-functions,Nosql,Aggregate Functions,我需要设计一个近乎实时的系统,在这个系统中,文档(带有字段:id、关键字、时间戳)被添加到系统中。要求在最后x分钟内从添加到系统的文档中获取top-k关键字。典型的文档添加速率约为100个文档/秒,这在将来可能会增加(因此技术应该是水平可扩展的) 我正在考虑使用solr facets(带切分)来生成top-k关键字,其中我有点担心solr的高写入速率/秒。另一种选择是使用Cassandra,但不确定它将如何扩展范围查询(以计算聚合),因为OrderPreservingPartitioner可能会

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

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

这听起来像是个问题,不是数据库或搜索问题。你不太关心如何保存数据,而是关心如何实时获取关键字趋势或类似信息。您希望查看的一些供应商/库包括(有许多遗漏):

Microsoft/.NET:

-微软的CEP产品

-用于流处理的.NET扩展

Java:

-非常流行的OSS流处理库

-Hadoop上的流处理,可能扩展到超大数据量

第三方/专有(不会对此发表评论,对其了解不够):


同时使用sql和nosql

查询使用sql,复杂数据使用nosql


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

只是好奇,solr方面会有什么问题?一点问题都没有。它似乎不是适合这项工作的工具。Facets,AFAIK(Grant Ingersoll可以在这里纠正我)允许您根据搜索的属性钻取搜索结果,这对于网站上的产品搜索非常有用。你只关心最后几分钟的事情,然后你就扔掉旧东西。