p07*_*712 6 column-oriented cassandra amazon-redshift
Cassandra 等 NoSQL 数据库上下文中的列式存储与 Redshift 中的列式存储有何不同。如果 Cassandra 也是列式存储,那么为什么它不用于 Redshift 等 OLAP 应用程序?
Cassandra 和 Redshift 的存储引擎非常不同,并且是为不同的情况创建的。Cassandra 的存储在此类数据库(如 Redshift、Vertica 等)的广为人知的含义中并不是真正的“列式”,它更接近 NoSQL 世界中的键值系列。Cassandra 中使用的 SQL 语法不是任何 ANSI SQL,并且可以在那里运行的查询集非常有限。Cassandra 的引擎是为基于 key快速写入和读取记录而构建的,而 Redshift 的引擎是为快速聚合(MPP)而构建的,并且广泛支持分析查询,并在列级别存储、编码和压缩数据。
用下面的例子很容易理解:
假设我们有一个包含用户 ID 和许多指标(例如体重、身高、血压等)的表格。我将在 Redshift 中运行聚合查询,例如平均权重,它将执行以下操作(在最佳情况下):
Master 将向节点发送查询。
只会从存储中获取此特定列的数据。
查询将在所有节点上并行执行。
最终结果将被获取到 master。
在 Cassandra 中运行相同的查询,将导致扫描所有“行”,每个“行”可以有多个版本,并且只有最新的应该用于聚合。如果您熟悉任何键值存储(Redis、Riak、DynamoDB 等),它不如扫描那里的所有键有效。
Cassandra 多次用于 Spark 的分析工作流,充当存储层,而 Spark 充当实际查询引擎,基本上不应该单独用于分析查询。随着每个版本的发布,越来越多的聚合能力被加入,但它离真正的分析数据库还很远。
| 归档时间: |
|
| 查看次数: |
2137 次 |
| 最近记录: |