你会使用 Cassandra 进行聚合查询吗?

Would you use Cassandra for aggregate queries?

有没有人在生产中使用过 Cassandra,用于跨多个区域的数百万行数据聚合?

示例: 全球卖家,例如亚马逊

数据列: 用户、邮政编码、item_purchased、金额、日期时间、国家/地区

假设我想要一个查询: 获取每个国家/地区每个邮政编码每个项目的总支出。

对于这种聚合,Cassandra 会是一个糟糕的选择吗?

你会用什么?它会像 Elasticsearch 吗?关系数据库管理系统?

快速回答:否 :)

Cassandra 不支持丰富的 SQL 查询。从技术上讲,Cassandra 具有一些聚合功能,但此功能非常有限。

如果您的数据对于 RDBMS 而言太大,有多种方法可以进行聚合。

  1. NoSql 存储+查询引擎。您可以将数据存储在 Cassandra、Hbase 甚至 S3 上的文件中,并使用 Hive、Spark SQL 或 Apache Drill 等软件在 NoSQL 存储上执行复杂的 SQL 查询。

  2. Elasticsearch 现在具有丰富的聚合功能。

  3. 如果您在 AWS 上,相对简单且便宜的解决方案是将您的数据以 Parquet 格式放在 S3 上,并使用 Athena 进行聚合。