天天看點

openGemini核心源碼正式對外開源

摘要:openGemini是一個開源的分布式時序資料庫系統,可廣泛應用于物聯網、車聯網、運維監控、工業網際網路等業務場景,具備卓越的讀寫性能和高效的資料分析能力。

本文分享自華為雲社群《​​華為雲面向全球正式開放openGemini核心源碼​​》,作者: 雲資料庫創新Lab。

一、背景介紹

物聯網時代已經來臨,物聯網裝置走進我們的日常生活,例如智能冰箱、電動汽車、智能手表等等。公開報告顯示,預計到2025年,中國的物聯網連接配接數會占到全球的30%。這些聯網的裝置每時每刻都在産生大量的資料,每天的資料增長量可以達到GB級甚至TB級,給資料庫帶來非常大的挑戰,例如:高并發寫入大量資料導緻資料入庫太慢,海量資料引起過高的存儲成本和查詢時延等等。時序場景作為物聯網領域的典型場景,與傳統關系型資料庫場景有很大差別,時序資料庫專為時序場景設計和優化,近年來開始受到越來越多的關注。

華為雲整合産業和技術優勢,打造了業界領先的企業級時序資料庫GaussDB for Influx,并經過外部公有雲業務服務化的錘煉以及内部DevOps等業務的長時間打磨,在大規模叢集、高性能查詢、分級壓縮存儲等方面都有明顯優勢。今年6月,華為雲宣布将GaussDB for Influx核心正式對外開源,開源品牌命名為openGemini。

openGemini是一個開源的分布式時序資料庫系統,可廣泛應用于物聯網、車聯網、運維監控、工業網際網路等業務場景,具備卓越的讀寫性能和高效的資料分析能力。

二、openGemini軟體架構

2.1架構設計

openGemini核心源碼正式對外開源

openGemini采用MPP 大規模并行處理分層架構,由ts-sql(計算引擎)、ts-store(存儲引擎)、ts-meta(中繼資料引擎)三大部分組成。openGemini既支援叢集部署,也可以單機部署。

ts-sql:統一處理用戶端請求

  • 提供RESTful接口
  • 相容InfluxDB Line Protocol和v1 API,同時也支援Prometheus的遠端資料讀寫
  • 查詢語句執行期間,從ts-store擷取資料并彙總,并傳回用戶端
  • 支援橫向擴充

ts-store:資料管理

  • 将原始資料按優化設計的資料格式進行統一組織和存儲
  • 按時間範圍和時間線ID查詢資料
  • 支援橫向擴充

ts-meta:中繼資料管理

  • 資料庫叢集中繼資料管理,如節點資訊等
  • 資料庫中繼資料管理,如資料保留時間、資料分區資訊、表資訊等

2.2關鍵特性

高性能讀寫

  • 每秒千萬級名額資料并發寫入,毫秒級查詢響應支援時序資料分析
  • 内置AI資料分析算法,支援實時異常檢測和預測

相容時序生态

  • 完全相容InfluxDB Line Protocol 和 InfluxQL
  • 無縫內建現有InfluxDB工具鍊
  • 支援Prometheus遠端資料存儲

分布式

  • 提供了水準擴充能力,支援數百節點叢集規模

海量時序資料高效管理

  • 支援億級時間線管理
  • 内置高效資料壓縮算法,存儲成本隻有傳統關系資料庫的1/20

部署靈活

  • 部署隻需運作編譯生成的可執行檔案,無需外部依賴
  • 所有資料庫配置參數均有合理的預設值,無需手動設定
  • 支援單機和叢集部署

三、openGemini有什麼優勢

3.1性能優勢

針對物聯網、運維監控等領域海量資料管理和分析的需求,openGemini對計算引擎和存儲引擎做了大量的優化設計。

  • 查詢引擎,實作了向量化、分布式計算、算子下推、預聚合等多種查詢優化和執行技術,提升了資料查詢效率。在工業物聯網、運維監控等場景中實作互動級的查詢時延,并且在超大資料基數(萬億級)的情況下,也能夠達到很低的查詢時延。
  • 存儲引擎,設計列式資料存儲格式,将多元時間序列資料按時間對齊,減少時間戳的重複存儲,并開發了一套高效的存儲引擎,實作了資料有序存儲、資料分區分級、資料預取、稀疏索引等豐富功能。

資料吞吐量和查詢時延是評價一個時序資料庫性能的關鍵名額,openGemini經過大量優化後,整體性能表現出色。下方的測試結果顯示了openGemini 從4U擴充到32U的性能表現,可以看出:

  • 從4U到32U,openGemini寫入性能可以線性擴充(擴充比為0.8)
  • 從4U的155萬Metrics/s平穩增長到32U的560萬Metrics/s
openGemini核心源碼正式對外開源

在業界流行的時序資料庫Benchmark測試工具TSBS的15個标準測試場景中,openGemini性能表現優異,15個标準測試場景可分為簡單查詢、中等查詢和複雜查詢三大類型:

  • 簡單查詢:少量或者沒有使用函數或表達式,查詢時間範圍在24小時以内,查詢時延數毫秒。
  • 中等查詢:使用多個函數或表達式,查詢時間範圍在幾周内,并且使用了GROUP BY分組,查詢時延在數十毫秒到數百毫秒。
  • 複雜查詢:使用了多個聚合函數或表達式,按月或者按年為時間範圍查詢,查詢時延通常可能會達分鐘級。

openGemini相比開源InfluxDB,簡單查詢場景提升2倍多,中等查詢場景提升4倍多;複雜查詢場景下,openGemini依然可以快速響應,然而InfluxDB則出現OOM無法工作。

openGemini核心源碼正式對外開源

3.2豐富的資料分析能力

時序資料采集的最終目的是讓資料被了解和使用,資料分析是其中關鍵的一環。時序資料庫具有廣泛的應用場景,使得時序應用日益多樣化,資料分析需求在不斷變化和增加,這要求時序資料庫能快速應對不同資料分析需求,不斷豐富内部的分析算子。

與此同時,傳統的大資料分析工具(比如Spark、Flink等)過于厚重,部署成本高;搭配時序資料庫進行分析時,離資料較遠,資料分析實時性無法滿足要求。随着物聯網、傳感器技術、5G的快速發展,迫切需要一種更有效的方法來處理海量、高速的時序資料,而使用者真正需要的是一個能夠以最低延遲時間和最高吞吐量處理、檢測和預測資訊的系統,這樣的系統在業界開源的資料庫中少之又少。

相對應的,openGemini具有豐富的聚合分析算子(COUNT、SUM、MAX、MIN等共計60餘種)、統計分析算子(PERCENTILE分位數、HISTOGRAM直方圖等)、異常檢測和預測算子(内置13種異常檢測器,可覆寫常見的離群點、數值變化、門檻值、持續上升下降等時序異常場景)。其中基于AI的異常檢測的實作過程中,充分考慮了資料分布,提供近資料計算能力,能提升端到端資料分析和計算效率。

3.3降低成本,增加效益

openGemini 源于華為雲GaussDB for Influx,GaussDB for Influx已經在華為雲許多内部重要業務上使用,通過技術的更新,替代了Cassandra、InfluxDB、HBase、OpenTSDB等多套系統部署,實作了降本增效。

openGemini核心源碼正式對外開源

openGemini在承載相同業務場景下,較原系統端到端時延減低50%,CPU資源上可以節省68%,記憶體資源可以節省50%,硬碟資源可以節省90%以上。

四、為什麼開源

開源是開放創新的有效手段,是數字時代的事實标準和專利。DB-Engines的統計資料表明,從 2021 年開始,開源資料庫的流行指數已經超過商用資料庫,開源時序資料庫占比更是高達80%,openGemini時序資料庫作為基礎軟體,也需要擁抱開源。

openGemini核心源碼正式對外開源
openGemini核心源碼正式對外開源

源于開源,回饋開源

openGemini時序資料庫經曆了幾個發展階段。從最初基于開源InfluxDB的架構改造,到應對内部數十億海量時間線挑戰,再到自研資料庫引擎,一路打磨,經受住了華為雲内、外部100餘家使用者的生産檢驗。openGemini現在以及将來取得的成績,都離不開開源社群肥沃的土壤。openGemini的開源,希望可以倡導開源文化,以實際行動回饋開源。

openGemini核心源碼正式對外開源

開放合作,共建共享

我們深知獨木難成林,百川聚江海的道理,但開源生态建設并非朝夕之功,也并非一個企業自身就能完成,而是一個聚沙成塔、集腋成裘的過程,唯有攜手夥伴共建、共享,方能打造出健康繁榮的開源生态。我們希望把openGemini社群作為一個支點、一個開放創新平台,通過釋放華為雲内部多年積累的時序資料庫技術研發和應用的實踐經驗,吸引更多的夥伴與開發者參與貢獻,不斷改善openGemini生态和競争力,持續打造開放的技術産品和應用生态,使能物聯網、工業網際網路等行業數字化轉型,促進産業協同,以應對生存環境愈發複雜,行業競争愈發激烈,業務發展愈發多樣的數字化時代。

版本說明

本次釋出的v0.1.0是具有完整時序資料庫功能的版本,詳細資訊請點選檢視使用者指南。

v0.1.0版本主要特性:

  • 支援單機和分布式叢集部署,高性能和可擴充
  • 支援證書驗證和使用者鑒權
  • 完全相容InfluxDB Line Protocol v1、InfluxQL
  • 支援Prometheus遠端資料讀寫
  • 支援Linux作業系統
  • 豐富的核心運作名額(60餘項),提供名額監測的工具ts-monitor

詳細版本路标已釋出,請前往社群查閱。

加入社群

為友善了解和參與社群貢獻,我們為您準備了​​貢獻指南​​。

其他

社群合作、尋求社群幫助、相關問題咨詢管道:

  1. 推薦在GitHub上給社群送出Issue和Discussion
  2. 發送郵件到openGemini社群郵箱([email protected]),1-2個工作日内給與回複
  3. 加入openGemini社群微信交流群(微信添加 xiangyu5632,備注openGemini)
  4. 加入Slack。

openGemini官網首頁: http://www.openGemini.org/

繼續閱讀