cassandra-pr mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From GitBox <...@apache.org>
Subject [GitHub] [cassandra] clohfink commented on a change in pull request #402: New/virtualtables
Date Fri, 14 Feb 2020 16:26:32 GMT
clohfink commented on a change in pull request #402: New/virtualtables
URL: https://github.com/apache/cassandra/pull/402#discussion_r379509776
 
 

 ##########
 File path: doc/source/new/virtualtables.rst
 ##########
 @@ -0,0 +1,586 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+Virtual Tables
+--------------
+
+Apache Cassandra 4.0 implements virtual tables (`CASSANDRA-7622
+<https://issues.apache.org/jira/browse/CASSANDRA-7622>`_).
+
+Definition
+^^^^^^^^^^
+
+A virtual table is a table that is backed by an API instead of data explicitly managed and
stored as SSTables. Apache Cassandra 4.0 implements a virtual keyspace interface for virtual
tables. Virtual tables are specific to each node. 
+
+Objective
+^^^^^^^^^
+
+A virtual table could have several uses including:
+
+- Expose JMX data/metrics through CQL
+- Expose YAML configuration information
+- Expose other MBean data
+ 
+How  are Virtual Tables different from regular tables?
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Virtual tables and virtual keyspaces are quite different from regular tables and keyspaces
respectively such as:
+
+- Virtual tables are read-only 
+- Virtual tables are not replicated
+- Virtual tables have no associated SSTables
+- Consistency level of the queries sent virtual tables are ignored
+- Virtual tables are managed by Cassandra and a user cannot run  DDL to create new virtual
tables or DML to modify existing virtual tables
+- Virtual tables are created in special keyspaces and not just any keyspace
+- All existing virtual tables use LocalPartitioner
+
+Virtual Keyspaces
+^^^^^^^^^^^^^^^^^
+
+Apache Cassandra 4.0 has added two new keyspaces for virtual tables: ``system_virtual_schema``
and ``system_views``. Run the following command to list the keyspaces.
+
+::
+
+ cqlsh> DESC KEYSPACES;
+ system_schema  system       system_distributed  system_virtual_schema
+ system_auth      system_traces       system_views
+
+The ``system_virtual_schema keyspace`` contains schema information on virtual tables. The
``system_views`` keyspace contains the actual virtual tables. The virtual keyspaces metadata
is not exposed through ``DESCRIBE`` statement, which returns an error message:
+
+::
+
+ cqlsh> DESCRIBE KEYSPACE system_views
+ 'NoneType' object has no attribute 'export_for_schema'
+ cqlsh> DESCRIBE KEYSPACE system_virtual_schema;
+ 'NoneType' object has no attribute 'export_for_schema'
+ cqlsh>
+
+Virtual Table Limitations
+^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Virtual tables and virtual keyspaces have some limitations such as:
+
+- Cannot alter virtual keyspaces
+- Cannot drop virtual keyspaces
+- Cannot alter virtual tables
+- Cannot drop virtual tables
+- Cannot truncate virtual tables
+- Expiring columns are not supported by virtual tables
+- Conditional updates are not supported by virtual tables
+- Cannot create tables in virtual keyspaces
+- Cannot perform any operations against virtual keyspace
+- Secondary indexes are not supported on virtual tables
+- Cannot create functions in virtual keyspaces
+- Cannot create types in virtual keyspaces
+- Materialized views are not supported on virtual tables
+- Virtual tables don't support DELETE statements
+- Cannot CREATE TRIGGER against a virtual table
+- Conditional BATCH statements cannot include mutations for virtual tables
+- Cannot include a virtual table statement in a logged batch
+- Mutations for virtual and regular tables cannot exist in the same batch
+- Conditional BATCH statements cannot include mutations for virtual tables
+- Cannot create aggregates in virtual keyspaces
+
+Listing and Describing Virtual Tables
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Virtual tables in a virtual keyspace may however be listed with ``DESC TABLES``.  The ``system_views``
virtual keyspace tables include the following:
+
+::
+
+ cqlsh> USE system_views;
+ cqlsh:system_views> DESC TABLES;
+   clients    internode_inbound
+ disk_usage       sstable_tasks        caches           
+ local_writes        max_partition_size  local_reads       
+ coordinator_writes  internode_outbound  thread_pools      
+ local_scans         coordinator_reads   settings 
+
+Some of the salient virtual tables in system_views virtual keyspace are described in Table
1.
+
+Table 1 : Virtual Tables in system_views
+
++------------------+---------------------------------------------------+
+|Virtual Table     | Description                                       | 
++------------------+---------------------------------------------------+
+| clients          |Lists information about all connected clients.     |           
++------------------+---------------------------------------------------+
+| disk_usage       |Disk usage including disk_space, keyspace_name,    |
+|                  |and table_name by system keyspaces.                |
++------------------+---------------------------------------------------+
+| local_writes     |A table metric for local writes                    |
+|                  |including count, keyspace_name,                    | 
+|                  |max, median, per_second, and                       |
+|                  |table_name.                                        |                
                                                        
++------------------+---------------------------------------------------+
+| caches           |Displays the general cache information including   |
+|                  |cache name, capacity_bytes, entry_count, hit_count,| 
+|                  |hit_ratio double, recent_hit_rate_per_second,      |
+|                  |recent_request_rate_per_second, request_count, and | 
+|                  |size_bytes.                                        |                
                                                        
++------------------+---------------------------------------------------+
+| local_reads      |A table metric for  local reads information.       |                
                                                  
++------------------+---------------------------------------------------+
+| sstable_tasks    |Lists currently running tasks such as compactions  |
+|                  |and upgrades on SSTables.                          |
++------------------+---------------------------------------------------+
+|internode_inbound |Lists information about the inbound                | 
+|                  |internode messaging.                               |                
++------------------+---------------------------------------------------+
+| thread_pools     |Lists metrics for each thread pool.                |                
                                                       
++------------------+---------------------------------------------------+
+| settings         |Displays configuration settings in cassandra.yaml. |                
                                                        
++------------------+---------------------------------------------------+
+|max_partition_size|A table metric for maximum partition size.         |                
                                                      
++------------------+---------------------------------------------------+
+|internode_outbound|Information about the outbound internode messaging.|
+|                  |                                                   |                
                         
++------------------+---------------------------------------------------+
+ 
+We shall discuss some of the virtual tables in more detail next.
+
+Clients Virtual Table
+*********************
+
+The ``clients`` virtual table lists all active connections (connected clients) including
their ip address, port, connection stage, driver name, driver version, hostname, protocol
version, request count, ssl enabled, ssl protocol and user name. A query on the ``clients``
table returns the following details.
 
 Review comment:
   Instead of just listing what these virtual tables are, I think it would be real valuable
to list _why_ you would want to look at them. for example this can be used for finding applications
using old incompatible versions of drivers before upgrading and with nodetool enableoldprotocolversions
and nodetool
   disableoldprotocolversions during upgrades. It can also be used to identify misbehaving
clients sending too many requests or during the migration to and from ssl.

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services

---------------------------------------------------------------------
To unsubscribe, e-mail: pr-unsubscribe@cassandra.apache.org
For additional commands, e-mail: pr-help@cassandra.apache.org


Mime
View raw message