柱状存储:Cassandravs红移

ddhy6vgd  于 2021-06-15  发布在  Cassandra
关注(0)|答案(1)|浏览(283)

在像cassandra这样的nosql数据库中,列式存储与redshift中的存储有何不同。如果cassandra也是一个列式存储,那么为什么它不用于像redshift这样的olap应用程序呢?

b5lpy0ml

b5lpy0ml1#

cassandra和redshift的存储引擎非常不同,它们是为不同的情况创建的。cassandra的存储并不是真正意义上的“列式”存储,像redshift、vertica等,它更接近nosql世界中的键值族。cassandra中使用的sql语法不是任何ansisql,它可以在那里运行的查询集非常有限。cassandra的引擎是为基于键的记录的快速写入和读取而构建的,而redshift的引擎是为快速聚合(mpp)而构建的,它广泛支持分析查询,并在列级别存储、编码和压缩数据。
下面的例子很容易理解:
假设我们有一个带有用户id和许多指标(例如体重、身高、血压等)的表。我们将以红移方式运行聚合查询,如平均权重,它将执行以下操作(在最佳情况下):
主节点将向节点发送查询。
只有此特定列的数据将从存储中获取。
查询将在所有节点上并行执行。
最终结果将被送到主控室。
在cassandra中运行相同的查询,将导致扫描所有“行”,并且每个“行”可以有多个版本,在聚合中只能使用最新的版本。如果您熟悉任何键值存储(redis、riak、dynamodb等),那么它比扫描那里的所有键值效率要低。
cassandra多次使用spark作为分析工作流的存储层,而spark作为实际的查询引擎,基本上不应该单独用于分析查询。随着每个版本的发布,添加了越来越多的聚合功能,但它离真正的分析数据库还很远。

相关问题