验证cassandra查询中where子句中的replication_factor

时间:2018-01-09 06:52:42

标签: cassandra

我试图找出密钥空间的复制因子是否发生了变化。我尝试了以下查询并获得语法错误。有人可以帮我解决语法吗?

SELECT COUNT(*) as rows 
FROM system.schema_keyspaces  
WHERE keyspace_name = 'cluster_test' and strategy_options = {replication_factor:2}

SELECT COUNT(*) as rows 
FROM system.schema_keyspaces  
WHERE keyspace_name = 'cluster_test' and strategy_options['replication_factor'] = '2'

2 个答案:

答案 0 :(得分:1)

system.schema_keyspaces来自cassandra 2.x.

Cassandra 3.x有system_schema.keyspaces

无论版本如何,您都无法在系统密钥空间上创建二级索引。

由于表中的每个键空间只有一条记录(keyspace_name是PRIMARY KEY),因此您可以在应用程序端获取记录并进行比较。

SELECT strategy_options FROM system.schema_keyspaces  
WHERE keyspace_name = 'cluster_test' 

答案 1 :(得分:0)

strategy_options不是system.schema_keyspaces中的群集列。您不能在非聚集键列上执行where子句。

由于system.schema_keyspaces是系统键空间,因此您也无法创建索引。

如果您使用的是Cassandra 3.0,则可以创建物化视图到system.schema_keyspaces并查询它以支持您的过滤器。 以下是如何创建物化视图

CREATE MATERIALIZED VIEW myschema_keyspaces As select * from system.schema_keyspaces primary key (keyspace_name, strategy_options)

现在,您可以在物化视图myschema_keyspaces

上执行过滤条件