用Rust 實現的現代化實時開源資料倉儲
TensorBase 是使用 Rust 實現的現代化實時開源資料倉儲。
All in Rust。TensorBase 稱已經在日常測試中經歷數十 TB 的資料注入錘鍊,是目前 Rust 社群中,面向使用者特別是中小企業實際場景深度最佳化的、生產完成度最高的通用資料倉儲類專案。
開箱即用。TensorBase 已經支援從資料插入或匯入到查詢完整資料倉儲流程,具備了較高的早期完成度,使用者可以從 TensorBase 的 Release 頁下載相關
環境下的二進位制檔案,進行嘗試。(Windows 10 的 WSL2 目前應該也可以使用)
相容 ClickHouse 協議。ClickHouse 是一個 C++ 編寫的資料倉儲。TensorBase 則使用 Rust 語言從頭開始實現了一個高效能的 ClickHouse SQL 方言解析器和 TCP 通訊協議棧。ClickHouse TCP 客戶端可以無縫連線 TensorBase。
效能為先。TensorBase 期望透過新的軟體和系統設計將現代硬體的所有潛力發揮出來。TensorBase 首次在核心鏈路程式碼上實現了 “F4”:Copy-free,Lock-free,Async-free,Dyn-free(無動態物件分發)。初步的效能評估顯示:在 14.7 億行的紐約計程車資料集上,TensorBase 的簡單查詢的效能上已經領先 ClickHouse。
化繁為簡。目前的大資料系統使用非常複雜,即使想執行一個最簡單的系統,都需要配置大量難以理解的引數或者安裝大量第三方依賴。
對於使用者,除了現在已經達成的開箱即用,TensorBase 希望系統在執行時能在自治執行,而不是依賴運維管理員。
對於開發者,TensorBase 希望將貢獻門檻降低。整個專案架構設計簡潔高效(更多資訊參見後文),專案外依賴很少,完全重新編譯(cargo clean 到 cargo build)的單機時間在 1 分鐘之內。(大資料系統或者 C++ 資料庫的完整構建時間往往以小時計。)
互聯未來。TensorBase 在核心上改造了 Apache Arrow 和 DataFusion,無縫支援 Arrow 格式查詢、分析和傳輸。Arrow 格式作為越來越廣泛採用的大資料交換中間格式,已經被多個資料庫及大資料生態平臺所支援。TensorBase 在引擎上相容 Arrow,未來可以同時支援雲原生和雲中立場景下的資料倉儲體驗,提供儲存中立的資料湖服務。
- Base Server
- TensorBase 服務介面層。對外提供資料的介面服務,比如資料的寫入和查詢入口。TensorBase 創造性的實現了世界上第一個非 C++ 的 ClickHouse TCP 協議服務棧,可以支援 ClickHouse 客戶端(clickhouse-client 行)以及 native 協議語言驅動的直接連線。同時,Base Server 是第一個 async 中立的 Rust 高效能伺服器。Base Server 基於改造的 Actix 事件迴圈,在服務的實現中完全不使用 async,在提供絕佳的可除錯性的同時,評測效能也大幅超過基於 tokio 預設 async 表達層的實現。未來可以引入非 tokio 的網路 io 層實現。
- Base Meta/Runtime/Storage
- TensorBase 的後設資料層、執行時層和儲存層。在儲存層,TensorBase 非經典的列式儲存。這其中最重要的,我們給出了一個反重力設計:No LSM。我們不再使用在目前開源資料庫及大資料平臺流行的 LSM Tree(Log Structured Merge Tree)資料結構。而是使用一種我們自己稱之為 Partition Tree 的資料結構,資料直接寫入分割槽檔案,在保持 append only 寫入效能的同時,避免了 LSM 結構的後續 compact 開銷。得益於現代 Linux 核心的支援和巧妙的寫入設計,我們在使用者態(User-space)核心讀寫鏈路上不使用任何鎖(Lock-free),最大程度的發揮了高併發網路服務層所提供的能力,可以提供超高速資料寫入服務。
- Base Engine
- TensorBase 的引擎層。TensorBase 使用改造過的 Apache Arrow 和 DataFusion,並創造性的將底層儲存適配到 Arrow 格式,實現了 Zero Copy 的資料查詢。當然,目前的適配性儲存策略,還只算是一個現在進行中的次優解,TensorBase 未來會對儲存層進行持續迭代,提供更多與時俱進的最佳化。同時,TensorBase 也將進一步地最佳化幫助 Arrow/DataFusion 社群最佳化其查詢引擎的效能,和社群一起成長。
- 其他
- TensorBase 還有一些基礎性的元件,比如:
- base,通用工具庫;
- lang,語言層(目前主要實現一個 ClickHouse 相容解析和表示層)。
- lightjit,類表示式 JIT 引擎,未來可擴充套件至高效能和安全可控的使用者定義函式 UDF(User Defined Functions)層。 TensorBase 未來將進一步開發和開放自己的高效能基礎件,為 Rust 社群貢獻一些獨特的高效能可複用基礎設施。
注意,架構圖中的虛線連線尚未實現,這是一個全景式的架構藍圖。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69901823/viewspace-2933955/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 現代資料棧是如何走向實時化的?
- 用Rust編寫的資料庫GreptimeDB現開源Rust資料庫
- 實現資料管理現代化的 7 個技巧
- Oracle資料倉儲的實時資料採集XSOracle
- 一個簡化、落地的實時資料倉儲解決方案
- 實時化與Serverless是開源大資料3.0時代的必然選擇Server大資料
- 到底什麼是實時資料倉儲?
- 資料倉儲應該用什麼方案——資料倉儲實施方案概述
- 《Greenplum構建實時資料倉儲實踐》簡介
- rnacos——用rust重新實現的nacos開源配置、註冊中心服務Rust
- 用Rust實現單例Rust單例
- 用 Rust 實現佇列Rust佇列
- DataLeap資料資產實戰:如何實現儲存最佳化?
- 大資料時代,資料倉儲究竟是幹嘛的?大資料
- 構建實時資料倉儲首選,雲原生資料倉儲AnalyticDB for MySQL技術解密MySql解密
- 人力資源實現智慧化的原因
- 菜鳥雙11在「倉儲配送資料實時化」的臺前幕後
- 如何實現企業雲盤資料化儲存
- 深入分析大資料時代中的資料倉儲技術大資料
- PayPal如何將Teradata資料倉儲遷移到BigQuery實現產品分析
- 實現MySQL資料庫的實時備份MySql資料庫
- 開源分散式支援超大規模資料分析型資料倉儲Apache Kylin實踐-上分散式Apache
- 開源分散式支援超大規模資料分析型資料倉儲Apache Kylin實踐-下分散式Apache
- 機器視覺技術在現代倉儲物流的應用視覺
- php中實現資料儲存在excelPHPExcel
- Rust實現hotkeyRust
- Rust中實現使用者上傳功能的開源專案Rust
- 異地資料中心的資料實時同步,該怎樣智慧化實現?
- PLC實時資料採集如何實現?
- 企業如何借實時湖倉贏在“資料制勝”時代?
- Filecoin分散式儲存,能否實現區塊鏈3.0時代?分散式區塊鏈
- 資料重整:用Java實現精準Excel資料排序的實用策略JavaExcel排序
- 實現多資料來源事務
- Rust 程式設計,用 vector 實現棧Rust程式設計
- 實現報表資料分庫儲存
- MySQL如何實現萬億級資料儲存?MySql
- 資料架構變革進行時:現代化應用需要怎樣的資料策略?架構
- 馬蜂窩資料倉儲的架構、模型與應用實踐架構模型