眾多的時序數據庫(Time Series Database)以及傳統的實時數據庫(Real Time Database),都采用自(zi)己(ji)(ji)的(de)查(cha)詢(xun)語言(yan),有的(de)甚至只能(neng)(neng)使用 API 來做(zuo)查(cha)詢(xun)。TDengine Database 從誕生(sheng)的(de)第一天(tian)起,就(jiu)支持(chi) SQL,將 SQL 做(zuo)為自(zi)己(ji)(ji)的(de)查(cha)詢(xun)語言(yan),因為 TDengine 團隊認(ren)為 SQL 是世界上最簡單易用、最流(liu)行的(de)查(cha)詢(xun)語言(yan),為眾多(duo)程序員(yuan)所喜(xi)愛,這樣能(neng)(neng)夠降低學(xue)習(xi)門檻(jian)和應用程序遷移成本。同時(shi),為方便大(da)家對(dui)時(shi)序數據進(jin)行分析處理,TDengine Database 對(dui)標準 SQL 進(jin)行了擴展。
與InfluxDB的查詢的簡單對比
InfluxDB 從 2.0 版起,采用(yong) Flux 查詢語言,我們僅(jin)僅(jin)拿一(yi)個最簡單(dan)的例子來讓大家知道(dao)使用(yong) SQL 和 Flux的難易程度。
假設(she)要(yao)從庫 power 里查詢上(shang)海所有智能電表 smter 在過去的一個小時里每分鐘的電壓(ya)平(ping)均(jun)值,Flux 的查詢會(hui)是:
from(bucket:"power")
|> range(start:-1h)
|> filter(fn:(r) =>
r._measurement == "smeter" and
r._field = "voltage" and
r.location == "shanghai"
)
|> aggregateWindow(every: 1m, fn: mean)
如果用 TDengine 來寫,查詢語(yu)句會是(shi):
select avg(voltage) from power.smeter where ts > now -1h and location = "shanghai" interval(1m)
對比兩種查詢(xun)語句,自然(ran)可以得出結論。
數據寫入:
InfluxDB、Prometheus 和 OpenTSDB 等眾多時序數(shu)據庫(ku)采用 schemaless 寫(xie)入,這對(dui)于不熟悉數(shu)據庫(ku)的(de)開發(fa)者(zhe)而言,很容易上手。TDengine 采用傳統的(de)關系型(xing)模(mo)型(xing),需要用戶定義 schema,對(dui)于數(shu)據寫(xie)入,增加了初學者(zhe)的(de)難度。為了解決這一問題,TDengine Database 從 2.4 版本起,開始支(zhi)持 schemaless 寫(xie)入,方便初學者(zhe)的(de)數(shu)據寫(xie)入操(cao)作。
不僅如此,TDengine 現在支持 InfluxDB 的 LINE 格式寫入,現有 Telegraf 或其他數據采集應用不用修改代碼,只需將寫入的 URL 改為 TDengine Database 集群的 IP 地址即可。而且 TDengine 還支持 OpenTSDB 的多種協議,包括 Telnet、JSON 等數據的寫入,詳細請看《TDengine 高效數據寫入》。
SQL擴展
時(shi)序數據的(de)分析處理有(you)其特(te)點,需(xu)要有(you)一些特(te)殊(shu)的(de)分析函數,這(zhe)是(shi)傳統的(de)關系型數據庫不(bu)支持(chi)的(de)。為便(bian)于開發者使用,TDengine 提(ti)供了下列 SQL 擴(kuo)展:
- interval: TDengine 按時間區間對采集的數據進行聚合,比如計算每 5 分鐘的電壓平均值
- fill: 在某個具體的時間點,并沒有數據,但是 TDengine 可以根據這個時間點前后數據進行插值計算,提供給應用
- sliding: 滑動窗口,TDengine 可以每隔指定的時間間隔進行查詢計算
- last_row: 返回一張表某一列最后的非 NULL 值,這個對于 IoT 應用非常重要,因為設備的當前狀態是需要快速獲取的
- tavg: 時間加權平均,在工業互聯網中,該平均經常被用到
- spread: 統計某列的最大值和最小值之差
- ……
TDengine 3.0 版本更新(xin)了大量時序數據特有(you)函數和特色查詢,詳(xiang)見《》。
更多亮點 >>


























