TDengine 是一款開源、云原生的時序數據庫,專為物聯網、工業互聯網、金融、IT 運維監控等場景設計并優化。它能讓大量設備、數據采集器每天產生的高達 TB 甚至 PB 級的數據得到高效實時的處理,對業務的運行狀態進行實時的監測、預警,從大數據中挖掘出商業價值。
一、高性能的時序數據庫
通過充分利用時序大數據的特點,TDengine團隊設計了新穎的存儲引擎,大幅提升了數據的寫入和查詢速度,同時也大幅提高了數據壓縮率。與通用數據庫相比,性能好至少十倍以上,而存儲空間不到其1/5,與其他時序數據庫相比,性能也是遠超。與流行的時序數據庫 InfluxDB 相比,完全采用 InfluxDB 自身提供的測試框架、數據集和測試場景寫入速度至少是2倍以上,在設備數量超過1000以后,寫入速度是5.2倍。對于查詢場景,極個別的與InfluxDB速度持平,絕大部分都是幾倍的速度,有的甚至高達40倍。數據壓縮上,TDengine 也表現更好,存儲空間不到 InfluxDB 的 70%。
二、極簡的時序數據處理平臺
時序數據庫(Time Series Data, TSDB)是一個專門為時序數據優化設計的數據庫,用于以高效的方式存儲和分析時序數據。但是時序數據處理需要的不僅僅是存儲和分析。在典型的時序數據處理平臺中,TSDB 總是與流處理、緩存、數據訂閱和其他工具集成在一起。這使得系統設計復雜且難以維護。此外,它還需要消耗更多的計算和存儲資源。
為了降低系統設計復雜度和運行成本,TDengine 充分利用時間序列數據的特點,構建了自己的緩存、流計算和數據訂閱功能。它不僅提供了一種高效的時間序列數據存儲和分析方式,還為時間序列數據處理提供了一種極簡的解決方案(Simplified Solution for Time Series Data)。
三、云原生時序數據庫
云原生數據庫 (Cloud Native Data) 是指充分利用了云計算平臺以及分布式系統的優勢而設計的數據庫。云原生數據庫提供了按照實際使用資源量來計費的能力,以降低運營成本。此外,它提供了快速開發原型、研發、測試以及部署新的應用的能力,可以大大縮短新的應用從設計開發到進入市場的時間。
作為一個云原生,而不只是能在云上運行的時序數據庫(Time Series Data),TDengine 具備云原生數據庫的幾大特點:水平擴展性(Scalability)、彈性(Elasticity)、韌性(Resiliency)、可觀測性(Observability)以及運維自動化(Automation)。
四、開源的時序數據庫
定位于為 IoT、IIoT 等場景專門打造的時序數據庫(Time Series Data, TSDB),TDengine 的研發始于 2016 年 12 月。經過 2 年多的研發后,TDengine 團隊在 2019 年 7 月將單機版開源,2020 年 8 月又將集群版開源。TDengine 的核心服務器代碼 taosd 采用 AGPL 開源協議,但為便于與第三方工具集成,taosAdapter 以及多個連接器都采用 MIT 開源協議。沒有選擇 Apache 協議,而采用 AGPL 協議的唯一目的是阻止云廠商免費使用開源版本。
TDengine 項目十分活躍,從 2019 年開源到 2022 年 8 月 1 日,Pull Request 總次數已經達到 12.6k,commit 次數已經超過 69k。2022 年 1 月 1 日至 2022 年 8 月 1 日,Pull Request 數量超過 5.6k,代碼 commit 次數超過 15.8k。目前 TDengine 的代碼除了自己的研發團隊外,外部的代碼貢獻者已經超過 100 人。到目前為止,TDengine 項目在 GitHub 上總共收獲了 19.5k star,全球安裝實例數已經超過 157.1k,用戶遍布全球五十多個國家和地區。
TDengine 在 2019 年開源后,很快發行了 1.6 版,2020 年 8 月發行了 2.0 版,2022 年 8 月發行了 3.0 版。相對于 2.x 版,3.0 解決了業內的 High Cardinality 問題,能支持 10 億條以上的時間線,100 個節點以上的集群。它在分布式設計的基礎上,實現了計算和存儲分離,讓 TDengine 從 3.0 起成為了一個云原生時序數據庫(Cloud Native Time-Series Data)。而且 3.0 將流計算、數據訂閱功能完全重構,極大地提高了效率,讓 TDengine 為時序數據的處理提供了一個極簡的平臺。同時,TDengine 3.0 重構了查詢計算引擎,對 SQL 提供了更多支持,讓很多復雜查詢得以進行。
五、強大而又簡單易用的數據分析能力
對于數據分析師來說,花費大量時間處理數據并不罕見。因為關系型數據庫可以提供復雜的分析能力,一種方法便是將時間序列數據存入關系型數據庫進行分析。直接將實時數據寫入關系數據庫存在重大的寫入性能瓶頸,因此往往先將時序數據寫入時序數據庫(Time Series Data, TSDB),然后從時序數據庫批量導出數據,格式化并轉換數據后,將其加載到關系數據庫或數據倉庫中進行分析。這種解決方案完全可以工作,但復雜且成本高昂。
另外一種方法就是使用支持 SQL 查詢語言的時序數據庫。SQL 是一種用于選擇、過濾和將數據連接在一起進行數據分析的強大工具。TDengine 是支持 SQL 的時序數據庫,對于數據分析師而言,使用 TDengine 就像在使用一個關系型數據庫。而且通過超級表、存儲和計算分離、數據按時間分區、預計算等多種手段,TDengine 提供了強大而又簡單易用的分析能力。具體而言,TDengine 的分析能力具有以下顯著特點:
1、多個數據采集點之間的高效聚合:TDengine 針對時序數據的特點,提出創新的超級表概念,將時序數據與標簽數據分離存儲。無需 JOIN,只需要指定超級表的標簽過濾條件,就可將同類型的數據采集點進行高效的聚合操作,這使得組織和查找數據更加簡單。此外,TDengine 允許向每個數據采集點添加多達 128 個標簽,也支持在以后刪除和更新這些標簽。TDengine 提供了一種將數據切割成多維立方體以進行多維分析的強大方法。
2、計算存儲分離:從 3.0 起,TDengine 支持存算分離,系統可以根據需要,啟動一個或多個計算節點,增加計算資源,加快復雜查詢的速度,減小 Latency。對于云平臺,計算節點可以是一個容器,可以快速地啟動或停止,計算存儲分離將充分利用云平臺的彈性計算資源。
3、歷史與實時數據的分析完全統一:TDengine 按時間段對數據自動進行分區,即使是 10 年的數據,也無需分庫分表,不存在檔案數據一說。為降低存儲成本,按照數據的新老程度,實行多級存儲,但對用戶而言是完全透明的。無論是查詢最新數據還是 10 年前的數據,只是查詢的起止時間不同。
4、時序數據分析的特有功能:TDengine 在標準 SQL 的基礎上,針對時序數據的處理進行擴展,提供累計求和、時間加權平均、移動平均、變化率、時間窗口,session 窗口、state 窗口、插值等眾多時序數據分析功能。通過時間窗口和插值,可以將不同數據采集點的數據按固定時間間隔將數據的時間戳對齊,便于后續的進一步分析??梢詤⒖?SQL手冊了解更多信息。
5、實時數據分析:TDengine 既提供了時間驅動的流式計算(連續查詢),也提供了事件驅動的流式計算。不僅可以對單個數據采集點生成的數據流進行流式計算,也可以對多個采集點的數據流聚合后進行流式計算。對自定義函數的支持更是讓流計算能方便地提供對數據的前置處理、轉換或任何其他復雜計算。關于流式計算,請看用戶文檔流式計算。
6、支持Python:不僅提供 Python 連接器,還支持 Pandas 及 data ,讓喜愛 Python 的數據分析師可以很方便地利用各種 Python 庫做時序數據分析。
7、其他便捷的數據訪問、分析手段:利用 TDengine 提供的命令行程序,可以在終端執行各種即席查詢、或者導入導出數據。提供 R 與 Matlab 以及多種編程語言的連接器,支持與 Grafana、Google Data Studio 的無縫集成。
在一般的場景下,TDengine 可以作為時序數據倉庫(Time-Series Data Warehouse) 使用,不再需要將時序數據導入到專門的數據倉庫或數據湖進行處理分析,數據平臺的成本將大幅降低。
六、簡單易用的時序數據庫
TDengine 作為一款時序數據庫(Time Series Data),為時序數據的處理提供了一強大而又簡單易用的平臺。一個數據采集點一張表、超級表和標簽的核心設計使得寫入和查詢的性能極大提升,而且讓組織和查找數據變得更加簡單。對于數據庫管理員來說,TDengine 顯著減少了系統部署維護和管理數據的工作量。對于開發人員來說,TDengine 提供了簡單的接口、極簡的解決方案,并支持與眾多第三方工具的無縫集成。對于數據用戶說,TDengine 提供了便利的獲取數據的方式。
輕松管理
1、部署 – TDengine 的標準安裝包才 8 MB,而且沒有任何依賴,從下載、安裝到運行,僅需幾秒鐘。集群的管理都是通過簡單的 SQL 語句進行,并支持容器和 Kubernetes 部署。更多信息請參考用戶文檔部署。
2、監測 – TDengine 提供了 Grafana 插件 TDinsight。您可通過可視化看板了解系統的各種狀態和監測指標,并設置報警。了解更多,請看用戶文檔 TDinsight。
3、數據復制:TDengine 企業版提供了一個強大的工具 taosX,它允許將數據庫、超級表或子表的數據從一個集群復制到另一個集群,或保存到一個文件。taosX 能夠將任何邊緣、中心或云端集群的數據復制或同步到任何其他邊緣、中心或云端集群,以便輕松地將數據保存在用戶希望的地方。
易于開發
1、連接器 – 可以使用 C/C++、Java、Python、Go、Node.js、C# 和 Rust 的連接器以及示例代碼來構建自己的應用程序。更多信息請查看用戶文檔連接器。
2、SQL支持 – 采用標準 SQL,沒有學習成本,可以使用 SQL 插入、查詢數據以及管理集群。了解更多,請看SQL手冊。
3、無縫集成 – 無需一行代碼,TDengine 就可以與 Kafka、Telegraf、Grafana、Google Data Studio、EMQ X、Prometheus、StatsD 和 Collectd 等眾多第三方工具集成。了解更多,請查看用戶文檔第三方工具。
4、極簡的時序數據處理平臺 – TDengine 具有內置的緩存、流計算和數據訂閱功能,為時間序列數據處理提供了極簡的解決方案,不再需要 Kafka、Redis、Spark、F 或其他類似工具,可以大幅降低系統設計的復雜度和運營成本。了解更多,請查看用戶文檔開發指南。
輕松獲取數據
1、交互式控制臺 – TDengine 命令行程序(CLI) 讓用戶可以直接從 bash 或終端控制臺運行 SQL,與運行的數據庫系統或 TDengine 云服務交互,執行各種即席查詢,導入導出數據等。了解更多,請查看用戶手冊 TDengine CLI。
2、與分析工具集成 – 使用 Python、R 和 Matlab 的連接器,參考示例代碼,將數據導出到這些更專業的工具進行分析。了解更多,請查看用戶文檔連接器。
3、可視化 – 支持 Grafana 與 Google Data Studio 集成,不需要任何代碼,即可創建自己的數據看板。
本文參考:https://www.taosdata.com