2

我正在尝试将包含数百万次点击(几年点击历史)的 postgres 数据库迁移到性能更高的系统。我们当前在 postgres 上运行的分析查询需要很长时间才能完成,并且会降低整个数据库的性能。我一直在研究可能的解决方案,并决定仔细研究 2 个选项:

  • HBase 与 Hadoop (mapreduce)
  • Cassandra 与 Spark

我之前使用过 NoSQL,但从未将其用于分析目的。起初,我对这些数据库提供的分析查询选项很少(缺少 groupBy、count、...)感到有点失望。在阅读了许多文章和演示文稿后,我发现,我需要根据我打算如何读取数据来设计我的架构,并且存储层与查询层是分开的。这增加了更多冗余数据,但是在 NoSQL 的世界中这不是问题。

最终我找到了一个不错的 grails 插件cassandra-orm ,它内部封装了 cassandra counters counters中的 orderBy 功能。但是我仍然担心如何使这种设计可扩展。将来会出现的查询呢,我今天对此一无所知,我该如何设计为此准备的架构?一种选择是使用 Spark,但 Spark 不提供实时数据。

您能给我一些见解或建议,什么是大数据分析的最佳选择。我应该使用实时查询与预聚合查询的组合吗?

谢谢,

4

2 回答 2

2
  1. 如果您正在研究近乎实时的数据分析,Spark + HBase组合是解决方案之一。

  2. 如果您想在吞吐量上妥协,可以使用 Datastax的Solr + Cassandra组合。

我将Datastax 的Solr + Cassandra用于我的用例,它不需要实时处理。这个组合的搜索选项的性能不是很好,但我对吞吐量很满意。

Spark+HBase的组合似乎很有希望。根据您的业务需求和专业知识,您可以选择正确的组合。

于 2015-10-20T10:58:14.157 回答
0

如果您希望能够在查询结构中完全灵活地近乎实时地分析数据,我认为您最好的选择是将ElasticsearchSolr等可扩展索引引擎放入您的多语言持久性组合中。您仍然可以使用 Cassanra 作为主要数据存储,然后索引您有兴趣查询和/或聚合的那些字段。

查看将 Cassandra 和 Solr 捆绑在一起的Datastax Enterprise 。还可以查看 Solr 的Stats 组件及其分功能。这些与索引引擎的丰富查询语言相结合,可以方便地实现许多分析用例。

如果您的数据集“仅”包含几百万条记录,我认为您将能够在合理指定的集群上从 Solr 或 ES 获得一些良好的响应时间。

于 2015-06-02T22:43:12.553 回答