時序數據庫Apache IoTDB核心技術深度解析

一、引言
  • ?背景?:5G技術加速了IoT領域的發展,物聯網設備數據的收集、存儲和計算需求日益增長。Apache IoTDB作為一款專為物聯網時序數據設計的軟件系統,在2020年被Apache基金會認可為頂級項目。
二、IoT領域發展趨勢
  • ?5G與IoT?:5G催化了IoT的發展,80%的5G利好體現在物聯網領域。中、美工業互聯網及德國工業4.0均在蓬勃發展。
  • ?邊緣計算?:Gartner自2018年起強調云向邊緣計算挺進是十大戰略技術趨勢之一,云邊端一體成為IoT領域的典型架構。
  • ?政策支持?:國務院于2017年發布工業互聯網指導意見,設定階段性基建目標。
  • ?時序數據庫熱度?:自2018年起,時序數據庫熱度攀升,涌現出如InfluxDB、OpenTSDB及Apache IoTDB等優秀產品。
三、時序數據庫分類與IoTDB優勢
  • ?分類?:
    • 基于關系的時序數據庫(如TimescaleDB):建立在B+tree上,寫入受限。
    • 基于KV的時序數據庫(如OpenTSDB):索引存儲弊端,查詢能力受限。
    • 專為時序數據設計的數據庫(如InfluxDB和Apache IoTDB):基于LSM Tree,解決高吞吐寫入問題。
  • ?IoTDB優勢?:官方性能測試數據顯示,IoTDB在寫入和查詢方面均有顯著優勢。
四、IoTDB核心技術點
  • ?IoT時序數據領域問題?:數據規模龐大、存儲成本、寫入吞吐、查詢性能及亂序問題。
  • ?LSM Tree架構?:IoTDB采用LSM Tree架構,放棄部分讀能力以換取寫入最大化。數據先寫入內存(Mem-Table),再合并追加到磁盤。
  • ?寫入過程?:數據寫入后,先進行WAL落盤,再寫入Mem-Table并排序。當內存數據達到一定規模時,將Mem-Table變為immutable并創建新的Mem-table,同時進行數據合并和索引建立。
  • ?查詢邏輯?:先在內存Mem-table中查詢,再在immutable Mem-table和磁盤File中查找,輔以Bloom filter加速查詢。
  • ?亂序問題處理?:IoTDB針對IoT時序數據亂序問題進行重點設計,從內存到文件存儲均有有序和亂序數據的特殊處理。
  • ?查詢優化機制?:提供極致的查詢性能。
五、IoTDB文件格式設計(TsFile)
  • ?設計原則?:以查詢需求反推文件格式,希望同一設備數據存儲在一起,每個Measurement信息連續存儲。
  • ?數據結構抽象?:
    • 將設備數據抽象為ChunkGroup,獨立管理。
    • 每個Measurement數據集中存儲到一個Chunk中。
    • 按時間區間將Chunk數據劃分為若干Page信息。
  • ?目的?:充分利用邊緣端有限內存資源,減少磁盤IO,構建最優索引樹。
  • ?索引樹節點信息取舍?:在內存大小一定的情況下,索引信息越完整越好,以減少磁盤IO。選擇ChunkGroup和Chunk進行Meta信息構建。
  • ?TsFile結構演變?:
    • 包括data、tsFile Meta信息、Device Meta信息、Chunk Meta信息。
    • 優化Meta信息利用,構建B+Tree索引樹,對Chunk信息進行細粒度時間切片,對Measurement進行邏輯抽象(LEAF_MEASUREMENT節點),提高查詢性能。
六、IoTDB應用案例
  • ?投產領域?:風電行業、工程機械、氣象大數據平臺、城市軌道等。
  • ?具體案例?:在中車青島四方車輛項目中,一臺IoTDB實例替換老系統10多條Cassandra實例,每天管理4000億數據點信息。在德國和美國也有廣泛應用。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/909564.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/909564.shtml
英文地址,請注明出處:http://en.pswp.cn/news/909564.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Next.js面試題:API深度解析

Next.js面試題:API深度解析 Next.js 通過 App Router 的引入徹底改變了 Web 開發范式。在這個新時代,深入理解 Next.js 的 API 函數不再只是錦上添花,而是技術面試中的關鍵區分點。這些函數構成了構建高性能、可擴展、現代化 Web 應用的基石…

Docker-MCP quickstart

項目概述 Docker-MCP 是一個 支持mcp的Docker 管理服務器,它允許 客戶端 通過 MCP(Model Control Protocol)接口直接與 Docker 進行交互。該項目提供了一套工具,使 AI 助手能夠創建容器、部署 Docker Compose 、獲取容器日志以及…

git 的變基操作(適合一個功能進行了多次commit提交,提交記錄過多不美觀)

git提交的 commit 的記錄很多,想多個 commit 進行合并,對代碼進行整理,幫助更好的閱讀代碼 IDEA 的操作步驟: 這里,給出你想進行合并的記錄 hash 值,完了點擊“Rebase”進行合并 點擊后,會進行…

【完整源碼+數據集+部署教程】路邊廣告牌實例分割系統源碼和數據集:改進yolo11-SEAMHead

研究背景與意義 研究背景與意義 隨著城市化進程的加快,路邊廣告牌作為重要的商業宣傳媒介,越來越多地出現在城市的各個角落。它們不僅承擔著信息傳播的功能,還對城市的視覺環境產生了深遠的影響。然而,隨著廣告牌數量的激增&…

C++ 中文件 IO 操作詳解

在C中,文件操作是通過流(stream)來實現的。標準庫提供了三種主要的文件流類來處理文件IO操作: ofstream:用于寫入文件(output file stream)ifstream:用于讀取文件(input file stream&#xff0…

第32節 Node.js 全局對象

在Node.js中我們可以直接訪問到全局對象。 這些對象在所有模塊里都是可用的,有些對象不是在全局作用域而是在模塊作用域里,這些情況將在本文的內容中進行介紹。 global {Object} 全局命名空間對象。 在瀏覽器中,全局作用域就是頂級域。如…

Linux文件屬性和權限概述-linux026

Linux文件屬性和權限概述 Linux 系統作為多用戶操作系統,通過文件屬性和權限機制來控制不同用戶對文件和目錄的訪問,從而保證系統的安全性。不同的用戶對同一文件可以有不同的訪問權限,這些權限包括 讀取(read)、寫入…

nuScenes介紹

目標檢測指標 指標內容mAP(mean Average Precision)bev下2d中心點的距離來評價,而不是像2d檢測里用iou來評價mATE(Average Translation Error)中心點的2D歐式距離mASE(Average Scale Error)中心…

帶中斷計數器的UART接收中斷程序 (8259@400H/402H)

1.程序功能 在中斷服務程序中增加了中斷計數器,并在主循環中通過串口輸出中斷次數。 2.驗證 2.1手動觸發8259的IR1,高電平有效 2.2串口接收 3.測試程序 ; You may customize this and other start-up templates; ; The location of this template is…

在Postgresql中跟蹤SQL語句

文章說明 本文主要說明如何在Postgresql中跟蹤實際執行的SQL語句。 本文內容有如下應用場景: 在系統中執行了一系列的操作,需要將這些操作轉化成SQL在正式環境上一次性執行,省下重新執行一遍的操作時間。最近系統數據被人或被程序修改導致…

【信創-k8s】重磅-鯤鵬arm+麒麟V10離線部署k8s1.30+kubesphere4.1.3

隨著信創產業的推進,鯤鵬arm64架構得以快速發展。而由于信創領域的主要客戶通常部署在內網環境中,這使得離線部署成為該架構方案實施過程中不可或缺的關鍵環節。 **環境涉及軟件版本信息** 服務器芯片: **鯤鵬920/飛騰2000(arm64)** 操作系統&#xff…

第11章:Neo4j實際應用案例

理論知識和技術細節固然重要,但真正理解Neo4j的價值在于了解它如何解決實際業務問題。本章將探討Neo4j在各個領域的實際應用案例,包括社交網絡分析、推薦系統、知識圖譜以及欺詐檢測與安全分析。通過這些案例,讀者可以了解如何將前面章節學到…

數字圖像處理與OpenCV初探

什么是數字圖像處理? 當今時代,數字圖像無處不在。手機拍照、安防監控、醫療檢查、地圖導航、工業質檢……我們每天都在接收、分析和處理大量圖像信息。對于計算機而言,圖像并不是一張“看得懂”的照片,而是由數值組成的矩陣。如何…

ubuntu網絡連接失敗 + mobaxterm拖拽文件出錯等問題解決方法

網絡連接問題&#xff0c;表現在不能通過源下載以及更新 終端問題顯示【通過 ip a 命令獲得】 kejiubuntu:~/Desktop$ ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00…

C# CS_Prj01 串口通信控制臺程序

一直以來&#xff0c;玩8088單板機&#xff0c;上位機都是使用的綠色現成的串口軟件。 今天&#xff0c;感覺8088單板機的各部分測試都基本完成了。 本著玩的精神&#xff0c;自己寫一個上位機的簡單串口程序&#xff0c;與自己的8088單板機通訊。 功能&#xff1a;一個完整…

40套精品大氣黑金系列行業PPT模版分享

黑金系列PPT模版&#xff0c;優秀員工頒獎典禮PPT模版&#xff0c;消費訂貨會PPT模版&#xff0c;共贏未來PPT模版&#xff0c;投資類PPT模版&#xff0c;雙12年終盛典PPT模版&#xff0c;商業計劃書PPT模版&#xff0c;高端通用企業文化PPT模版&#xff0c;公司喜報企業捷報PP…

SAP學習筆記 - 開發31 - 前端Fiori開發 Device Adaptation(設備自適應)

上一章講了Fiori開發中的 Responsiveness&#xff08;響應式設計&#xff09;。 SAP學習筆記 - 開發30 - 前端Fiori開發 Responsiveness&#xff08;響應式設計&#xff09;-CSDN博客 本章繼續學習Fiori 開發中的知識。 目錄 1&#xff0c;Device Adaptation&#xff08;設備…

網絡的那些事——初級——OSPF(2)

前面說了OSPF的狀態機和一起簡單的OSPF配合&#xff0c;接下這章繼續寫OSPFV2 IP frr和OSPFV3. 什么是OSPF IP FRR? OSPF IP FRR&#xff08;Fast Reroute&#xff09;利用全網鏈路狀態數據庫&#xff0c;預先計算出備份路徑保存在轉發表中&#xff0c;以備在故障時提供流量保…

C++(初階)(二十一)——unordered_set和unordered_map

二十二&#xff0c;unordered_set和unordered_map的使用 1.unordered_set 1.1介紹 c11 template<class Key,class Hash std::hash<Key>,class KeyEqual std::equal_to<Key>,class Allocator std::allocator<Key> > class unordered_set;c17 na…

Java面試題:分布式ID時鐘回撥怎么處理?序列號耗盡了怎么辦?

歡迎來到啾啾的博客&#x1f431;。 記錄學習點滴。分享工作思考和實用技巧&#xff0c;偶爾也分享一些雜談&#x1f4ac;。 有很多很多不足的地方&#xff0c;歡迎評論交流&#xff0c;感謝您的閱讀和評論&#x1f604;。 目錄 引言1 分布式ID2 問題2.1 時鐘回撥2.1.1 毫秒級時…