一、引言
- ?背景?: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億數據點信息。在德國和美國也有廣泛應用。