【问题标题】:Which technology ( SQL/NoSQL) to use for real-time data aggregation使用哪种技术 (SQL/NoSQL) 进行实时数据聚合
【发布时间】:2012-02-04 06:59:46
【问题描述】:

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

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

【问题讨论】:

    标签: nosql aggregate-functions


    【解决方案1】:

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

    微软/.NET:

    StreamInsight - Microsoft 的 CEP 产品

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

    Java:

    Esper - 非常流行的OSS流处理库

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

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

    StreamBase

    Aleri

    【讨论】:

    • 只是好奇,solr-facets 可能有什么问题?
    • 完全没有问题。它似乎不是适合这项工作的工具。 Facets,AFAIK(格兰特英格索尔可以在这里纠正我)让您可以通过搜索属性深入研究搜索结果,这对于网站上的产品搜索等非常有用。你只关心最后几分钟的事件——在那之后你丢弃旧的东西。
    【解决方案2】:

    同时使用sql和nosql。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-06
      • 2011-01-17
      • 1970-01-01
      • 1970-01-01
      • 2011-03-26
      • 2010-10-07
      相关资源
      最近更新 更多