为什么Cassandra没有二级索引?

沃普

Cassandra被定位为可扩展的快速数据库。从技术细节上来说,我的意思是为什么上述目标无法通过二级索引来实现?

亚伦

Cassandra确实具有二级索引。但是二级索引的用法不适用于分布式数据库,这是因为每个节点仅包含整个数据集的一个子集。

我之前写过一个答案,其中讨论了二级索引查询的基本细节:

二级索引在Cassandra中如何工作?

虽然它应该有助于您了解发生了什么,但是该答案是根据首先通过分区键查询的上下文编写的这是一个重要的区别,因为区内二级索引用法应表现良好。

问题是,通过二级索引查询时,Cassandra无法保证您的所有数据都可以由单个节点提供。发生这种情况时,Cassandra将一个节点指定为协调器,该协调器反过来向所有其他节点查询指定的索引值。

本质上,二级索引的使用不是强制从单个节点执行顺序读取,而是强制Cassandra从所有节点执行随机读取。现在您不仅有了磁盘搜索时间,而且还有网络时间使事情变得复杂。

对于Cassandra建模,建议将数据复制到新表中以支持所需的查询。保持数据同步会增加其他一些复杂性。但是(正确完成后)可以确保您的查询确实可以由单个节点提供。这是在构建模型时需要进行的权衡。您可以拥有便利或性能,但不能两者兼得。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么二级索引在Cassandra中效率较低?

Cassandra / Redis:在没有Cassandra'IN'二级索引的情况下创建提要的方法?

Cassandra中的聚簇列和二级索引有什么区别

Apache Cassandra中的二级索引

为什么我们在cassandra中需要二级索引,它们实际上是如何工作的?

在Cassandra中具有二级索引的高可用性和性能考虑

Cassandra:具有多个WHERE子句的查询的二级索引

二级索引在Cassandra中如何工作?

低基数列cassandra的二级索引

使用二级索引更新Cassandra 2.1中的行

Cassandra中二级索引的范围查询

为什么键前缀优化不适用于群集列上的二级索引?

为什么在二级索引的情况下,InnoDB会阻止更多记录?

在DynamoDB表中具有不带排序键的全局二级索引有什么意义?

如果DynamoDB二级索引内部没有任何属性更改,是否会被重写?

如果不是MaterializedViews而不是二级索引,那么在cassandra中查询数据的推荐方式是什么

postgresql中二级索引的定义是什么?

二级缓存-为什么不缓存所有实体?

带有本地二级索引的Boto批次

mongo中有全球二级索引的概念吗?

一维xarray具有二级索引

Dynamodb:查询具有二级索引的表

为什么二级INNER JOIN限制结果

为什么我的二级期货连续执行?

Dynamodb全局二级索引-是否所有二级索引都需要相似的吞吐量?

为什么通过cdk向dynamodb表添加二级索引需要重新创建表?

如果指定了分区键,Cassandra二级索引是否已优化?

我可以在cassandra的UDT字段上创建二级索引吗?

如何按Cassandra中的二级索引或列对结果排序?