我们需要对 Cassandra 数据库执行分析和报告。
以下是我们迄今为止确定的方法。
1)在 cassandra 上使用 spark 。
缺点 :
我们将在 cassandra 中大量使用聚合函数,因为数据是按行键分区的。如果 groupby 行与我们的行键匹配,那么性能会很差。
用于显示报告的 spark 没有开箱即用的 UI
它需要一个程序员(java/scala/python)来添加/修改未来的
需求,这会导致高昂的维护成本
2)将数据移至红移并在其上执行分析。
这对我们的聚合查询很有效,因为 redshift 是列式数据库。
在 redshift 中创建表时,能够根据我们的分析查询指定排序和分发
可用于报告的 UI 合作伙伴
即席查询支持 SQL(较少维护)
缺点 :
- 我们需要将数据从 cassandra 移动到 redshift。我们已经确定 AWS Firehose 可以为我们执行此操作。除了写入 cassandra,我们还将写入 firehose 流,该流将为我们写入 redshift。
- AWS 成本涉及 redshift 和 Firehose 。
到目前为止,我们倾向于 redshift 。我上面的假设有什么错误吗?有没有其他选择?