您當前的位置:首頁 > 文化

揭秘高效能分散式時序資料庫DolphinDB

作者:由 DolphinDB智臾科技 發表于 文化時間:2018-07-25

揭秘高效能分散式時序資料庫DolphinDB

DolphinDB是由浙江智臾科技有限公司自主研發,於2018年初發布的高效能的磁碟與記憶體混合型和列式分散式資料庫產品。DolphinDB集成了功能強大的程式語言和高容量高速度的流資料分析系統,為海量資料(特別是時間序列資料)的快速儲存、檢索、計算及分析提供一站式解決方案。

DolphinDB的主要競爭優勢體現在四個“快”:執行快、學習快、部署快和開發快。為什麼僅20多M的軟體能夠超越市場上的同類產品呢?本文將從DolphinDB的設計思路和技術架構兩方面來揭開謎底。

一、設計思路

DolphinDB採用全新的設計思路,把程式語言、資料庫和分散式計算完美地融合在一起。我們可以透過下面這張圖來更好地理解DolphinDB的設計思路。

揭秘高效能分散式時序資料庫DolphinDB

資料庫和分散式計算融合

在傳統資料庫時代,資料的儲存和分析計算,通常是分離的。Oracle和SQL Server等資料庫伺服器負責資料的儲存和檢索,Matlab和SAS等工作站軟體負責資料的分析和計算。但是隨著海量資料的到來,這種分離變得越來越困難,哪怕是從分散式資料庫取千分之一,萬分之一的資料都可能讓一個工作站的記憶體無法支撐。所以,我們的一個基本看法是,在海量資料時代,分散式資料庫和分散式計算將走向融合,資料和計算是緊密結合在一起的。透過這種融合,我們可以減少頻繁的資料移動以及解決資料和計算資源不匹配的問題。

程式語言和分散式計算融合

透過將程式語言和分散式計算融合,使用者無需花費大量時間和精力來編寫程式碼實現分散式計算。DolphinDB的指令碼語言既可以輕鬆地呼叫分散式檔案系統(DFS)和遠端過程呼叫(RPC)的基礎功能,也可以快速地建立分散式SQL需要的自定義函式,實現更為靈活的Pipeline、Map-Reduce和迭代計算等分散式應用。用DolphinDB指令碼編寫的分散式程式(應用),無需編譯、打包和部署,可以線上使用。這大大提高了資料科學家的工作效率。

資料庫和程式語言融合

在傳統的資料庫時代,我們更看重資料的寫入,所以我們強調資料庫的一致性、原子性、永續性等等,而用於分析的SQL語句功能則相對簡單,複雜的分析和計算通常由更高階的程式語言(譬如C++, Java等)來完成。在海量資料時代,我們更看重資料的讀取,也就是透過對海量資料的分析,發掘資料背後的價值,資料分析的時效性則對企業的競爭能力至關重要。現在很多大資料系統主要實現了SQL介面,表達能力有限,很難滿足更加複雜的資料分析和演算法實現,影響開發效率。所以我們認為SQL語句和更高階的程式語言也將走向融合。

二、技術架構

DolphinDB的高效能不僅僅得益於全新的設計思路,還獲益於獨特的技術架構。

DolphinDB database 採用的是原創的架構(下文稱為DolphinDB架構),並且引入了分散式檔案系統(DFS),而市場上的一些資料倉庫,如Teradata、IBM Netezza、Greenplum等都是採用主流的MPP(Massively Parallel Processing,大規模並行處理)架構的。

那麼DolphinDB架構和MPP架構有什麼區別呢?

透過下面兩張圖可以直觀地看出DolphinDB架構(左)和MPP架構(右)的區別。

揭秘高效能分散式時序資料庫DolphinDB

MPP架構是指一個系統擁有多個計算節點,每個節點都有獨立的記憶體、作業系統和儲存磁碟,它們之間是不存在共享的。因此,MPP架構也被稱為shared nothing架構。

DolphinDB架構擁有多個數據節點,但在資料庫層面不存在領導節點。每個資料節點雖然擁有本地的儲存裝置,資料節點與儲存是透過DFS進行互動的。

為什麼DolphinDB採用原創架構而不使用主流的MPP架構?

與MPP架構相比,DolphinDB架構具有以下的優勢:

資源得到充分利用

MPP採用樹狀結構,分割槽粒度較粗,容易出現數據分佈不均衡,或在使用者不飽和或查詢資料只存在部分節點時出現資源閒置。DolphinDB的資料節點透過DFS共享儲存,進行全域性最佳化,資料均勻地分佈在各節點上,能更充分的利用叢集資源。

查詢效率更高

MPP架構通常會將一個任務傳送到多個節點執行,即便在海量資料中查詢很小的一部分資料,也是如此。DolphinDB的分散式檔案系統和多列組合分割槽方案能夠支援單表千萬級的分割槽,能快速確定查詢相關的分割槽和所在的節點,提高了查詢的效率。

便於資料遷移和高可用

MPP是透過Hash計算來確定資料行所在的物理機器,儲存位置的不透明導致了MPP的資料遷移和高可用較難實現。在DolphinDB中,儲存邏輯與儲存位置分離。當儲存邏輯發生改變時,不需要改變資料的儲存位置,只需要修改DFS master中的元資料,修改節點指向的儲存位置即可。

擴充套件性高

當MPP叢集規模和業務資料量達到一定數量時,資料庫的元資料管理將會十分困難。一旦出錯,很難恢復。MPP架構一般只能擴充套件到100個節點。 DolphinDB採用類似HDFS這樣的分散式檔案系統,由name node統一管理元資料、,自動管理分割槽資料和副本,提高了容錯性和可擴充套件性。DolphinDB可以擴充套件到更多的節點。

實現負載均衡

MPP架構中客戶端透過領導節點與叢集連線。領導節點除了負責網路通訊之外,還負責將各個節點返回的資料合併,並作進一步處理,很容易成為整個系統的瓶頸。DolphinDB在資料庫層面採用點對點的架構,每一個數據節點都可以作為協調者與客戶端連線,因此DolphinDB很容易實現負載均衡。

三、總結

DolphinDB全新的設計思路和獨特技術架構決定了它的高效能。DolphinDB不僅適用於大規模結構化資料快速入庫和即席查詢,還特別適用於時間序列資料以及實時流資料的處理和分析。

官網:www。dolphindb。cn

電話:0571- 8285 3925

郵箱:media@dolphindb。com

標簽: DolphinDB  架構  資料  MPP  節點