揭祕高性能DolphinDB

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

DolphinDB的主要競爭優點體如今四個「快」:運行快、學習快、部署快和開發快。爲何僅20多M的軟件可以超越市場上的同類產品呢?本文將從DolphinDB的設計思路和技術架構兩方面來揭開謎底。算法

1、設計思路數據庫

DolphinDB採用全新的設計思路,把編程語言、數據庫和分佈式計算完美地融合在一塊兒。咱們能夠經過下面這張圖來更好地理解DolphinDB的設計思路。編程

  • 數據庫和分佈式計算融合

在傳統數據庫時代,數據的存儲和分析計算,一般是分離的。Oracle和SQL Server等數據庫服務器負責數據的存儲和檢索,Matlab和SAS等工做站軟件負責數據的分析和計算。可是隨着海量數據的到來,這種分離變得愈來愈困難,哪怕是從分佈式數據庫取千分之一,萬分之一的數據均可能讓一個工做站的內存沒法支撐。因此,咱們的一個基本見解是,在海量數據時代,分佈式數據庫和分佈式計算將走向融合,數據和計算是緊密結合在一塊兒的。經過這種融合,咱們能夠減小頻繁的數據移動以及解決數據和計算資源不匹配的問題。服務器

  • 編程語言和分佈式計算融合

經過將編程語言和分佈式計算融合,用戶無需花費大量時間和精力來編寫代碼實現分佈式計算。DolphinDB的腳本語言既能夠輕鬆地調用分佈式文件系統(DFS)和遠程過程調用(RPC)的基礎功能,也能夠快速地建立分佈式SQL須要的自定義函數,實現更爲靈活的Pipeline、Map-Reduce和迭代計算等分佈式應用。用DolphinDB腳本編寫的分佈式程序(應用),無需編譯、打包和部署,能夠在線使用。這大大提升了數據科學家的工做效率。網絡

  • 數據庫和編程語言融合

在傳統的數據庫時代,咱們更看重數據的寫入,因此咱們強調數據庫的一致性、原子性、持久性等等,而用於分析的SQL語句功能則相對簡單,複雜的分析和計算一般由更高級的編程語言(譬如C++, Java等)來完成。在海量數據時代,咱們更看重數據的讀取,也就是經過對海量數據的分析,發掘數據背後的價值,數據分析的時效性則對企業的競爭能力相當重要。如今不少大數據系統主要實現了SQL接口,表達能力有限,很難知足更加複雜的數據分析和算法實現,影響開發效率。因此咱們認爲SQL語句和更高級的編程語言也將走向融合。架構

2、技術架構負載均衡

DolphinDB的高性能不只僅得益於全新的設計思路,還獲益於獨特的技術架構。編程語言

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

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

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

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很容易實現負載均衡。

3、總結

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

官網:www.dolphindb.cn

電話:0571- 8285 3925

郵箱:media@dolphindb.com

相關文章
相關標籤/搜索