开发指南
本文面向应用开发者概要介绍了如何基于Lindorm时序引擎开发应用程序。
应用开发步骤
一般来说,开发者需要按照如下步骤进行开发。
1. 选择SDK
Lindorm提供了以SQL为主的多种形态接口,方便开发者编写访问时序引擎的应用程序。
Java语言开发的应用程序:Lindorm提供Java Native SDK和JDBC Driver。
推荐开发者使用Java Native SDK。因为其提供了更加高效易用的使用方法,支持底层连接管理、数据攒批写入、错误重试等功能,优化了数据传输编码,写入效率更高。
其他语言开发的应用程序:Lindorm提供基于HTTP协议的API和行协议写入。
推荐开发者使用行协议写入数据,并使用HTTP API提供的SQL接口进行数据查询。
2. 数据建模
针对业务场景进行数据建模,需要确定创建数据库和时序数据表,确定时序数据表的标签、时间戳和量测值,并根据数据特征确定PRIMARY KEY用于数据分片。关于数据模型,请参见数据模型。
时序引擎提供了三种Schema约束策略,分别为强约束、弱约束、无约束,分别应对Schema和Schemaless的场景,详情请参见Schema约束。
3. 数据写入
时序引擎支持Java Native SDK写入、行协议写入、标准SQL写入等多种写入方法,其中,Java Native SDK写入、行协议写入以及兼容TSDB接口的多值写入提供了Schema弱约束,以应对Schemaless场景下自动建表的需求。请根据业务情况选择数据写入方法。
4. 数据查询
时序引擎提供标准的SQL访问能力,并根据时序特性扩展了SQL时序特性,支持降采样、聚合、最新值查询等时序特性的查询能力。
5. 连续查询
连续查询应用于大数据查询的场景。通过创建连续查询对新写入的数据预聚合处理,减少实时查询的数据量,从而减少计算量并降低查询延迟。
6. 预降采样
预降采样应用于较长时间范围的数据查询场景。在数据写入时按照设置的规则将原始数据降低精度存储,降采样查询时,通过查询低精度数据来减少查询的数据量,从而降低查询延迟。
使用OpenTSDB或时间序列数据库TSDB的应用开发步骤
Lindorm时序引擎兼容相关接口,对于已有使用OpenTSDB或者时间序列数据库TSDB的应用程序,您可以按照以下步骤进行应用迁移:
应用适配
修改应用程序中的连接字符串,连接的目标从原有的OpenTSDB或时间序列数据库TSDB改为Lindorm时序引擎。Lindorm时序引擎连接字符串的获取方法请参见查看连接地址。
结合Lindorm时序引擎的能力修改应用程序。
基于HTTP API开发的应用程序:Lindorm时序引擎支持的HTTP API基本兼容时间序列数据库TSDB的API。
基于时间序列数据库TSDB的SDK开发的Java应用程序:Lindorm时序引擎兼容了时间序列数据库TSDB的90%以上的能力,基本可以无缝迁移。
使用多值模型写入:数据默认写入default数据库。Schema约束策略默认为无约束,即不会自动创建时序数据表。如果需要使用SQL查询数据,可以手动创建时序数据表或将Schema约束策略设置为弱约束。时序引擎基于SQL提供了更多的时序特性功能和更好的性能,推荐开发者使用SQL查询数据。
使用OpenTSDB或单值模型写入:Schema约束策略为无约束,即无法创建时序数据表,且不兼容SQL查询。
应用代码连接到Lindorm时序引擎进行测试,测试无误后即可上线运行。
数据迁移
支持时间序列数据库TSDB全量迁移至Lindorm时序引擎,具体操作,请参见TSDB全量迁移至时序引擎。
使用Prometheus的应用开发步骤
时序引擎支持remote write和remote read接口作为远端存储,并提供原生PromQL查询能力,具体操作,请参见通过Prometheus访问时序引擎。
使用InfluxDB的应用开发步骤
时序引擎支持InfluxDB兼容的行协议写入,具体操作,请参见行协议参考。