Cassandra 中的模式描述
在本文中,我们将讨论我们可以在哪里使用 describe 命令,它如何帮助描述模式,还讨论 describe 命令如何有用。让我们一一讨论。
- describe 命令在 CQL 中非常有用,因为它给出了新创建的数据库、新创建的表、函数的描述(如果有)、任何用户定义的函数(如果有)的描述。您可以看到为描述命令列出的以下几点。
- 它提供有关集群的信息。
- 它提供有关在任何表上创建的索引类型的信息。
- 它给出了新创建的数据库的信息。
- 它还提供了有关函数的信息。
- 如果有的话,它会给出用户定义类型的信息。
现在,您可以使用 help 命令查看 describe 命令的所有用例。我们来看一下。
cassandra@cqlsh> help describe
输出:
- 描述 [仅限 cqlsh]
(DESC 可以用作简写。)
输出有关连接的 Cassandra 集群或存储在集群中的数据对象的信息。以下列方式之一使用: - 描述键空间
输出所有键空间的名称。 - 描述键空间 []
输出可用于重新创建给定键空间的 CQL 命令以及其中的对象(例如表、类型、函数等)。
在某些情况下,随着 CQL 接口的成熟,将会有一些关于键空间的元数据不能用 CQL 表示。该元数据将不会显示。
” 参数可以省略,在这种情况下将描述当前键空间。 - 描述表格
输出当前键空间中所有表的名称,如果没有当前键空间,则输出所有键空间中的名称。DESCRIBE TABLE [.]
输出可用于重新创建给定表的 CQL 命令。在某些情况下,如上所述,可能存在不可表示且不会显示的表元数据。
- 描述索引
输出可用于重新创建给定索引的 CQL 命令。在某些情况下,可能存在不可表示且不会显示的索引元数据。 - 描述物化视图
输出可用于重新创建给定物化视图的 CQL 命令。在某些情况下,可能存在不可表示且不会显示的物化视图元数据。 - 描述集群
输出有关连接的 Cassandra 集群的信息,例如集群名称,以及正在使用的分区器和告密者。当您连接到非系统密钥空间时,它还会显示 Cassandra 环的端点范围所有权信息。 - 描述 [完整] 架构
输出可用于重新创建整个(非系统)模式的 CQL 命令。就像为每个非系统密钥空间 k 调用“DESCRIBE KEYSPACE k”一样工作。使用 DESCRIBE FULL SCHEMA 包含系统键空间。 - 描述类型
输出当前键空间中所有用户定义类型的名称,如果没有当前键空间,则输出所有键空间中的名称。 - 描述类型 [.]
输出可用于重新创建给定用户定义类型的 CQL 命令。 - 描述函数
输出当前键空间中所有用户定义函数的名称,如果没有当前键空间,则输出所有键空间中的名称。 - 描述函数 [.]
输出可用于重新创建给定用户定义函数的 CQL 命令。 - 描述聚合
输出当前键空间中所有用户定义聚合的名称,如果没有当前键空间,则输出所有键空间中的名称。 - 描述聚合 [.]
输出可用于重新创建给定用户定义聚合的 CQL 命令。 - 描述
输出可用于重新创建整个对象模式的 CQL 命令,其中对象可以是键空间或表或索引或物化视图(按此顺序)。
例如:
示例:列出所有现有的键空间
cassandra@cqlsh> describe keyspaces;
输出
system_schema system backup_copy system_traces university
system_auth app_data system_distributed operation
示例:app_data 键空间架构
cassandra@cqlsh> describe app_data;
输出
CREATE KEYSPACE app_data WITH replication =
{
'class': 'NetworkTopologyStrategy',
'datacenter1': '3', 'datacenter2': '2'
}
AND durable_writes = true;
CREATE TABLE app_data.t (
k text,
i int,
s text static,
PRIMARY KEY (k, i)
) WITH CLUSTERING ORDER BY (i ASC)
AND bloom_filter_fp_chance = 0.01
AND caching = {'keys': 'ALL', 'rows_per_partition': 'NONE'}
AND comment = ''
AND compaction = {
'class': 'org.apache.cassandra
.db.compaction
.SizeTieredCompactionStrategy',
'max_threshold': '32', 'min_threshold': '4'
}
AND compression = {
'chunk_length_in_kb': '64',
'class': 'org.apache.cassandra.io.compress.LZ4Compressor'
}
AND crc_check_chance = 1.0
AND dclocal_read_repair_chance = 0.1
AND default_time_to_live = 0
AND gc_grace_seconds = 864000
AND max_index_interval = 2048
AND memtable_flush_period_in_ms = 0
AND min_index_interval = 128
AND read_repair_chance = 0.0
AND speculative_retry = '99PERCENTILE';
CREATE TABLE app_data.user_data (
user_id uuid PRIMARY KEY,
address text,
name text
) WITH bloom_filter_fp_chance = 0.01
AND caching = {'keys': 'ALL', 'rows_per_partition': 'NONE'}
AND comment = ''
AND compaction = {
'class': 'org.apache.cassandra.db
.compaction.SizeTieredCompactionStrategy',
'max_threshold': '32', 'min_threshold': '4'}
AND compression = {
'chunk_length_in_kb': '64',
'class': 'org.apache.cassandra.io
.compress.LZ4Compressor'}
AND crc_check_chance = 1.0
AND dclocal_read_repair_chance = 0.1
AND default_time_to_live = 0
AND gc_grace_seconds = 864000
AND max_index_interval = 2048
AND memtable_flush_period_in_ms = 0
AND min_index_interval = 128
AND read_repair_chance = 0.0
AND speculative_retry = '99PERCENTILE';
示例:user_data 表架构
cassandra@cqlsh> describe app_data.user_data;
输出
CREATE TABLE app_data.user_data (
user_id uuid PRIMARY KEY,
address text,
name text
) WITH bloom_filter_fp_chance = 0.01
AND caching = {'keys': 'ALL', 'rows_per_partition': 'NONE'}
AND comment = ''
AND compaction =
{
'class': 'org.apache.cassandra
.db.compaction.SizeTieredCompactionStrategy',
'max_threshold': '32', 'min_threshold': '4'
}
AND compression = {
'chunk_length_in_kb': '64',
'class': 'org.apache.cassandra.io.compress.LZ4Compressor'
}
AND crc_check_chance = 1.0
AND dclocal_read_repair_chance = 0.1
AND default_time_to_live = 0
AND gc_grace_seconds = 864000
AND max_index_interval = 2048
AND memtable_flush_period_in_ms = 0
AND min_index_interval = 128
AND read_repair_chance = 0.0
AND speculative_retry = '99PERCENTILE';