什么是虚拟表以及如何使用它们。在最近发布的ApacheCassandra4.0beta的众多新特性中,虚拟表是一个值得注意的特性。在以前的Cassandra版本中,用户需要访问JavaManagementExtensions(JMX)才能查看Cassandra的详细信息,例如正在运行的压缩、客户端、指标和各种配置设置。虚拟表消除了这些挑战。Cassandra4.0测试版使用户能够从只读系统表中以Cassandra查询语言(CQL)行的形式查询这些详细信息和数据。以下是基于JMX的机制在以前的Cassandra版本中的工作原理。想象一下,用户想要检查集群中某个节点的压缩状态。用户首先建立JMX连接并在节点上运行nodetoolcompactionstats。此要求立即给用户带来了一些复杂性。用户的客户端是否针对JMX访问进行了配置?Cassandra节点和防火墙是否配置为允许JMX访问?适当的安全和审计措施是否到位?这些只是用户在处理以前版本的Cassandra时不得不面对的一些问题。在Cassandra4.0中,虚拟表允许用户使用先前配置的驱动程序查询所需信息。此更改消除了与实施和维护JMX访问相关的所有开销。Cassandra4.0创建了两个新的keyspace键空间来帮助用户利用虚拟表:system_views和system_virtual_schema。system_views键空间包含用户查询的所有有价值的信息,有用地存储在一些表中。顾名思义,system_virtual_schema键空间存储了这些虚拟表的所有必要架构信息。system_views和system_virtual_schema键空间和表重要的是要了解每个虚拟表的范围仅限于其节点。任何虚拟表查询都会返回只对其协调器节点有效的数据,而不管一致性。为了简化此要求,已在多个驱动程序中添加支持以在这些查询中指定协调器节点(Python、DataStaxJava和其他现在提供此支持)。为了说明这一点,请查看此sstable_tasks虚拟表。这个虚拟表显示了对SSTables的所有操作,包括压缩、清理、升级等。如果用户在以前的Cassandra版本中运行nodetoolcompactionstats,则查询sstable_tasks虚拟表将显示相同类型的信息。在这里,查询发现该节点当前有一个活动的压缩。它还显示其进度及其键空间和表。多亏了虚拟表,用户可以快速并同样高效地收集这些信息,从而获得正确诊断集群健康状况所需的能力。应该注意的是,Cassandra4.0并没有消除对JMX访问的需求。JMX仍然是查询某些指标的唯一选择。尽管如此,用户还是会欢迎能够简单地使用CQL来获取关键集群指标的能力。由于虚拟表提供的便利性,用户可能会将之前投入到JMX工具中的时间和资源重新投入到Cassandra本身。客户端工具也应该开始利用虚拟表提供的优势。如果您对Cassandra4.0beta及其虚拟表功能感兴趣,请试一试。
