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