開源NoSQL資料庫Scylla Open Source釋出第3個主要版本更新,這個版本提高了查詢效率並減少儲存的容量需求,盡可能降低維修時間,同時也還加強了整體資料庫的執行效率,官方表示,Scylla是目前效能最高的NoSQL資料庫,包括部署於生產環境的Apache Cassandra都不是對手。

2015年發展至今,以C++從頭打造的開源NoSQL資料庫Scylla,其基礎設計與Apache Cassandra資料庫相容,並提供相同的橫向擴展和容錯能力,但官方提到,其吞吐量可以是Apache Cassandra的10倍,並維持一致且個位數毫秒的延遲時間。

Scylla Open Source 3.0加入了物化檢視(Materialized Views)功能,將不同磁區找尋資料的複雜性,從應用程式移到伺服器上,因此實作將會更快也更可靠,這個方法讓應用程式更容易對資料進行多重檢視。物化檢視讓應用程式只需要宣告額外的檢視,Scylla會產生新的檢視表格,並且在每一次更新基礎表格(Base table)時,檢視表格也會隨之自動更新,寫入動作僅直接發生在基礎表格上,而讀取動作則是對檢視表格。官方提到,一如往常的Scylla與Apache Cassandra版本相容,包括這項功能更新與CQL語法。

另外,Scylla Open Source 3.0也新增了已可用於生產的全域輔助索引(Global Secondary Indexes)功能,能夠擴展至任何大小的分散式叢集。全域輔助索引利用低階的物化檢視索引,以使索引不相依於叢集節點數。而輔助索引對大部分應用程式來說是可見的,因此查詢能夠存取表格中的所有欄位,使用者可以在不更改應用程式的情況下,新增或是刪除索引。

輔助索引能夠比物化檢視索引花費較少的儲存成本,因為輔助索引只要複製索引的欄位與主鍵值,而不像是物化檢視索引必須複製查詢的欄位,因此同樣的,輔助索引也能夠更高效能地執行更新,因為唯有主鍵值和索引列欄位的改變,才能觸發索引檢視中的更新。

官方提到,輔助索引或物化檢視的使用時機,取決於應用程式的需求,當開發者要求高效能並且需要對特定欄位集進行查詢,則需要使用物化檢視。然而,如果應用程式需要查詢不同的欄位集,輔助索引就會是更好的選擇,因為可以根據應用程式的需求,以較少的儲存成本移除和增加查詢索引。

這個版本還支援了新的高效能儲存格式SSTable,該格式與Apache Cassandra 3.x相容,同時也與先前Scylla版本向後相容,而且少掉了複製作業中不需要的重複資料,能最多減少3倍儲存容量。官方提到,新部署的Scylla Open Source 3.0資料庫將自動使用新格式,而既存檔案不受影響。

另外,Hinted Handoff功能則可以幫助節點因大量寫入負載、硬體故障或是任何因素造成暫時無法回應的情況,當發生短暫網路問題或是節點重啟的時候,Hinted Handoff將能幫助減少系統修復的時間,進而提升分散式部署的整體效能。

官方解釋,提示(Hint)代表著寫入請求的紀錄,這分紀錄會由協調器留存,直到故障節點再次連上線。而且當寫入成功但一個或多個副本皆無法確認的時候,Scylla會也會產生一個提示,在這些節點恢復時,重新寫入資料。這個功能在Scylla Open Source 2.1中屬實驗性質,而在Scylla Open Source 3.0終於正式加入了。

在整體執行效能方面,Scylla Open Source 3.0也改進了多重磁區掃描,Scylla透過擴展有狀態分頁以支援範圍掃描,在新版本中加入了新的控制演算法,加速從所有分片讀取範圍中的所有資料,這些分片快取了分片上的中介串流,並將分頁查詢引導到先前使用的配對快取結果上。簡單來說,新演算法的本質是一個多工器,在分片上結合讀取器輸出到單一串流中。


Advertisement

更多 iThome相關內容