Lindorm時序引擎提供標準的SQL查詢能力、PromQL查詢能力、TSDB相容的查詢能力。本文介紹時序資料查詢的方法。
標準SQL查詢
Lindorm時序引擎推薦使用標準SQL進行資料查詢。Lindorm時序引擎針對SQL查詢做了許多查詢最佳化,提升大多數情境的查詢效能、減少服務端的資源佔用、提高服務端的穩定性。
特性
提供了豐富的時序特性的函數運算元。請參見常用時序函數。
藉助Calcite能力,提供了豐富的SQL計算分析能力,更多資訊,請參見calcite官方手冊。
詳情,請參見SQL文法參考。
SQL查詢支援的訪問方式
SQL查詢支援Java Native SDK、JDBC Driver、HTTP SQL API。
訪問方式 | 適用情境 | 描述 | 具體操作 |
Java Native SDK | Java應用開發 | 支援流式資料轉送,無需管理底層串連,提供安全執行緒的介面調用。 | |
JDBC Driver | Java應用開發,需要配合架構使用的情境 | 需要自己管理串連池,或著使用Druid進行串連池管理,可以配合ORM架構使用。 | |
HTTP SQL API | 非Java語言的應用開發 | 提供基於HTTP協議的API實現SQL的互動,支援流式返回結果資料。 |
SQL查詢樣本
Lindorm時序引擎通過擴充SAMPLE BY子句來實現時序特性的擴充。SAMPLE BY用於單個時間軸降採樣計算,GROUP BY用於多個時間軸彙總計算。SAMPLE BY和GROUP BY不能出現在同一個子句中,但可以配合子查詢來實現。樣本如下:
使用
SAMPLE BY對單個時間軸進行降採樣查詢,並指定資料精度為8小時。SELECT device_id,region,time,count(humidity) AS count_humidity FROM sensor WHERE device_id='F07A1260' sample by 8h;使用
SAMPLE BY子查詢對多個時間軸進行降採樣查詢,降低資料精度,再通過GROUP BY按裝置ID進行彙總計算。SELECT device_id, max(avg_humidity) AS max_humidity FROM (SELECT device_id,region,time,avg(humidity) AS avg_humidity FROM sensor sample by 8h) group by device_id;
相容時間序列資料庫TSDB的查詢
針對時間序列資料庫TSDB遷移使用者,時序引擎相容了時間序列資料庫TSDB 90%以上的能力,基本可以無縫遷移。建議您將應用改造為SQL的方式進行資料查詢。
相容TSDB介面的多值查詢
多值查詢可以查詢以下四種方式寫入的資料:相容TSDB介面的多值寫入、HTTP SQL API寫入、Java Native SDK寫入、行協議寫入。
時間序列資料庫TSD的metric與Lindorm時序引擎的table對應。
相關文檔
相容TSDB介面的單值查詢
單值查詢可以查詢通過相容TSDB介面進行單值寫入的資料。單值模型不再推薦使用。
通過相容TSDB介面的多值寫入、HTTP SQL API寫入、Java Native SDK寫入、行協議寫入等四種方式寫入的資料,在進行單值查詢時,需要將metric指定為metric@field來相容多值資料的讀取。其中,metric為table名,field為具體查詢值的列名。
相關文檔
Grafana外掛程式訪問
Grafana服務是用於展示大型測量資料的開源視覺化檢視。Grafana可以通過Alibaba Cloud Lindorm資料來源外掛程式或OpenTSDB資料來源外掛程式訪問時序資料。
Grafana使用Lindorm外掛程式訪問
Lindorm時序引擎提供了Grafana的Alibaba Cloud Lindorm資料來源外掛程式,該外掛程式使用SQL來訪問Lindorm時序資料。您可以使用編輯框自動產生SQL或者自訂SQL的方法查詢資料。具體操作,請參見通過Grafana訪問時序引擎。
Grafana使用OpenTSDB外掛程式訪問
Lindorm時序引擎提供OpenTSDB相容資料訪問API,支援Grafana的OpenTSDB資料來源外掛程式訪問Lindorm時序資料。
通過相容TSDB介面的多值寫入、HTTP SQL API寫入、Java Native SDK寫入、行協議寫入等四種方式寫入的資料,在進行查詢時,需要將metric指定為metric@field來相容多值資料的讀取。其中,metric為table名,field為具體查詢值的列名。
提升查詢效能
方法 | 適用情境 | 描述 | 區別 |
使用預彙總提升查詢效能 | 大量時間軸即時彙總查詢 | 預彙總通過使用Lindorm時序引擎提供的資料的持續查詢功能,提前將需要查詢的結果進行計算後轉存到結果表,查詢時指定查詢結果表,即可快速查詢結果。 | 預彙總是一種對資料預計算的方法,預彙總之後的結果表和原表屬於不同的表,查詢時需要指定不同的資料表。 |
使用預降採樣查詢提升查詢效能 | 大範圍的時間查詢 | 預降採樣通過儲存引擎將寫入的資料降低精度後單獨儲存,查詢時按查詢條件中指定的降採樣精度自動查詢最接近預降採樣精度的資料,然後再對查詢的資料進行彙總計算,減少即時查詢的計算資料量,降低訪問延遲。 | 預降採樣是一種降低資料精度的方法,預降採樣後的資料和未經處理資料儲存在同一張表中,查詢時無需查詢不同的資料表。 |