Apache IoTDB:解決工業物聯網場景下的儲存、查詢和使用難題的創新資料庫
隨著步入工業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 任務。」
- 論文網址:https://dl.acm.org/doi/abs/10.1145/3589775
- 專案網址:https://github.com/ apache/iotdb
論文的重點包含以下幾個部分:
1.資料模型的設計:時間序列在邏輯層次上的組織方式和在物理模式中的儲存;
##2. TsFile 文件格式:自研的列式儲存檔案格式,同時滿足寫入、查詢等的高效性;
3. IoTDB 引擎:主要包括儲存引擎、查詢引擎等;
#分散式解決方案是指將一個任務或問題分解成多個子任務,並將這些子任務指派給多個電腦或節點進行處理的方法。這種解決方案可以提高系統的可靠性、可擴展性和效能。透過將任務分佈到多個電腦上,可以減輕單一電腦的負載,提高系統的並發處理能力。同時,分散式解決方案還可以透過冗餘備份和故障轉移來增強系統的容錯性,即使某個節點發生故障,系統仍然可以繼續運作。在當今的大數據和雲端運算環境中,分散式解決方案已成為一種常見的架構模式,被廣泛應用於各種領域,如分散式資料庫、分散式儲存系統和分散式運算平台等
對於接下來的內容,我們將會對這幾個重點部分進行更詳細的解讀
詳細解讀
需要進行資料模型設計
如下圖所示,我們採用了樹的結構來滿足高強度的寫入操作,並且能夠有效處理物聯網場景中常見的延遲資料到達問題
在樹結構中,每個葉子節點都代表一個感測器,每個感測器都有對應的設備歸屬。就像圖中最底下的兩層所示,向上的層級同樣適用
#(2)在前文中已經闡述了邏輯結構,現在我們將來看物理結構的實現,主要包括時間序列(Time series)和序列簇(Series family)兩部分。下圖展示了每個時間序列由時間和值兩個屬性組成,透過根節點到葉子節點的完整路徑來定位時間序列。上圖展示了序列簇的概念,一個序列簇中可能包含多個設備,它們的資料將一起儲存在TsFile(一種檔案結構,在後文中會進行解釋)中#
需要重新寫的內容是:2. TsFile 檔案格式的設計
TsFile是Apache IoTDB自研的列式儲存檔案格式。其架構如下圖所示:
在設計TsFile時,研究團隊主要專注於解決的問題是:
- #節省空間,盡可能壓縮資料
- 減少檔案數量
- 會一起查詢的時間序列在物理位置上的接近
- 減少磁碟碎片
- 高效率存取
##主要提供的解決方案是:
- 列式儲存:消除了空值,節省了磁碟佔用;資料存取局部性 ##時間序列編碼:利用物聯網場景時間序列的獨特特徵
- 頻域編碼:訊號處理中廣泛進行時間序列的頻域分析
- 具體的結構解析:頁面( Page )是基本儲存單位,Chunk 中包含多個Page,一個chunk 中的page 屬於同一個時間序列,大小可變;Chunk Group 包含多個Chunk,一個群組中的多個chunk 屬於同一段時間內寫入的一個或多個系列的設備,將他們放在連續的磁碟空間,是因為他們經常會被一起查詢;Block 是在內存中的,寫入的塊組先在內存中進行緩衝,當內存達到閾值時,將所有塊組刷新到TsFile 中;索引(FileIndex)於文件末尾記錄信息,用於數據訪問。
需要被重寫的內容是:3. IoTDB 引擎
在這個部分,研究者主要關注了物聯網場景下的延遲到達、高效查詢處理和類似SQL 查詢的設計。 IoTDB 引擎的結構如下圖所示:
重寫後的內容:另一個重要的組成部分是查詢引擎,它負責將SQL查詢轉換為可以在資料庫中執行的操作符。同時,為了適應工業物聯網場景,Apache IoTDB 也設計了豐富的時間序列資料查詢功能
#需要重新寫入的內容是:4. 分散式的解決方案
TsFile可以在HDFS上進行分佈,並由Spark進行操作。此外,它還提供了原生的解決方案,用於更好地處理資料分佈和查詢處理,包括分區複製、NB-Raft複製和動態讀取一致性##對比結果
在論文中,我們對TsFile和IoTDB進行了比較,這兩者是工業界廣泛使用的最先進的文件格式和時序資料庫。透過下圖展示,我們展示了Apache IoTDB在多個方面的優勢
以上兩張圖展示了TsFile在寫入吞吐量、讀取時間成本和同步效能方面的優勢,這主要歸因於TsFile的物聯網感知結構設計,避免了儲存冗餘資訊如deviceId。儘管TsFile的磁碟佔用沒有明顯優勢,但這是因為建立了更精細的索引,導致佔用更多空間。然而,這種犧牲可以帶來非凡的查詢時間改善,如我們可以看到讀取時間成本的明顯優勢
在上述圖表中可以清楚地看到,IoTDB在幾乎所有測試中都展現出更出色的效能,包括更高的寫入吞吐量和更低的寫入延遲
在上述實驗中,我們觀察到當查詢資料規模較大時,IoTDB展現出更好的效能。特別是在大規模資料聚合方面,IoTDB的優勢特別明顯
總結
這篇論文介紹了一種名為Apache IoTDB的新型時序資料管理系統,該系統採用開放式架構,專門設計用於支援物聯網應用的即時查詢和大數據分析。該系統包括一種新的時序檔案格式,名為TsFile,它採用列儲存的方式來儲存時間和值,以避免空值並實現有效的壓縮。在TsFile的基礎上,IoTDB引擎採用類似LSM樹的策略來處理高強度的寫入,並且能夠處理物聯網場景中常見的延遲資料到達問題。豐富的可擴展查詢功能以及在TsFile中預先計算的統計信息,使得IoTDB能夠高效地處理OLTP和OLAP任務
IoTDB已經成為能夠更好應對工業物聯網場景的新型資料庫,這是基於上述技術的結果
以上是Apache IoTDB:解決工業物聯網場景下的儲存、查詢和使用難題的創新資料庫的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

配置Debian郵件服務器的防火牆是確保服務器安全性的重要步驟。以下是幾種常用的防火牆配置方法,包括iptables和firewalld的使用。使用iptables配置防火牆安裝iptables(如果尚未安裝):sudoapt-getupdatesudoapt-getinstalliptables查看當前iptables規則:sudoiptables-L配置

Debian系統中的readdir函數是用於讀取目錄內容的系統調用,常用於C語言編程。本文將介紹如何將readdir與其他工具集成,以增強其功能。方法一:C語言程序與管道結合首先,編寫一個C程序調用readdir函數並輸出結果:#include#include#includeintmain(intargc,char*argv[]){DIR*dir;structdirent*entry;if(argc!=2){

在Debian系統中,readdir函數用於讀取目錄內容,但其返回的順序並非預先定義的。要對目錄中的文件進行排序,需要先讀取所有文件,再利用qsort函數進行排序。以下代碼演示瞭如何在Debian系統中使用readdir和qsort對目錄文件進行排序:#include#include#include#include//自定義比較函數,用於qsortintcompare(constvoid*a,constvoid*b){returnstrcmp(*(

在Debian系統上使用OpenSSL進行數字簽名驗證,可以按照以下步驟操作:準備工作安裝OpenSSL:確保你的Debian系統已經安裝了OpenSSL。如果沒有安裝,可以使用以下命令進行安裝:sudoaptupdatesudoaptinstallopenssl獲取公鑰:數字簽名驗證需要使用簽名者的公鑰。通常,公鑰會以文件的形式提供,例如public_key.pe

在Debian郵件服務器上安裝SSL證書的步驟如下:1.安裝OpenSSL工具包首先,確保你的系統上已經安裝了OpenSSL工具包。如果沒有安裝,可以使用以下命令進行安裝:sudoapt-getupdatesudoapt-getinstallopenssl2.生成私鑰和證書請求接下來,使用OpenSSL生成一個2048位的RSA私鑰和一個證書請求(CSR):openss

CentOS 關機命令為 shutdown,語法為 shutdown [選項] 時間 [信息]。選項包括:-h 立即停止系統;-P 關機後關電源;-r 重新啟動;-t 等待時間。時間可指定為立即 (now)、分鐘數 ( minutes) 或特定時間 (hh:mm)。可添加信息在系統消息中顯示。

在Debian系統中,OpenSSL是一個重要的庫,用於加密、解密和證書管理。為了防止中間人攻擊(MITM),可以採取以下措施:使用HTTPS:確保所有網絡請求使用HTTPS協議,而不是HTTP。 HTTPS使用TLS(傳輸層安全協議)加密通信數據,確保數據在傳輸過程中不會被竊取或篡改。驗證服務器證書:在客戶端手動驗證服務器證書,確保其可信。可以通過URLSession的委託方法來手動驗證服務器

在Debian上管理Hadoop日誌,可以遵循以下步驟和最佳實踐:日誌聚合啟用日誌聚合:在yarn-site.xml文件中設置yarn.log-aggregation-enable為true,以啟用日誌聚合功能。配置日誌保留策略:設置yarn.log-aggregation.retain-seconds來定義日誌的保留時間,例如保留172800秒(2天)。指定日誌存儲路徑:通過yarn.n
