我试图找出密钥空间的复制因子是否发生了变化。我尝试了以下查询并获得语法错误。有人可以帮我解决语法吗?
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'
答案 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