首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么卡桑德拉没有二级索引?

为什么卡桑德拉没有二级索引?
EN

Stack Overflow用户
提问于 2019-05-22 11:29:12
回答 2查看 135关注 0票数 1

Cassandra被定位为可扩展和快速的数据库。我的意思是,从技术细节来看,为什么二级指标不能实现上述目标?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-05-22 13:41:57

卡桑德拉确实有次级索引。但是辅助索引的使用在分布式数据库中不能很好地工作,这是因为每个节点只包含整个数据集的一个子集。

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

How do secondary indexes work in Cassandra?

虽然它应该帮助您了解正在发生的事情,但这个答案是从first查询的上下文中编写的,该上下文是通过分区键查询的。这是一个重要的区别,因为分区中的辅助索引使用应该表现良好。

问题是,当只通过辅助索引进行查询时,Cassandra无法保证您的所有数据都能由一个节点提供服务。当发生这种情况时,Cassandra指定一个节点作为协调器,该协调器依次查询所有其他节点的指定索引值。

本质上,次要索引的使用迫使Cassandra对所有节点执行随机读取,而不是从单个节点执行顺序读取。现在,您不仅有磁盘寻找时间,而且网络时间复杂的事情。

Cassandra建模的建议是将数据复制到新的表中,以支持所需的查询。这在保持数据同步方面增加了其他一些复杂的因素。但是(如果正确的话)它可以确保查询确实可以由一个节点来处理。这是你在建立你的模型时需要做的一个权衡。你可以有方便或性能,但不能两者兼而有之。

票数 2
EN

Stack Overflow用户

发布于 2019-05-22 17:15:23

所以是的,卡桑德拉确实有二级指标,亚伦的解释在解释原因方面做得很好。

您可以看到许多人试图通过将数据写入多个表来解决这个问题。这样做是为了确保回答传统上依赖于辅助索引的查询所需的数据位于同一个节点上。

卡桑德拉( cassandra )最近的一些迭代通过物化视图实现了这一“内置”。我从3.0.11开始就没有真正使用过它们,但是它们是有希望的。当时我遇到的问题主要是将它们添加到具有现有数据的表中,而且它们在写方面有着惊人的大量开销(增加了延迟)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56255845

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档