Scylla Open Source 3.0 釋出, NoSQL 資料庫
開源 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 通過擴充套件有狀態分頁以支援範圍掃描,在新版本中加入了新的控制演算法,加速從所有分片讀取範圍中的所有資料,這些分片快取了分片上的中介串流,並將分頁查詢引導到先前使用的配對快取結果上。簡單來說,新演算法的本質是一個多工器,在分片上結合讀取器輸出到單一串流中。