介绍说明
大约 5 分钟introtime series database
时序库介绍
时序库(Time Series Database,TSDB)
是一种专门用于存储和管理时序数据的数据库。时序数据是指带有时间戳的连续数据点,常见于物联网传感器数据、金融市场数据、服务器监控数据等领域。
- 目前已经支持
influxdb 1.8.x
、influxdb 2.x
、iotdb 1.3.x
、tdengine 3.x
(默认:tdengine)。 - 注意:对于目前支持的这几款时序库,均实现了自动建库,不需要手动建库,配置好数据库名即可,
一、依赖切换
<!-- tdengine 时序库 -->
<dependency>
<groupId>org.springblade</groupId>
<artifactId>blade-tsdb-tdengine</artifactId>
</dependency>
<!-- influxdb 时序库 -->
<dependency>
<groupId>org.springblade</groupId>
<artifactId>blade-tsdb-influxdb</artifactId>
</dependency>
<!-- influxdb2 时序库 -->
<dependency>
<groupId>org.springblade</groupId>
<artifactId>blade-tsdb-influxdb2</artifactId>
</dependency>
<!-- iotdb 时序库 -->
<dependency>
<groupId>org.springblade</groupId>
<artifactId>blade-tsdb-iotdb</artifactId>
</dependency>
二、tdengine 配置
tdengine:
enabled: true # 是否开启,多个时序库插件依赖同时导入可采用此参数配置,开启的时序库
username: root
password: taosdata
database: links # 库名,会自动建库
jdbc-url: jdbc:TAOS-RS://127.0.0.1:6041?useSSL=false
# 数据精度,默认:毫秒
precision: ms
# 数据保存的天数,默认:10年
keep: 3650
# 批量写入相关配置
enable-batch: true # 开启批量写,默认:开
batch-size: 1000 # 批次大小,默认:1000
flush-duration: 1s # 批次写入时间,默认:1s 写入一次
# 连接池相关配置,都采用的 Druid 默认配置,可按需求进行配置,建议改大一些
initial-size: 0 # 初始化的连接数,默认:0
max-active: 8 # 最大活跃连接数,默认:8
min-idle: 0 # 最小活跃连接数,默认:0
max-wait: -1 # 最大等待时间,默认:-1 不限制
tdengine开发细节注意:
- TDengine 自动创建 属性存储 超级表的时机为 物模型发布,需要在平台建立并 发布物模型 之后才能写入数据。
- 已经发布的 物模型字段类型不支持直接更改 需要先删除发布后再重建, 因为 TDengine 默认不支持数据类型调整。
- 已经发布的 text 字段类型的长度只能增加,不能减少,开发是需要合理的考虑长度。要不然只能先删除字段发布后再重建。
- 为了提升系统的整体性能,我们默认开启了批量入库功能。如果产品的物模型尚未发布,但该产品的设备已经开始上报数据,这将导致该批次的所有设备数据入库失败。在开发和调试阶段,建议暂时关闭批量入库功能。
三、influxdb 配置
influxdb:
enabled: true # 是否开启,多个时序库插件依赖同时导入可采用此参数配置,开启的时序库
url: http://127.0.0.1:8086 # influxdb url
username: admin
password: links
database: links # 数据库名,会自动建库
# 批量写入相关配置
enable-batch: true # 开启批量,默认:true
batch-size: 1000 # 批次大小,默认:1000
flush-duration: 1s # 批次写入时间,默认:1s 写入一次
# 其他配置
precision: milliseconds # 数据精度,默认:毫秒
enable-gzip: true # 开启 gzip 压缩,默认:true
influxdb开发细节注意:
- influxDB 不支持数据类型调整,一旦创建后不可更改,如果需要调整数据类型,需要先删除测量对象(measurement)再等待程序自动创建。
四、influxdb2 配置
influxdb2:
enabled: true # 是否开启,多个时序库插件依赖同时导入可采用此参数配置,开启的时序库
url: http://127.0.0.1:8086 # influxdb url
token: admin # 控制台注册成功后的认证token
org: links # 租户概念,数据隔离
bucket: links # 数据库名,会自动建库
# 批量写入相关配置
enable-batch: true # 开启批量,默认:true
batch-size: 1000 # 批次大小,默认:1000
flush-duration: 1s # 批次写入时间,默认:1s 写入一次
# 其他配置
precision: ms # 数据精度,默认:毫秒
enable-gzip: true # 开启 gzip 压缩,默认:true
influxdb开发细节注意:
- influxDB 不支持数据类型调整,一旦创建后不可更改,如果需要调整数据类型,需要先删除测量对象(measurement)再等待程序自动创建。
五、iotdb 配置
iotdb:
enabled: true # 是否开启,多个时序库插件依赖同时导入可采用此参数配置,开启的时序库
host: localhost # 用于单机:指定 iotdb ip,默认:localhost
port: 6667 # 用户单机:指定 iotdb 端口,默认:6667
node-urls: # 用于 iotdb 集群,默认:空
username: root # 账号,默认:root
password: root # 密码,默认:root
# 批量写入相关配置
enable-batch: true # 开启批量写,默认:开
batch-size: 1000 # 批次大小,默认:1000
flush-duration: 1s # 批次写入时间,默认:1s 写入一次
# 连接池配置
max-size: 5 # 连接池大小,默认:5,生产环境可以适量调大
fetch-size: 5000 # 查询一个批次最大的大小,默认:5000
iotdb开发细节注意:
- IoTDB占用内存较高,服务器资源紧张的用户请慎重选择。
- IoTDB默认不支持直接调整数据类型。如果需要调整数据类型,通常需要先删除相关库再等待程序自动创建。
- 为了让 productKey 和 deviceName 支持存数字和其他一些特殊字符,iotdb 路径上的 productKey 和 deviceName 都默认添加 了 "`" `${productKey}`.`${deviceName}`,那么你的自定义 iotdb sql 查询也需要添加才可正确查询。
- 例子如下:
drop timeseries root.data.property.`JkerjK97oub`.`0yg2zfAgmGgaY8pS`.*