如何在Apache Cassandra 4.0中使用虛擬表
虛擬表是什么以及如何使用。
在最近的發(fā)布的 Apache Cassandra 4.0 測試版中的眾多新增功能中,虛擬表是一個值得關注的功能。
在以前的 Cassandra 版本中,用戶需要訪問 Java 管理擴展(JMX) 來查看 Cassandra 的細節(jié),如運行中的壓實、客戶端、度量和各種配置設置。虛擬表消除了這些挑戰(zhàn)。Cassandra 4.0 測試版讓用戶能夠從一個只讀的系統(tǒng)表中以 Cassandra 查詢語言(CQL)行的形式查詢這些細節(jié)和數(shù)據(jù)。
以下是之前 Cassandra 版本中基于 JMX 的機制是如何工作的。想象一下,一個用戶想要檢查集群中某個節(jié)點的壓實狀態(tài)。用戶首先要建立一個 JMX 連接,在節(jié)點上運行 nodetool compactionstats
。這個要求馬上就給用戶帶來了一些復雜的問題。用戶的客戶端是否配置了 JMX 訪問?Cassandra 節(jié)點和防火墻是否配置為允許 JMX 訪問?是否準備好了適當?shù)陌踩蛯徲嫶胧?,并落實到位?這些只是用戶在處理 Cassandra 以前版本時必須面對的其中一些問題。
在 Cassandra 4.0 中,虛擬表使得用戶可以利用之前配置的驅動來查詢所需信息。這一變化消除了與實現(xiàn)和維護 JMX 訪問相關的所有開銷。
Cassandra 4.0 創(chuàng)建了兩個新的鍵空間來幫助用戶利用虛擬表:system_views
和 system_virtual_schema
。system_views
鍵空間包含了用戶查詢的所有有價值的信息,有用地存儲在一些表中。system_virtual_schema
鍵空間,顧名思義,存儲了這些虛擬表的所有必要的模式信息。
system_views and system_virtual_schema keyspaces and tables
重要的是要明白,每個虛擬表的范圍僅限于其節(jié)點。任何虛擬表查詢都將返回的數(shù)據(jù),只對其協(xié)調器的節(jié)點有效,而不管一致性如何。為了簡化這一要求,已經(jīng)在幾個驅動中添加了支持,以便在這些查詢中指定協(xié)調器節(jié)點 (Python、DataStax Java 和其他驅動現(xiàn)在提供了這種支持)。
為了說明這一點,請查看這個 sstable_tasks
虛擬表。這個虛擬表顯示了對 SSTables 的所有操作,包括壓實、清理、升級等。
Querying the sstable_tasks virtual table
如果用戶在以前的 Cassandra 版本中運行 nodetool compactionstats
,則會顯示相同類型的信息。 在這里,這個查詢發(fā)現(xiàn)該節(jié)點當前有一個活動的壓縮。它還顯示了它的進度以及它的鍵空間和表。得益于虛擬表,用戶可以快速收集這些信息,并同樣有效地獲得正確診斷集群健康狀況所需的能力。
需要說明的是,Cassandra 4.0 并沒有去除對 JMX 訪問的需求。JMX 仍然是查詢某些指標的唯一選擇。盡管如此,用戶會歡迎簡單地使用 CQL 來獲取關鍵集群指標的能力。由于虛擬表提供的便利,用戶可能會將之前投入到 JMX 工具的時間和資源重新投入到 Cassandra 本身。客戶端工具也應該開始利用虛擬表提供的優(yōu)勢。
如果你對 Cassandra 4.0 測試版及其虛擬表功能感興趣,請試試試它。