【列式数据库】利用Apache Cassandra 4.0中的虚拟表
多亏了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
- Virtual Tables | Apache Cassandra Documentation
- CASSANDRA-7622 — Implement virtual tables
- Arithmetic Operators in Apache Cassandra 4.0
- Deploy Apache Cassandra 4.0 on Kubernetes and AWS
- 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…
本文
- 23 次浏览