与复制因子相关的二级索引

时间:2018-02-11 14:58:50

标签: apache cassandra cassandra-3.0

我在Cassandra表中使用了一个二级索引。,

假设我有一个 5节点集群(192.168.1.1,192.168.1.2,192.168.1.3,192.168.1.4,192.168.1.5),其中Keyspace 复制因子为&#39 ; 3' 并考虑下表,

CREATE TABLE nodestat (
    uniqueId text,
    totalCapacity int,
    physicalUsage int,
    flashMode text,
    timestamp timestamp,
    primary key (uniqueId, timestamp)) 
    with clustering order by (timestamp desc);

在此,我将uniqueId的值设为' test ',这意味着我只有只有一个名为' test'的分区。 即可。

当我执行getEndPoints时,我可以看到数据只驻留在3个节点中。

./nodetool getendpoints keyspacename nodestat test

192.168.1.1 192.168.1.2 192.168.1.3

所以我的分区数据有3个节点,我在其中一个列上做了二级索引,

CREATE CUSTOM INDEX nodeIp_idx ON nodestat(flashMode)

所以现在我执行

select * from nodestat where uniqueId = 'test' AND flashMode = 'yes'

收集数据的节点数量是多少?

谢谢,
哈利

1 个答案:

答案 0 :(得分:1)

select * from nodestat where uniqueId = 'test' AND flashMode = 'yes'

根据此查询,您将使用分区键和辅助索引。因此,它将表现得像基于所选一致性级别的普通查询。也就是说,如果“local_one”只有一个节点足以响应,并且“local_quorum”中该节点的法定数量的节点必须响应。二级索引将进一步帮助缩小结果集。

请记住,辅助索引对于该群集的每个节点中的数据是本地的,因此存在于群集的所有节点中。其他参考here

简而言之,复制因子与辅助索引没有直接关联。