我正在尝试将包含数百万次点击(几年点击历史)的 postgres 数据库迁移到性能更高的系统。我们当前在 postgres 上运行的分析查询需要很长时间才能完成,并且会降低整个数据库的性能。我一直在研究可能的解决方案,并决定仔细研究 2 个选项:
- HBase 与 Hadoop (mapreduce)
- Cassandra 与 Spark
我之前使用过 NoSQL,但从未将其用于分析目的。起初,我对这些数据库提供的分析查询选项很少(缺少 groupBy、count、...)感到有点失望。在阅读了许多文章和演示文稿后,我发现,我需要根据我打算如何读取数据来设计我的架构,并且存储层与查询层是分开的。这增加了更多冗余数据,但是在 NoSQL 的世界中这不是问题。
最终我找到了一个不错的 grails 插件cassandra-orm ,它内部封装了 cassandra counters counters中的 orderBy 功能。但是我仍然担心如何使这种设计可扩展。将来会出现的查询呢,我今天对此一无所知,我该如何设计为此准备的架构?一种选择是使用 Spark,但 Spark 不提供实时数据。
您能给我一些见解或建议,什么是大数据分析的最佳选择。我应该使用实时查询与预聚合查询的组合吗?
谢谢,