You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Cassandra Secondary index与Replication Factor:单分区存储节点问询

Cassandra二级索引数据存储节点分析

嘿,这个问题问到点子上了,刚好能帮你理清Cassandra二级索引的核心存储逻辑!咱们一步步拆解:

首先得明确Cassandra里二级索引的两种核心类型,以及它们对应的存储规则:

1. 本地二级索引(Local Secondary Index, LSI)

如果你的二级索引是本地索引(注意:LSI必须在创建表时就定义,无法通过事后CREATE INDEX命令添加),存储规则非常直接:

  • 本地索引的条目和基表的分区数据同节点绑定存储。
  • 你的基表分区uniqueId='test'存储在192.168.1.1、192.168.1.2、192.168.1.3这三个节点上,那么这三个节点的每一个,都会独立维护该分区对应的二级索引条目。
  • 简单总结:索引数据和基表分区数据完全共节点,也就是同样存储在192.168.1.1、192.168.1.2、192.168.1.3这三个节点。

2. 全局二级索引(Global Secondary Index, GSI)

如果你的二级索引是通过CREATE INDEX命令创建的(Cassandra 3.x及之后默认创建的就是GSI),情况会有所不同:

  • GSI会生成一张独立的索引表,这张表的分区键是你创建索引的目标列的值,聚类列则是基表的分区键(也就是你的uniqueId)。
  • 索引表的存储节点是根据索引列的值计算token后,按照Keyspace的Replication Factor=3规则分配的,和基表分区的存储节点没有直接关联。
  • 由于你的基表只有一个uniqueId='test'的分区,索引表中只会有一条对应的条目。这条条目会存储在由索引列的值的token决定的3个节点上,这三个节点可能和基表的1.1、1.2、1.3完全不同,也可能有部分重叠,取决于索引列的值对应的token范围分配。

你可以通过执行DESCRIBE TABLE <表名>命令查看表结构,确认自己使用的是哪种索引类型。

内容的提问来源于stack exchange,提问作者Coder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 07:41:59