跳转到主要内容
Chinese, Simplified

多亏了CASSANDRA-7622,Apache CASSANDRA 4.0有了一个名为“虚拟表”的新功能在本文中,我们将讨论虚拟表、它们在Apache Cassandra 4.0中的实现,以及如何使用它们来提高集群的可观察性。

虚拟表本质上是位于API之上的表接口,而不是存储在磁盘上的数据。它们可以在数据库级别进行交互,但不支持“普通”表所具有的所有功能。Cassandra中的虚拟表不能写入、更改、删除或截断,也不能支持其他索引、函数或物化视图。

此外,虚拟表只能存在于虚拟键空间中。虚拟键空间是由Cassandra管理的特殊键空间。它们不是复制的,只针对本地节点。

Apache Cassandra 4.0安装了两个虚拟密钥空间:

  • System_virtual_schema:包含所有虚拟表和键空间(包括其本身)的模式数据
  • System_views:Cassandra中唯一真实的虚拟键空间

那么你能用它们做什么呢?

在当前的迭代中,虚拟表大大简化了管理和监视Apache Cassandra所需的工具。访问度量一直是通过Java管理扩展(JMX)实现的,但对于虚拟表,这些度量中的许多现在通过虚拟表公开。

以下是system_views键空间中包含的虚拟表列表:

让我们来看一些简单的例子。

设置

你是否曾经在一个讨论论坛上为一个集群在线解决问题,结果却被问到:“你的压缩吞吐量是多少?”或者,“你使用了多少memtable_flush_编写器?”

之前,你必须检查卡桑德拉。该节点上的yaml文件——假设您有权访问它。现在,您可以简单地查询它:

> SELECT * FROM settings
  WHERE name='compaction_throughput_mb_per_sec';

 name                             | value
----------------------------------+-------
 compaction_throughput_mb_per_sec |    64

(1 rows)

> SELECT * FROM settings
  WHERE name='memtable_flush_writers';

 name                   | value
------------------------+-------
 memtable_flush_writers |     2

(1 rows)

正如您所见,使用Cassandra查询配置参数从来都不容易!

系统属性

相关的系统属性也通过虚拟表公开。当您的企业安全团队发现安全漏洞并需要了解节点的Java运行时环境(JRE)时,这一点非常有用:

> SELECT * FROM system_properties
  WHERE name IN ('java.vm.name','java.version');

 name         | value
--------------+--------------------------
 java.version |                  11.0.10
 java.vm.name | OpenJDK 64-Bit Server VM

 

请注意,由于虚拟表仅特定于本地节点,因此使用IN-CQL操作符不会产生性能问题。

类似地,如果您正在处理一个新集群,并且想知道日志写入的位置,可以使用:

> SELECT * FROM system_properties
  WHERE name='cassandra.logdir';

 name             | value
------------------+-------------
 cassandra.logdir | bin/../logs

这样,您可以快速查看Cassandra的相关系统属性。以前,获取此信息的唯一窗口是通过SSH(Secure Shell)连接上运行的命令。

节点性能指标

在Apache Cassandra 4.0之前,您只能通过JMX接口访问性能指标。但通过虚拟表,您可以看到集群中特定节点的性能。

假设你想了解更多关于跟踪“书呆子假期”的表格的阅读模式该数据存储在rows_per_read表中,您可以按键空间和表名查询它:

> SELECT * FROM rows_per_read
  WHERE keyspace_name='datastax'
  AND table_name='nerd_holidays';

 keyspace_name | table_name    | count | max | p50th | p99th
---------------+---------------+-------+-----+-------+-------
      datastax | nerd_holidays |     6 |  24 |    14 |    24

或者,您希望查看此节点的密钥缓存统计信息:

 

> SELECT * FROM caches
  WHERE name='keys';

 name | capacity_bytes | entry_count | hit_count | hit_ratio | recent_hit_rate_per_second | recent_request_rate_per_second | request_count | size_bytes
------+----------------+-------------+-----------+-----------+----------------------------+--------------------------------+---------------+------------
 keys |      104857600 |          65 |       311 |  0.827128 |                          0 |                              0 |           376 |       6488
 

这提供了一种使用Cassandra查看性能指标的简单方法。与使用附加工具(如JConsole或JMXTerm)直接与JVM交互相比,这是一个巨大的改进。

图1。通过JMXTerm与Apache Cassandra交互。有人真的错过了这样做吗?

总结

虚拟桌子是Cassandra的一个受欢迎的补充。能够通过cqlsh以编程方式访问配置属性、系统变量和度量是一个巨大的时间节省。通过这种方法,您可以大大简化对有价值的可观测数据的访问。

最后,以下是关键要点:

  • 虚拟表是查看单个节点数据的快速方法
  • 无需访问cassandra即可验证配置属性。yaml文件
  • 与Cassandra相关的系统属性可以在没有SSH连接的情况下进行验证
  • 现在可以不用JMX查询许多指标

关注媒体上的DataStax,获取有关所有内容Cassandra、流媒体、Kubernetes等的独家帖子。要加入一个由来自世界各地的开发人员组成的繁忙社区,并留在数据循环中,请关注Twitter和LinkedIn上的DataStaxDev。

 

Resources

  1. Virtual Tables | Apache Cassandra Documentation
  2. CASSANDRA-7622 — Implement virtual tables
  3. Arithmetic Operators in Apache Cassandra 4.0
  4. Deploy Apache Cassandra 4.0 on Kubernetes and AWS
  5. 3 Things You Should Know About Data Consistency, Distribution, and Replication with Apache Cassandra

原文:https://medium.com/building-the-open-data-stack/leveraging-virtual-tabl…

本文

Tags
 
Article
知识星球
 
微信公众号
 
视频号