開發(fā)指南
本文面向應用開發(fā)者概要介紹了如何基于Lindorm時序引擎開發(fā)應用程序。
應用開發(fā)步驟
一般來說,開發(fā)者需要按照如下步驟進行開發(fā)。
1. 選擇SDK
Lindorm提供了以SQL為主的多種形態(tài)接口,方便開發(fā)者編寫訪問時序引擎的應用程序。
Java語言開發(fā)的應用程序:Lindorm提供Java Native SDK和JDBC Driver。
推薦開發(fā)者使用Java Native SDK。因為其提供了更加高效易用的使用方法,支持底層連接管理、數(shù)據(jù)攢批寫入、錯誤重試等功能,優(yōu)化了數(shù)據(jù)傳輸編碼,寫入效率更高。
其他語言開發(fā)的應用程序:Lindorm提供基于HTTP協(xié)議的API和行協(xié)議寫入。
推薦開發(fā)者使用行協(xié)議寫入數(shù)據(jù),并使用HTTP API提供的SQL接口進行數(shù)據(jù)查詢。
2. 數(shù)據(jù)建模
針對業(yè)務場景進行數(shù)據(jù)建模,需要確定創(chuàng)建數(shù)據(jù)庫和時序數(shù)據(jù)表,確定時序數(shù)據(jù)表的標簽、時間戳和量測值,并根據(jù)數(shù)據(jù)特征確定PRIMARY KEY用于數(shù)據(jù)分片。關于數(shù)據(jù)模型,請參見數(shù)據(jù)模型。
時序引擎提供了三種Schema約束策略,分別為強約束、弱約束、無約束,分別應對Schema和Schemaless的場景,詳情請參見Schema約束。
3. 數(shù)據(jù)寫入
時序引擎支持Java Native SDK寫入、行協(xié)議寫入、標準SQL寫入等多種寫入方法,其中,Java Native SDK寫入、行協(xié)議寫入以及兼容TSDB接口的多值寫入提供了Schema弱約束,以應對Schemaless場景下自動建表的需求。請根據(jù)業(yè)務情況選擇數(shù)據(jù)寫入方法。
4. 數(shù)據(jù)查詢
時序引擎提供標準的SQL訪問能力,并根據(jù)時序特性擴展了SQL時序特性,支持降采樣、聚合、最新值查詢等時序特性的查詢能力。
5. 連續(xù)查詢
連續(xù)查詢應用于大數(shù)據(jù)查詢的場景。通過創(chuàng)建連續(xù)查詢對新寫入的數(shù)據(jù)預聚合處理,減少實時查詢的數(shù)據(jù)量,從而減少計算量并降低查詢延遲。
6. 預降采樣
預降采樣應用于較長時間范圍的數(shù)據(jù)查詢場景。在數(shù)據(jù)寫入時按照設置的規(guī)則將原始數(shù)據(jù)降低精度存儲,降采樣查詢時,通過查詢低精度數(shù)據(jù)來減少查詢的數(shù)據(jù)量,從而降低查詢延遲。
使用OpenTSDB或時間序列數(shù)據(jù)庫TSDB的應用開發(fā)步驟
Lindorm時序引擎兼容相關接口,對于已有使用OpenTSDB或者時間序列數(shù)據(jù)庫TSDB的應用程序,您可以按照以下步驟進行應用遷移:
應用適配
修改應用程序中的連接字符串,連接的目標從原有的OpenTSDB或時間序列數(shù)據(jù)庫TSDB改為Lindorm時序引擎。Lindorm時序引擎連接字符串的獲取方法請參見查看連接地址。
結合Lindorm時序引擎的能力修改應用程序。
基于HTTP API開發(fā)的應用程序:Lindorm時序引擎支持的HTTP API基本兼容時間序列數(shù)據(jù)庫TSDB的API。
基于時間序列數(shù)據(jù)庫TSDB的SDK開發(fā)的Java應用程序:Lindorm時序引擎兼容了時間序列數(shù)據(jù)庫TSDB的90%以上的能力,基本可以無縫遷移。
使用多值模型寫入:數(shù)據(jù)默認寫入default數(shù)據(jù)庫。Schema約束策略默認為無約束,即不會自動創(chuàng)建時序數(shù)據(jù)表。如果需要使用SQL查詢數(shù)據(jù),可以手動創(chuàng)建時序數(shù)據(jù)表或將Schema約束策略設置為弱約束。時序引擎基于SQL提供了更多的時序特性功能和更好的性能,推薦開發(fā)者使用SQL查詢數(shù)據(jù)。
使用OpenTSDB或單值模型寫入:Schema約束策略為無約束,即無法創(chuàng)建時序數(shù)據(jù)表,且不兼容SQL查詢。
應用代碼連接到Lindorm時序引擎進行測試,測試無誤后即可上線運行。
數(shù)據(jù)遷移
支持時間序列數(shù)據(jù)庫TSDB全量遷移至Lindorm時序引擎,具體操作,請參見TSDB全量遷移至時序引擎。
使用Prometheus的應用開發(fā)步驟
時序引擎支持remote write和remote read接口作為遠端存儲,并提供原生PromQL查詢能力,具體操作,請參見通過Prometheus訪問時序引擎。
使用InfluxDB的應用開發(fā)步驟
時序引擎支持InfluxDB兼容的行協(xié)議寫入,具體操作,請參見行協(xié)議參考。