CK介紹
CK是目前社群裡面比較熱門的,應用場景也比較廣泛。
首先,在架構上,叢集內劃分為多個分片,通過分片的線性擴充套件能力,支援海量資料的分散式儲存計算,每個分片內包含一定數量的節點Node,即程式,Node之間互為副本,通過ZooKeeper進行資料同步。
其次,CK的資料模型主要使用MergeTree表引擎——一種LSM Tree的實現,同時支援分散式表,寫入時進行資料轉發,讀取時進行資料收集。
再者,在儲存上,CK採用了列存、分割槽、資料排序和分塊、主鍵索引等方式。最後,在計算上,CK採用向量化執行方式,利用SIMD指令加速。
儲存引擎
在儲存引擎上來看,TDSQL-A和CK各有自己鮮明的特點。
TDSQL-A採用的是典型的列存設計,功能完備,包括完整的事務能力,同時還設計一些特殊的優化來加速資料讀寫操作。
SQL引擎
在SQL引擎上,TDSQL-A繼承了PG原生的SQL能力,SQL完備且相容性好,支援多表關聯、儲存過程等複雜查詢,另外TDSQL-A在分散式架構上對優化器和執行器具有很多優化。我們也在分散式架構上做了一些併發器和執行器的優化,左圖實際上就是分散式的一個重要例子。
CK也具有出色的向量化執行引擎,特別是在AGG計算中,針對不同資料型別設計不同的資料結構和演算法,將CPU和記憶體能力發揮到極致。右圖中列了一下針對於Hash AGG計算設計的不同資料結構。
對比
整體來看,TDSQL-A相比於CK,在SQL能力、事務能力、優化器能力、分散式管控能力以及高可用能力上具有優勢,而CK則在計算引擎執行效率上表現突出。
TDSQL-A受惠於PG社群的長期積累,同時經過我們團隊長時間的功能增強、效能優化以及在多個應用領域的實踐,已經具備了全面和強大的能力,可以提供企業級一站式解決方案,可以把事務、高可用以及部分業務邏輯放到資料庫中來處理,大大降低業務的複雜程度。我們也將繼續與PG社群、CK社群等優秀開源社群保持緊密聯絡,吸收改進新的發展技術和研究成果,不斷地提高TDSQL-A的能力並開放給我們的使用者。