日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

華為云開源時序數據庫 openGemini:使用列存引擎解決時序高基數問題

來源: 責編: 時間:2024-10-23 09:17:58 84觀看
導讀 本文來源于《華為云 DTSE?》第五期開源專刊,更多文章請查看:https://bbs.huaweicloud.com/blogs/435823作者:向宇,華為云數據庫高級研發工程師、黃飛騰,博士,openGemini 存儲引擎架構師摘要在時序數據場景中,大部分

本文來源于《華為云 DTSE?》第五期開源專刊,更多文章請查看:https://bbs.huaweicloud.com/blogs/435823MPd28資訊網——每日最新資訊28at.com

作者:向宇,華為云數據庫高級研發工程師、黃飛騰,博士,openGemini 存儲引擎架構師MPd28資訊網——每日最新資訊28at.com

摘要MPd28資訊網——每日最新資訊28at.com

在時序數據場景中,大部分的解決方案是以時間線為粒度對時序數據進行管理,這類解決方案在時間線數量不斷增長的情形下,面臨著諸多困難,包括內存膨脹、讀寫性能下降等,華為云開源時序數據庫 openGemini 針對該場景,提出了全新的列存引擎 (HSCE),以解決海量時間線所帶來的問題。MPd28資訊網——每日最新資訊28at.com

高基數問題長期困擾時序數據庫MPd28資訊網——每日最新資訊28at.com

時序數據是一種常見的數據類型,廣泛應用于車聯網、工業物聯網、航空航天、電力、DevOps 等領域。這類場景需要衡量事物狀態隨時間的變化,以便進行監控、分析和預測。例如,在 DevOps 中,我們需要監控服務的并發請求量;在工業物聯網中,我們需要監控設備運行狀態。鑒于時序數據產生頻繁,且數據量很大,時序業務對實時性和查詢效率要求高,通常會使用時序數據庫對數據進行管理。MPd28資訊網——每日最新資訊28at.com

但在實際應用場景中,我們發現隨著設備(例如車輛、終端設備等)數量達到一定量級后,時序數據庫的讀寫性能會有明顯的下降,延時波動劇烈,通過升級機器規格也無明顯提升。導致這一現象的原因是海量時間線帶來的高基數問題。MPd28資訊網——每日最新資訊28at.com

什么是時間線?MPd28資訊網——每日最新資訊28at.com

在時序數據庫中,時間線是對時間序列數據的建模,一條時間線的數據指同一數據源產生的一系列數據點的集合,可以簡單理解為一臺設備或者一輛車就是一條時間線。舉個例子,有如下 6 條時序數據,由標簽(A、B)、指標(C)和時間戳(Timestamp)組成。MPd28資訊網——每日最新資訊28at.com

MPd28資訊網——每日最新資訊28at.com

存在 5 條時間線,分別是MPd28資訊網——每日最新資訊28at.com

MPd28資訊網——每日最新資訊28at.com

什么是高基數問題(High Cardinality)?MPd28資訊網——每日最新資訊28at.com

在數據庫中,基數是指數據庫的特定列或字段中包含的唯一值的數量。時間序列數據往往包含描述該數據的元數據(習慣稱為“標簽或 TAG”)。通常,主要時間序列數據或元數據會被索引,以提高查詢性能,以便使用者可以快速找到與之匹配的所有值。時間序列數據集的基數通常由每個單獨索引列的基數的交叉乘積定義。如果有多個索引列,每個列都有大量唯一值,那么交叉乘積的基數可能會變得非常大。這就是軟件開發人員在談論具有“高基數”的時間序列數據集時通常的意思。MPd28資訊網——每日最新資訊28at.com

比如,以智能電表為例,它會關聯設備 ID、城市 ID、廠商 ID 和模型 ID 等標簽。幾百個城市,百萬級設備,再加上不同的廠商、模型,基數輕松超過百億級。MPd28資訊網——每日最新資訊28at.com

再比如,以網絡監控為例,記錄訪問源到目的端經過的鏈路,它會關聯源 IP、目的 IP、運營商、路由設備 IP 等標簽,上百萬 IP 地址產生大量鏈路信息,基數很容易達到千億。MPd28資訊網——每日最新資訊28at.com

高基數問題根因在于時間線的倒排索引膨脹MPd28資訊網——每日最新資訊28at.com

倒排索引是時序數據庫常用的一種索引技術,主要記錄 TAG 和時間線之間的對應關系,給定一個或多個 TAG,就可以快速找到相關的時間線,從而實現數據過濾,提升數據檢索效率。MPd28資訊網——每日最新資訊28at.com

以如下數據為例MPd28資訊網——每日最新資訊28at.com

MPd28資訊網——每日最新資訊28at.com

時序數據庫中倒排索引的組織方式如下圖所示:MPd28資訊網——每日最新資訊28at.com

MPd28資訊網——每日最新資訊28at.com

現有大部分時序數據管理解決方案,通常會將數據按照時間線(即標簽值的組合)進行聚簇,時間線相同的數據再按照時間進行排序,同時構建了標簽 (A)+ 標簽值 (如 a1) 到時間線的倒排索引,這種存儲方式在時間線數量相對有限的情形下,可以提供極致的寫入與查詢性能,但是在處理高基數場景時,例如圖中的 A 和 B 兩個標簽列下各有數百萬不同值,那么總體時間線數量巨大,由于倒排索引與時間線數量相關,索引項激增,會導致內存膨脹、讀寫性能下降等問題。MPd28資訊網——每日最新資訊28at.com

高基數問題的解決方案剖析MPd28資訊網——每日最新資訊28at.com

高基數問題的核心在于優化索引結構,以提高索引的檢索效率并減少內存占用。目前,稀疏索引被認為是一種高效的解決方案。ClickHouse 數據庫提供了一個實際的應用案例,用于我們研究這一問題。MPd28資訊網——每日最新資訊28at.com

Clickhouse 在時序場景下存在局限性MPd28資訊網——每日最新資訊28at.com

以 ClickHouse 為例,分析其稀疏索引結構。MPd28資訊網——每日最新資訊28at.com

MPd28資訊網——每日最新資訊28at.com

ClickHouse 的稀疏索引不是為每一行數據創建一個索引條目,而是為一組數據行 Granular(稱為顆粒)構建一個索引條目。上圖顯示了官方如何將表中的 887 萬行 (列值) 組織成 1083 個顆粒,每個顆粒對應主索引的一個條目,主索引被用來選擇顆粒,就可以在主索引的支持下執行查詢。MPd28資訊網——每日最新資訊28at.com

MPd28資訊網——每日最新資訊28at.com

primary.idx 作為主鍵 (稀疏) 索引,可以用以加速查詢,mrk2 文件作用類似主鍵索引,用于定位特定 column (bin 文件) 對應的主鍵行所在的位置。MPd28資訊網——每日最新資訊28at.com

雖然 ClickHouse 的稀疏索引特別適用于處理大規模數據集,但 ClickHouse 數據庫可能并不總是最適合時序數據的場景。例如,時序數據通常需要對時間序列進行特定的優化,如時間序列索引、窗口函數和時間序列聚合,這些可能在 ClickHouse 中不如專門的時序數據庫那樣得到優化。此外,時序數據的寫入模式可能與 ClickHouse 的優化方向不完全一致,特別是在需要高吞吐量寫入時。MPd28資訊網——每日最新資訊28at.com

openGemini 結合了 AP 數據庫優勢與時序數據庫特性,更加平衡和高效MPd28資訊網——每日最新資訊28at.com

盡管如此,ClickHouse 的稀疏索引技術仍然值得借鑒。通過將這種技術應用于時序數據庫,可以更有效地管理時間線數據,減少內存空間的使用,同時保持快速的查詢性能。因此,在 openGemini 在解決高基數問題時,考慮結合 AP 數據庫的優勢和專門的時序數據庫特性,提供一個更加平衡和高效的解決方案。MPd28資訊網——每日最新資訊28at.com

openGemini 列存引擎解決該問題的核心思路主要包括:MPd28資訊網——每日最新資訊28at.com

1、調整數據排序與索引方式:不再維護與時間線的關系,而是通過設置排序鍵對數據進行排序,在此基礎上,將數據按列存儲,并構建稀疏的聚簇索引,以支持數據的過濾查詢。MPd28資訊網——每日最新資訊28at.com

2、量化操作降低高基數列的基數:針對高基數列進行量化,以降低基數,這樣可以進一步提高數據的局部有序性,提升索引的查詢過濾效果。MPd28資訊網——每日最新資訊28at.com

3、兼容 Apache Arrow Flight 協議:Apache Arrow Flight 是一種列式數據傳輸協議,可以實現高效的數據傳輸和寫入。openGemini 利用該協議,消除了數據在寫入流程中的轉換開銷,從而提升了數據寫入性能。MPd28資訊網——每日最新資訊28at.com

MPd28資訊網——每日最新資訊28at.com

假設有如下數據:MPd28資訊網——每日最新資訊28at.com

其中 A、C 的基數較低,同時大部分查詢需要對 A、C、Time 等列進行過濾,那么可以考慮將排序鍵設置為 A, C, Time 等,數據按照排序鍵排序之后變成:MPd28資訊網——每日最新資訊28at.com

MPd28資訊網——每日最新資訊28at.com

排序完成之后,將數據按列存儲,存儲時以若干行 (如 8192 行) 為一個 Block 進行數據壓縮并序列化,在此基礎上,選取每個 Block 的第一條記錄構建稀疏的聚簇索引。MPd28資訊網——每日最新資訊28at.com

MPd28資訊網——每日最新資訊28at.com

可以看到,按照這種方式組織數據,位于第一個排序鍵的列是整體有序的,位于其他位置的排序鍵則是局部有序的,因此如果將低基數列放在排序鍵的前面,則可以使得數據的局部有序性更好,在此基礎上,上述的稀疏聚簇索引就可以較好反映若干行或者一個 Block 的數據范圍,進而有效支持數據過濾。MPd28資訊網——每日最新資訊28at.com

考慮到如果有多個列都包含有高基列,那么無論如何選擇排序鍵,數據的有序性可能都不會特別理想,在這種情況下,可以考慮對其中部分高基列進行量化操作,降低該列的基數,以時間列為例,假設原始數據是以秒級進行采用生成的,那么即使僅考慮一個小時內的數據,時間列的基數都可能是數以千計,如果將時間列進行量化,使其對齊到小時粒度,那么這一個小時內的時間列基數就會降到 1 或者 2,在這一基礎上,使用量化過的時間列進行排序,無論將時間列放在排序鍵的哪個位置,都不會使得數據有序性劣化。同理,可以對需要排序的列進行類似的量化操作,這樣就可以保證數據的整體有序性。MPd28資訊網——每日最新資訊28at.com

總體而言,openGemini 通過上述數據排序與索引方式,可以保證索引的構建不受時間線的影響,同時數據的有序性也可以保證索引的查詢過濾效果。同時在此基礎上,openGemini 也通過兼容 Apache Arrow Flight 協議,一種列式數據傳輸協議,消除了數據在寫入流程中的轉換開銷,極大提升了數據寫入性能。MPd28資訊網——每日最新資訊28at.com

openGemini 在華為云網絡運維業務的實踐MPd28資訊網——每日最新資訊28at.com

華為云網絡運維服務的核心是基于廣域網運維業務場景,提供基于運維訴求的測量數據,包括真實業務流 RTT 時延、丟包率、異常測量指標等,以實現對網絡帶寬的精準測量和實時分析。MPd28資訊網——每日最新資訊28at.com

MPd28資訊網——每日最新資訊28at.com

華為云網絡運維業務是一個典型的高基數場景,具有千億級時間線規模。業務通過 Agent 采集通過設備的實時流量、實時流源目的地址、RTT 時延等信息,以方便平臺進行異常流分析、數據可視化分析等。openGemini 列存引擎(HCSE)成功解決了網絡數據的高基數問題,為平臺構筑了海量網流實時數據存儲底座,相比原有解決方案,實現了端到端成本降低 60%。數據處理吞吐量提升 6 + 倍,數據分析性能(如 Group By 分組聚合分析)提升 10 + 倍。MPd28資訊網——每日最新資訊28at.com

總結和展望MPd28資訊網——每日最新資訊28at.com

openGemini 通過引入新的數據排序與索引方式,開發了全新列存引擎,以解決海量時間線場景對于現有時序數據管理方案帶來的問題。通過調整數據排序與索引方式,采用量化操作降低高基數列的基數,以及兼容 Apache Arrow Flight 協議等措施,成功解決了海量時間線數據管理中的內存膨脹、索引構建成本高等問題。這一創新提高了數據管理的效率和性能,為時序數據應用場景帶來了新的解決方案。MPd28資訊網——每日最新資訊28at.com

通過全新列存引擎以及已有的時序引擎,openGemini 可以很好解決不同場景下的指標數據管理問題,未來 openGemini 還會針對日志、調用鏈等數據提供存儲解決方案,以實現對可觀測性數據的統一管理,為上層應用實現可觀測性提供一個統一存儲底座。MPd28資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-125092-0.html華為云開源時序數據庫 openGemini:使用列存引擎解決時序高基數問題

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 高端手機才能用 AI?NO!RockAI 讓 AI 觸手可及

下一篇: 物聯網平臺如何支持億級設備、海量租戶推送?從消息中間件架構發展趨勢看華為云 IoT 的思考

標簽:
  • 熱門焦點
  • 十個可以手動編寫的 JavaScript 數組 API

    JavaScript 中有很多API,使用得當,會很方便,省力不少。 你知道它的原理嗎? 今天這篇文章,我們將對它們進行一次小總結。現在開始吧。1.forEach()forEach()用于遍歷數組接收一參
  • 掘力計劃第 20 期:Flutter 混合開發的混亂之治

    在掘力計劃系列活動第20場,《Flutter 開發實戰詳解》作者,掘金優秀作者,Github GSY 系列目負責人戀貓的小郭分享了Flutter 混合開發的混亂之治。Flutter 基于自研的 Skia 引擎
  • 在線圖片編輯器,支持PSD解析、AI摳圖等

    自從我上次分享一個人開發仿造稿定設計的圖片編輯器到現在,不知不覺已過去一年時間了,期間我經歷了裁員失業、面試找工作碰壁,寒冬下一直沒有很好地履行計劃.....這些就放在日
  • 一文掌握 Golang 模糊測試(Fuzz Testing)

    模糊測試(Fuzz Testing)模糊測試(Fuzz Testing)是通過向目標系統提供非預期的輸入并監視異常結果來發現軟件漏洞的方法。可以用來發現應用程序、操作系統和網絡協議等中的漏洞或
  • 大廠卷向扁平化

    來源:新熵作者丨南枝 編輯丨月見大廠職級不香了。俗話說,兵無常勢,水無常形,互聯網企業調整職級體系并不稀奇。7月13日,淘寶天貓集團啟動了近年來最大的人力制度改革,目前已形成一
  • 認真聊聊東方甄選:如何告別低垂的果實

    來源:山核桃作者:財經無忌爆火一年后,俞敏洪和他的東方甄選依舊是頗受外界關心的“網紅”。7月5日至9日,為期5天的東方甄選“甘肅行”首次在自有App內直播,
  • Android 14發布:首批適配機型公布

    5月11日消息,谷歌在今天凌晨舉行了I/O大會,本次發布會谷歌帶來了自家的AI語言模型PaLM 2、谷歌Pixel Fold折疊屏、谷歌Pixel 7a手機,同時發布了Androi
  • 朋友圈可以修改可見范圍了 蘋果用戶可率先體驗

    近日,iOS用戶迎來微信8.0.27正式版更新,除了可更換二維碼背景外,還新增了多項實用功能。在新版微信中,朋友圈終于可以修改可見范圍,簡單來說就是已發布的朋友圈
  • AI藝術欣賞體驗會在上海梅賽德斯奔馳中心音樂俱樂部上演

    光影交錯的鏡像世界,虛實幻化的視覺奇觀,虛擬偶像與真人共同主持,這些場景都出現在2019世界人工智能大會的舞臺上。8月29日至31日,“AI藝術欣賞體驗會”在上海
Top 主站蜘蛛池模板: 靖宇县| 九龙城区| 德格县| 喀什市| 清水河县| 遵化市| 万全县| 贵溪市| 衡南县| 天台县| 平度市| 长治县| 黄龙县| 延津县| 花莲市| 嘉黎县| 松江区| 沙坪坝区| 齐齐哈尔市| 锡林浩特市| 昭觉县| 洛扎县| 柯坪县| 东乡| 临泉县| 鄄城县| 德昌县| 新津县| 西平县| 新蔡县| 长顺县| 紫云| 女性| 滦平县| 东兴市| 措美县| 逊克县| 珲春市| 赞皇县| 五峰| 蕲春县|