TDengine 文檔
TDengine 是一個高效的存儲、查詢、分析時序大數據的平臺,專為物聯網、車聯網、工業互聯網、運維監測等優化而設計。您可以像使用關系型數據庫 MySQL 一樣來使用它,但建議您在使用前仔細閱讀一遍下面的文檔,特別是 數據模型 與 數據建模。除本文檔之外,歡迎 下載產品白皮書。
TDengine 介紹
立即開始
- 快捷安裝:可通過源碼、安裝包或 Docker 安裝,三秒鐘搞定
- 輕松啟動:使用 systemctl 啟停 TDengine
- 命令行程序 TAOS:訪問 TDengine 的簡便方式
- 極速體驗:運行示例程序,快速體驗高效的數據插入、查詢
- 支持平臺列表:TDengine 服務器和客戶端支持的平臺列表
- :TDengine 在 Kubernetes 環境進行部署的詳細說明
整體架構
- 數據模型:關系型數據庫模型,但要求每個采集點單獨建表
- 集群與基本邏輯單元:吸取 NoSQL 優點,支持水平擴展,支持高可靠
- 存儲模型與數據分區、分片:標簽數據與時序數據完全分離,按 VNode 和時間兩個維度對數據切分
- 數據寫入與復制流程:先寫入 WAL、之后寫入緩存,再給應用確認,支持多副本
- 緩存與持久化:最新數據緩存在內存中,但落盤時采用列式存儲、超高壓縮比
- 數據查詢:支持各種函數、時間軸聚合、插值、多表聚合
數據建模
TAOS SQL
- 支持的數據類型:支持時間戳、整型、浮點型、布爾型、字符型等多種數據類型
- 數據庫管理:添加、刪除、查看數據庫
- 表管理:添加、刪除、查看、修改表
- 超級表管理:添加、刪除、查看、修改超級表
- 標簽管理:增加、刪除、修改標簽
- 數據寫入:支持單表單條、多條、多表多條寫入,支持歷史數據寫入
- 數據查詢:支持時間段、值過濾、排序、嵌套查詢、Union、Join、查詢結果手動分頁等
- SQL 函數:支持各種聚合函數、選擇函數、計算函數,如 AVG, MIN, DIFF 等
- 窗口切分聚合:將表中數據按照時間段等方式進行切割后聚合,降維處理
- 邊界限制:庫、表、SQL 等邊界限制條件
- UDF:用戶定義函數的創建和管理方法
- 錯誤碼:TDengine 2.0 錯誤碼以及對應的十進制碼
高效寫入數據
- SQL 寫入:使用 SQL INSERT 命令向一張或多張表寫入單條或多條記錄
- Schemaless 寫入:免于預先建表,將數據直接寫入時自動維護元數據結構
- Prometheus 寫入:配置 Prometheus, 不用任何代碼,將數據直接寫入
- Telegraf 寫入:配置 Telegraf, 不用任何代碼,將采集數據直接寫入
- collectd 直接寫入:配置 collectd,不用任何代碼,將采集數據直接寫入
- StatsD 直接寫入:配置 StatsD,不用任何代碼,將采集數據直接寫入
- EMQX Broker:配置 EMQX,不用任何代碼,就可將 MQTT 數據直接寫入
- HiveMQ Broker:配置 HiveMQ,不用任何代碼,就可將 MQTT 數據直接寫入
高效查詢數據
高級功能
- 連續查詢(Continuous Query):基于滑動窗口,定時自動的對數據流進行查詢計算
- 數據訂閱(Publisher/Subscriber):類似典型的消息隊列,應用可訂閱接收到的最新數據
- 緩存(Cache):每個設備最新的數據都會緩存在內存中,可快速獲取
連接器
- C/C++ Connector:通過 libtaos 客戶端的庫,連接 TDengine 服務器的主要方法
- Java Connector(JDBC):通過標準的 JDBC API,給 Java 應用提供到 TDengine 的連接
- Python Connector:給 Python 應用提供一個連接 TDengine 服務器的驅動
- RESTful Connector:提供一最簡單的連接 TDengine 服務器的方式
- Go Connector:給 Go 應用提供一個連接 TDengine 服務器的驅動
- Node.js Connector:給 Node.js 應用提供一個連接 TDengine 服務器的驅動
- C# Connector:給 C# 應用提供一個連接 TDengine 服務器的驅動
- Windows 客戶端:自行編譯 Windows 客戶端,Windows 環境的各種連接器都需要它
- Rust Connector: Rust 語言下通過 libtaos 客戶端或 RESTful 接口,連接 TDengine 服務器。
- PHP Connector: 給 PHP 應用提供一個連接 TDengine 服務器的驅動,或 RESTful 接口,連接 TDengine 服務器。
TDengine 組件與工具
- taosAdapter: TDengine 集群和應用之間的 RESTful 接口適配服務。
- TDinsight: 監控 TDengine 集群的 Grafana 面板集合。
- taosTools: taosTools 是用于 TDengine 的輔助工具軟件集合。。
- taosdump: TDengine 數據備份工具。使用 taosdump 請安裝 taosTools。
- taosBenchmark: TDengine 壓力測試工具。
與其他工具的連接
- Grafana:獲取并可視化保存在 TDengine 的數據
- IDEA Database:通過 IDEA 數據庫管理工具可視化使用 TDengine
- :基于 Electron 開發的跨平臺 TDengine 圖形化管理工具
- DataX:支持 TDengine 和其他數據庫之間進行數據遷移的工具
- :與 TDengine 有關的精彩項目精選清單
TDengine 集群的安裝、管理
- 準備工作:部署環境前的幾點注意事項
- 創建第一個節點:與快捷安裝完全一樣,非常簡單
- 創建后續節點:配置新節點的 taos.cfg, 在現有集群添加新的節點
- 節點管理:增加、刪除、查看集群的節點
- VNode 的高可用性:通過多副本的機制來提供 VNode 的高可用性
- MNode 的管理:系統自動創建、無需任何人工干預
- 負載均衡:一旦節點個數或負載有變化,自動進行
- 節點離線處理:節點離線超過一定時長,將從集群中剔除
- Arbitrator:對于偶數個副本的情形,使用它可以防止腦裂(Split-brain)問題
TDengine 的運營和維護
- 容量規劃:根據場景,估算硬件資源
- 容錯和災備:設置正確的 WAL 和數據副本數
- 系統配置:端口,緩存大小,文件塊大小和其他系統配置
- 用戶管理:添加、刪除 TDengine 用戶,修改用戶密碼
- 數據導入:可按腳本文件導入,也可按數據文件導入
- 數據導出:從 Shell 按表導出,也可用 taosdump 工具做各種導出
- 系統連接、任務查詢管理:檢查系統現有的連接、查詢、流式計算,日志和事件等
- 系統監控:系統監控,使用 TDinsight 進行集群監控等
- 性能優化:對長期運行的系統進行維護優化,保障性能表現
- 文件目錄結構:TDengine 數據文件、配置文件等所在目錄
- 參數限制與保留關鍵字:TDengine 的參數限制與保留關鍵字列表
TDengine 的技術設計
應用 TDengine 快速搭建 IT 運維系統
- DevOps:使用 TDengine + Telegraf + Grafana 快速搭建 IT 運維系統
- DevOps:使用 TDengine + collectd/StatsD + Grafana 快速搭建 IT 運維系統
- 最佳實踐:OpenTSDB 應用遷移到 TDengine 的最佳實踐
TDengine 與其他數據庫的對比測試
- 用 InfluxDB 開源的性能測試工具對比 InfluxDB 和 TDengine
- TDengine 與 OpenTSDB 對比測試
- TDengine 與 Cassandra 對比測試
- TDengine 與 InfluxDB 對比測試
- TDengine 與 InfluxDB、OpenTSDB、Cassandra、MySQL、ClickHouse 等數據庫的對比測試報告
物聯網大數據
培訓和 FAQ
- FAQ:常見問題與答案
- 技術公開課:開源、高效的物聯網大數據平臺,TDengine 內核技術剖析
- TDengine 視頻教程 - 快速上手
- TDengine 視頻教程 - 數據建模
- TDengine 視頻教程 - 集群搭建
- TDengine 視頻教程 - Go Connector
- TDengine 視頻教程 - JDBC Connector
- TDengine 視頻教程 - Node.js Connector
- TDengine 視頻教程 - Python Connector
- TDengine 視頻教程 - RESTful Connector
- TDengine 視頻教程 - “零”代碼運維監控
- 應用案例:一些使用實例來解釋如何使用 TDengine

