如何在Cassandra 3中使用CQL来确定表是否使用紧凑存储?

时间:2016-08-29 22:29:44

标签: cassandra cql3

如果我使用Cassandra 3附带的cqlsh工具,它可以告诉我是否创建了一个表WITH COMPACT STORAGE。我所要做的只是describe table_name;,它向我展示了用于创建表格的CQL。

describe功能是cqlsh的一项功能,而不是CQL语言的功能。我需要确定一个表是否仅使用CQL来使用紧凑存储。我需要在system_schema中查询以确定表是否使用紧凑型存储?

1 个答案:

答案 0 :(得分:1)

根据python的cassandra驱动程序中deprecated类的定义,确定紧凑存储的逻辑如下

TableMetadataV3

flags = row.get('flags', set()) if flags: compact_static = False table_meta.is_compact_storage = 'dense' in flags or 'super' in flags or 'compound' not in flags is_dense = 'dense' in flags else: compact_static = True table_meta.is_compact_storage = True is_dense = False 对象是一个字典,它是查询row

的结果

因此,要确定表是否使用紧凑型存储,必须执行以下步骤。

  1. 使用CQL查询"SELECT * FROM system_schema.tables"。将键空间和表替换为参数
  2. 如果flags为空,则该表使用紧凑存储。
  3. 如果标志存在且密集'或者超级'作为集合的成员,表格使用紧凑存储。
  4. 如果' compound'不在集合中,表格使用紧凑型存储。
  5. 否则该表不使用紧凑型存储。