首頁
>
資源
>
技術解析

Apache IoTDB vs InfluxDB 開源版,架構性能全面對比!

在物聯網(IoT)領域,數據的采集、存儲和分析是確保系統高效運行和決策準確的重要環節。隨著物聯網設備數量的增加和數據量的爆炸式增長,開發者和決策者們需要選擇合適的時序數據管理系統。Apache IoTDB 和 InfluxDB 是兩款廣泛應用的原生時序數據庫,它們在架構設計、性能和功能方面各具特色。

為了幫助用戶在具體應用場景中做出最適合的時序數據庫選擇,本文將從:分布式架構、端邊云同步能力和性能表現三個方面對 Apache IoTDB 和 InfluxDB 開源版進行詳細對比。下面,跟隨我們來一探究竟!

01 基本概述

Apache IoTDB(Internet of Things Database)是起源于清華大學的 Apache 頂級項目,也是專為物聯網和工業大數據場景設計的高效可擴展時序數據庫。IoTDB 旨在提供高吞吐量和低延遲的數據寫入和查詢能力,支持海量設備和傳感器的數據采集。其核心優勢在于輕量級、高壓縮比和便捷的時間序列數據管理。此外,IoTDB 提供端邊云一體化的解決方案,并能夠與 Apache Hadoop、Spark、Flink 等大數據系統無縫集成。IoTDB 的分布式架構能夠應對大規模物聯網數據的存儲需求,并提供高可用性和數據一致性。

InfluxDB 是由 InfluxData 開發的一款被廣泛應用的時序數據庫,以其高性能和靈活性在開發者社區中享有盛譽。InfluxDB 專為高并發的時間序列數據寫入和查詢而優化,提供了強大的查詢語言 InfluxQL,以及兼容 SQL 的 Flux 查詢語言,使數據分析更加靈活。InfluxDB 強大的數據壓縮和持久化策略有效降低了存儲成本。同時,InfluxDB 還支持豐富的生態系統擴展,包括 Telegraf 作為數據采集代理,以及 Chronograf 和 Kapacitor 用于數據可視化和實時處理。

02 分布式架構

在物聯網和大數據應用中,分布式架構是處理海量數據和保證系統高可用性的關鍵技術之一。分布式架構不僅能提高系統的吞吐量和性能,還能提供良好的擴展性和容錯能力。接下來,我們將深入探討 Apache IoTDB 和 InfluxDB 開源版在分布式架構上的設計理念、實現方式及其優缺點。

Apache IoTDB

Apache IoTDB 原生支持分布式,并針對物聯網場景做了大量優化,以最大化分布式集群的可用性、可擴展性和性能。

  • Apache IoTDB 針對大部分時序場景中近期數據操作頻繁、歷史數據操作較少的特點,設計了專門的數據分區和負載均衡策略:Apache IoTDB 管理數據和元數據,以數據分片為例,如下圖所示,所有設備的讀寫流量都會通過哈希算法均勻分配到 SeriesSlot ,再通過時間區間計算得到 TimeSlot 及其對應的 DataPartition,而各層映射通過負載均衡算法確保均勻分配,從而使數據的讀寫可以并行均勻利用集群所有節點的資源。

通過該方案,不論設備數量是萬級還是億級,時間范圍的跨度是 1 年還是 10 年,IoTDB 分片路由信息的維護成本依然是非常輕量的,而具體的時序數據管理又可以分散到集群中,這使得 IoTDB 在面對大規模時序數據時具有很高的可擴展性,目前最大測試過 PB 級別的時序數據存儲。

InfluxDB架構對比圖1-20240621.png

  • 與業界其他時序數據庫相比,Apache IoTDB 是第一個也是唯一一個提出并應用共識協議統一框架的系統。用戶可以根據性能、可用性、一致性和存儲成本等需求,靈活選擇不同的共識算法。在共識協議統一框架下,Apache IoTDB 擁有強一致性共識協議 RatisConsensus、 專為 IoT 時序場景設計的高性能弱一致性共識協議 IoTConsensus、輕量級單副本共識協議 SimpleConsensus,為用戶不同的業務需求提供了豐富靈活的配置選擇。

  • 提供豐富可觀測性指標。Apache IoTDB 在分布式架構的全鏈路中內置了上千種監控指標,覆蓋讀寫流程、共識算法、負載均衡、系統資源等,可以為用戶提供可靠的實時監控。

InfluxDB

InfluxDB 開源版的分布式特性較為有限,只支持單節點部署,適用于中小規模的數據處理需求。

  • 在開源版本中,InfluxDB 通過時間分片和數據壓縮技術來提高數據寫入和查詢的性能,但不支持原生分布式存儲和處理功能。

  • 為了解決單節點的局限性,用戶通常需要依賴外部工具和方案,例如使用 Telegraf 進行數據分發,或者通過 InfluxDB 企業版來獲得完整的分布式支持。

03 端邊云同步

隨著物聯網數據采集技術的發展與云計算服務的興起,端邊云架構在數據管理中的作用愈發重要。越來越多的業務系統在工廠等靠近數據源的地方部署端側邊側數據庫進行數據采集,并將采集數據匯總到城市數據中心來實現海量數據的存儲與分析。接下來,我們將對比 Apache IoTDB 和 InfluxDB 開源版的端邊云同步能力。

Apache IoTDB

Apache IoTDB 原生內置流處理引擎,支持端邊云同步功能,并擁有良好的性能、可拓展性和可用性等。

InfluxDB架構對比圖2-20240621.png

  • 近存儲計算,以最小 IO、CPU 和網絡代價利用數據進行計算,可對核心場景充分優化。Apache IoTDB 充分利用了時序數據庫中存儲文件的高壓縮率特點,將存儲引擎  IoTLSM-Tree 中的數據存儲文件 TsFile 作為傳輸單位,降低傳輸的網絡流量并減小云端負載。

  • Apache IoTDB 端邊云同步框架允許用戶實現自定義的流處理邏輯,可以實現對存儲引擎數據變更的監聽和捕獲、完成對變更數據的處理、實現對變形后數據的向外推送等邏輯。基于自定義流處理插件編程接口,用戶可以輕松編寫數據抽取插件、數據處理插件和數據發送插件,從而使得流處理功能靈活適配各種工業場景,相比 ETL 或用戶手動實現的 CDC 更好用易用。

  • 提出一種基于日志與文件混合傳輸的時序數據庫數據同步方法。通過動態選擇利用日志文件和數據文件進行同步,可以在保證較低延遲的同時,盡量增大數據吞吐量。

  • 支持分布式高可用。流處理引擎原生支持進度記錄、出錯自動重試、斷點重算等特性,同時支持 at-least-once 傳輸語義,保證端到端 100% 一致性。

InfluxDB架構對比圖3-20240621.png

InfluxDB

InfluxDB 開源版在端邊云同步方面的功能相對有限。雖然 InfluxDB 開源版可以通過 Telegraf 代理從邊緣設備收集數據,但其本身并不提供專門的同步工具或協議來實現端邊云同步。

開發者通常需要依賴第三方工具或定制解決方案來實現數據的同步和傳輸。例如,可以使用 Kapacitor 進行數據處理和傳輸,或者借助 MQTT、HTTP 等協議手動實現數據同步。這種方式雖然靈活,但也增加了實現的復雜性和維護成本。InfluxDB 企業版提供了更多的同步和集成選項,但這些功能在開源版中并不包含。

04 性能

性能無疑是時序數據庫選型中最重要的指標之一。接下來,本文將基于 benchANT 對 Apache IoTDB 和 InfluxDB 開源版進行性能對比。

benchANT 是德國一家專門做云設施和數據庫性能評估的測試機構。在用戶對數據庫選型很難找到以性能、功能表現為參考基準榜單的情況下,benchANT 致力于在統一的硬件資源和系統配置下對各類主流數據庫系統做性能測試,并依據各項指標進行排名。

基于 benchANT 排行榜的評估結果與其提供的測試環境、條件,Apache IoTDB 團隊試圖還原了 benchANT 排行榜針對 Apache IoTDB 性能與成本指標的測試流程,并與 InfluxDB 的數據表現進行了對比。

  • Apache IoTDB 的寫入吞吐量(Write Throughput)通過導入 2,617,920,000 個數據點并計算所需的耗時得到, InfluxDB 測試結果為 52 萬點/秒,而 Apache IoTDB 可達到 363 萬點/秒,為 InfluxDB 的 7 倍。

  • Apache IoTDB 的查詢延遲(Read Latency)通過查詢“1 個設備的 1 個測點在 1 個小時內按照 1 分鐘進行分段聚合的值”這一場景計算得到,InfluxDB 測試結果約為 45 毫秒,而 Apache IoTDB 可達到 2 毫秒,響應速度比 InfluxDB 快 20 倍以上。

  • Apache IoTDB 的存儲占用(Storage Comsumption)通過在測試結束時記錄存儲空間占用得到, InfluxDB 測試結果為 3 GiB,而 Apache IoTDB 僅占用 2 GiB,存儲成本比 InfluxDB 減少 33%。

  • benchANT 使用讀取吞吐量(Read Throughput)/ 月成本(Monthly Costs),計算出的成本效益(Operations Per Cost),也就是代表“每一美元能夠置換多少的讀取性能”,進而評估時序數據庫的投入性能比。在這一指標中, InfluxDB 成本效益為 12.37 ops/$,而 Apache IoTDB 則達到 64.59 ops/$,約為 InfluxDB 的 5 倍。

InfluxDB架構對比圖4-20240621.png

05 總結

在選擇適合物聯網和大數據應用的時序數據庫時,了解不同數據庫在架構設計、功能和性能方面的差異是至關重要的。本文對 Apache IoTDB 和 InfluxDB 開源版進行了詳細對比,重點分析了它們在分布式架構、端邊云同步能力和性能方面的表現。通過本文的對比分析,希望能夠為開發者和決策者在選擇時序數據庫時提供有價值的參考,在復雜多變的物聯網和大數據環境中做出最優選擇!

更多內容推薦:

? 了解如何使用 IoTDB 企業版