About virtual keyspaces and tables

Provides details about virtual keyspaces and tables.

CASSANDRA-7622 introduced support for virtual keyspaces and virtual tables. Virtual tables are exposed by the server to the users as local tables. They are read-only, but can sometime can support updates. They do not support secondary indexes or materialized views. Virtual tables are always part of a virtual keyspaces. The two available virtual keyspaces are system_virtual_schema and system_views Virtual tables are not associated with physical files on disk, and have no memtables or SSTables. They are designed to expose server data such as configuration or metrics in memory.

system_virtual_schema keyspace

The system_virtual_schema contains the information about the existing virtual keyspaces and tables. It contains three virtual tables which expose the definitions of the named data object:
Table 1. keyspaces
Column name CQL type Column type
keyspace_name text partition key
Table 2. tables
Column name CQL type Column type
keyspace_name text partition key
table_name text clustering key
comment text regular
Table 3. columns
Column Name CQL Type Column type
keyspace_name text partition key
table_name text clustering key
column_name text clustering key
clustering_order text regular
column_name_bytes blob regular
position int regular
type text regular

system_views keyspace

System views expose information about the server internals. The sstable_tasks system view exposes the SSTable tasks that are currently running on the host:
Table 4. sstable_tasks
Column name CQL type Column type
keyspace_name text partition key
table_name text clustering key
task_id uuid clustering key
kind text regular
progress bigint regular
total bigint regular
unit text regular
Tip: The remaining amount of work can be computer using total - progress AS remaining in a SELECT clause.

Virtual tables and cqlsh

Virtual tables are exposed as local tables, so cqlsh will display data for the currently connected host. To displace schema for virtual tables, use DESCRIBE FULL SCHEMA to return schema for both the real keyspaces and the virtual ones.
Note: Users are not allowed to create virtual keyspaces or virtual tables.
To see the schema for the virtual table sstable_tasks, use:
DESCRIBE TABLE system_views.sstable_tasks;
/*
Warning: Table system_views.sstable_tasks is a virtual table and cannot be recreated with CQL.
Structure, for reference:
VIRTUAL TABLE system_views.sstable_tasks (
    keyspace_name text,
    table_name text,
    task_id uuid,
    kind text,
    progress bigint,
    total bigint,
    unit text,
    PRIMARY KEY (keyspace_name, table_name, task_id)
) WITH CLUSTERING ORDER BY (table_name ASC, task_id ASC)
    AND comment = 'current sstable tasks';
*/
To discover how much time is remaining for SSTable tasks, use the following query:
SELECT total - progress AS remaining
FROM system_views.sstable_tasks;