首頁  >  文章  >  科技週邊  >  Apache IoTDB:解決工業物聯網場景下的儲存、查詢和使用難題的創新資料庫

Apache IoTDB:解決工業物聯網場景下的儲存、查詢和使用難題的創新資料庫

WBOY
WBOY轉載
2023-09-15 17:25:011028瀏覽

隨著步入工業4.0時代,數位化和自動化的引入,生產環境變得更有效率。同時,人們開始關注智慧型裝置帶來的大量數據的潛在價值,但如何有效地儲存智慧型裝置產生的數據,以及如何更好地對大量數據進行分析成為了一個難題。傳統的資料庫模型和儲存方式已經無法滿足這些需求。因此,時序資料庫應運而生,旨在實現高效的資料儲存和查詢,幫助更好地挖掘資料的潛在價值

面對這樣的狀況,清華大學於2015 年啟動了IoTDB 的研發。 2020 年 9 月 23 日 Apache IoTDB 畢業成為 Apache 頂級項目 (Top-Level Project),是目前唯一由我國高校發起的 Apache 基金會頂級項目,也是 Apache 基金會旗下唯一物聯網資料管理領域開源專案。 2021 年 10 月,Apache IoTDB 核心團隊創立了天謀科技,繼續運作 IoTDB,幫助工業用戶解決資料 「存、查、用」 難題。

關於 Apache IoTDB 研發的核心技術,幾位參與者合作發表了一篇綜述論文,詳細而完整地闡述了 IoTDB 的設計。文章以一個需要管理上萬台挖土機的工業公司為例,描述了需求:「資料首先被打包到設備中,然後透過5G 行動網路傳送到伺服器。在伺服器中,資料被寫入時間序列資料庫,用於OLTP 查詢。最後,資料科學家可以將資料從資料庫載入到大數據平台,用於複雜的分析和預測,即OLAP 任務。」

Apache IoTDB:解决工业物联网场景下的存储、查询和使用难题的创新数据库

  • 論文網址:https://dl.acm.org/doi/abs/10.1145/3589775
  • 專案網址:https://github.com/ apache/iotdb

論文的重點包含以下幾個部分:

1.資料模型的設計:時間序列在邏輯層次上的組織方式和在物理模式中的儲存;

##2. TsFile 文件格式:自研的列式儲存檔案格式,同時滿足寫入、查詢等的高效性;

3. IoTDB 引擎:主要包括儲存引擎、查詢引擎等;

#分散式解決方案是指將一個任務或問題分解成多個子任務,並將這些子任務指派給多個電腦或節點進行處理的方法。這種解決方案可以提高系統的可靠性、可擴展性和效能。透過將任務分佈到多個電腦上,可以減輕單一電腦的負載,提高系統的並發處理能力。同時,分散式解決方案還可以透過冗餘備份和故障轉移來增強系統的容錯性,即使某個節點發生故障,系統仍然可以繼續運作。在當今的大數據和雲端運算環境中,分散式解決方案已成為一種常見的架構模式,被廣泛應用於各種領域,如分散式資料庫、分散式儲存系統和分散式運算平台等

對於接下來的內容,我們將會對這幾個重點部分進行更詳細的解讀

詳細解讀

需要進行資料模型設計

如下圖所示,我們採用了樹的結構來滿足高強度的寫入操作,並且能夠有效處理物聯網場景中常見的延遲資料到達問題

在樹結構中,每個葉子節點都代表一個感測器,每個感測器都有對應的設備歸屬。就像圖中最底下的兩層所示,向上的層級同樣適用

Apache IoTDB:解决工业物联网场景下的存储、查询和使用难题的创新数据库

#(2)在前文中已經闡述了邏輯結構,現在我們將來看物理結構的實現,主要包括時間序列(Time series)和序列簇(Series family)兩部分。下圖展示了每個時間序列由時間和值兩個屬性組成,透過根節點到葉子節點的完整路徑來定位時間序列。上圖展示了序列簇的概念,一個序列簇中可能包含多個設備,它們的資料將一起儲存在TsFile(一種檔案結構,在後文中會進行解釋)中#

Apache IoTDB:解决工业物联网场景下的存储、查询和使用难题的创新数据库

需要重新寫的內容是:2. TsFile 檔案格式的設計

TsFile是Apache IoTDB自研的列式儲存檔案格式。其架構如下圖所示:

Apache IoTDB:解决工业物联网场景下的存储、查询和使用难题的创新数据库

在設計TsFile時,研究團隊主要專注於解決的問題是:

  • #節省空間,盡可能壓縮資料
  • 減少檔案數量
  • 會一起查詢的時間序列在物理位置上的接近
  • 減少磁碟碎片
  • 高效率存取

##主要提供的解決方案是:

  • 列式儲存:消除了空值,節省了磁碟佔用;資料存取局部性
  • ##時間序列編碼:利用物聯網場景時間序列的獨特特徵
  • 頻域編碼:訊號處理中廣泛進行時間序列的頻域分析
  • 具體的結構解析:頁面( Page )是基本儲存單位,Chunk 中包含多個Page,一個chunk 中的page 屬於同一個時間序列,大小可變;Chunk Group 包含多個Chunk,一個群組中的多個chunk 屬於同一段時間內寫入的一個或多個系列的設備,將他們放在連續的磁碟空間,是因為他們經常會被一起查詢;Block 是在內存中的,寫入的塊組先在內存中進行緩衝,當內存達到閾值時,將所有塊組刷新到TsFile 中;索引(FileIndex)於文件末尾記錄信息,用於數據訪問。

需要被重寫的內容是:3. IoTDB 引擎

在這個部分,研究者主要關注了物聯網場景下的延遲到達、高效查詢處理和類似SQL 查詢的設計。 IoTDB 引擎的結構如下圖所示:

Apache IoTDB:解决工业物联网场景下的存储、查询和使用难题的创新数据库

#在圖中,我們可以看到儲存引擎部分主要用於處理TsFile的寫入、讀取和管理。在這個部分中,採用了自動延遲分離技術(如下圖所示)

Apache IoTDB:解决工业物联网场景下的存储、查询和使用难题的创新数据库

#在大多數情況下,當TsFile中的時間範圍沒有重疊時,建議使用延遲資料分離。然而,對於大多數資料是無序的情況,不建議使用延遲資料分離

重寫後的內容:另一個重要的組成部分是查詢引擎,它負責將SQL查詢轉換為可以在資料庫中執行的操作符。同時,為了適應工業物聯網場景,Apache IoTDB 也設計了豐富的時間序列資料查詢功能

#需要重新寫入的內容是:4. 分散式的解決方案

TsFile可以在HDFS上進行分佈,並由Spark進行操作。此外,它還提供了原生的解決方案,用於更好地處理資料分佈和查詢處理,包括分區複製、NB-Raft複製和動態讀取一致性

##對比結果

在論文中,我們對TsFile和IoTDB進行了比較,這兩者是工業界廣泛使用的最先進的文件格式和時序資料庫。透過下圖展示,我們展示了Apache IoTDB在多個方面的優勢

Apache IoTDB:解决工业物联网场景下的存储、查询和使用难题的创新数据库

以上兩張圖展示了TsFile在寫入吞吐量、讀取時間成本和同步效能方面的優勢,這主要歸因於TsFile的物聯網感知結構設計,避免了儲存冗餘資訊如deviceId。儘管TsFile的磁碟佔用沒有明顯優勢,但這是因為建立了更精細的索引,導致佔用更多空間。然而,這種犧牲可以帶來非凡的查詢時間改善,如我們可以看到讀取時間成本的明顯優勢

Apache IoTDB:解决工业物联网场景下的存储、查询和使用难题的创新数据库

在上述圖表中可以清楚地看到,IoTDB在幾乎所有測試中都展現出更出色的效能,包括更高的寫入吞吐量和更低的寫入延遲

Apache IoTDB:解决工业物联网场景下的存储、查询和使用难题的创新数据库

在上述實驗中,我們觀察到當查詢資料規模較大時,IoTDB展現出更好的效能。特別是在大規模資料聚合方面,IoTDB的優勢特別明顯

總結

這篇論文介紹了一種名為Apache IoTDB的新型時序資料管理系統,該系統採用開放式架構,專門設計用於支援物聯網應用的即時查詢和大數據分析。該系統包括一種新的時序檔案格式,名為TsFile,它採用列儲存的方式來儲存時間和值,以避免空值並實現有效的壓縮。在TsFile的基礎上,IoTDB引擎採用類似LSM樹的策略來處理高強度的寫入,並且能夠處理物聯網場景中常見的延遲資料到達問題。豐富的可擴展查詢功能以及在TsFile中預先計算的統計信息,使得IoTDB能夠高效地處理OLTP和OLAP任務

IoTDB已經成為能夠更好應對工業物聯網場景的新型資料庫,這是基於上述技術的結果

以上是Apache IoTDB:解決工業物聯網場景下的儲存、查詢和使用難題的創新資料庫的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:51cto.com。如有侵權,請聯絡admin@php.cn刪除