选择数据库方案
ThingsBoard使用数据库存储实体(设备,资产,客户,仪表板等)和遥测(属性,时间序列数据,统计信息,事件)数据。
支持下面三类/四种方案可供选择:
SQL
NoSQL
(不建议使用)
将所有实体和遥测存储在Cassandra数据库中。
Hybrid
PostgreSQL + Cassandra
将所有实体存储在PostgreSQL数据库中,并将时间序列数据存储在Cassandra数据库中
PostgreSQL + TimescaleDB
将所有实体存储在PostgreSQL数据库中,并将时间序列数据存储在Timescale数据库中。
根据需求选择数据库方案。(SQL和Hybrid方案的部分功能差异可以参考ThingsBoard 数据持久化策略)
修改配置
所有配置参数都在Thingsboard.yml中,所有环境变量都在Thingsboard.conf中。全部配置项参考官网配置文档。
所有配置参数都有相应的环境变量名称和默认值**,**改配置只需修改默认值。例如修改端口:
server:
# Server bind port
port: "${HTTP_BIND_PORT:8080}"
HTTP_BIND_PORT是环境变量名称,8080是默认值,修改端口只需修改8080参数即可。
使用docker的情况下,环境变量很重要,参考docker文档。
配置文件位置
- 整体安装
- Windows: 安装位置/conf
- Linux: /usr/share/thingsboard/conf
- 源码编译
- thingsboard/application/src/main/resources/thingsboard.yml
- 微服务安装
源码编译方式修改Thingsboard.yml文件:
database:
ts:
type: "${DATABASE_TS_TYPE:sql}" # 指定时序数据储存在PostgreSQL。 可选cassandra, sql, or timescale
ts_latest:
type: "${DATABASE_TS_LATEST_TYPE:sql}" # 指定最新时序数据储存在PostgreSQL。可选cassandra, sql, or timescale
# SQL DAO Configuration
spring:
jpa:
database-platform: "${SPRING_JPA_DATABASE_PLATFORM:org.hibernate.dialect.PostgreSQLDialect}" # 指定数据库方言
datasource:
driverClassName: "${SPRING_DRIVER_CLASS_NAME:org.postgresql.Driver}" # 指定数据库驱动
url: "${SPRING_DATASOURCE_URL:jdbc:postgresql://localhost:5432/thingsboard}" #填写PostgreSQL连接地址
username: "${SPRING_DATASOURCE_USERNAME:postgres}" # 用户名
password: "${SPRING_DATASOURCE_PASSWORD:postgres}" # 密码
# SQL configuration parameters
sql:
postgres:
# 指定根据时间戳做表分区的大小,可选DAYS, MONTHS, YEARS, INDEFINITE,默认MONTHS
ts_key_value_partitioning: "${SQL_POSTGRES_TS_KV_PARTITIONING:MONTHS}"
编译完成后,在安装好的PostgreSQL数据库中创建数据库thingsboard
- 将dao/src/main/resources/sql文件夹拷贝到application/src/main/data文件夹中
- 运行application/src/main/java/org/thingsboard/server/ThingsboardInstallApplication.java文件(勿手动执行sql文件导入)。
- 然后查看PostgreSQL的thingsboard数据库,已经生成了表和部分数据。
整体安装方式修改/etc/thingsboard/conf/thingsboard.conf中关于数据库的配置
# DB Configuration
export DATABASE_ENTITIES_TYPE=sql
export DATABASE_TS_TYPE=sql
export SPRING_JPA_DATABASE_PLATFORM=org.hibernate.dialect.PostgreSQLDialect
export SPRING_DRIVER_CLASS_NAME=org.postgresql.Driver
export SPRING_DATASOURCE_URL=jdbc:postgresql://localhost:5432/thingsboard
export SPRING_DATASOURCE_USERNAME=postgres
export SPRING_DATASOURCE_PASSWORD=PUT_YOUR_POSTGRESQL_PASSWORD_HERE
export SPRING_DATASOURCE_MAXIMUM_POOL_SIZE=5
# 指定根据时间戳做表分区的大小,可选DAYS, MONTHS, YEARS, INDEFINITE
export SQL_POSTGRES_TS_KV_PARTITIONING=MONTHS
PostgreSQL + Cassandra
源码编译方式修改Thingsboard.yml文件:
database:
ts:
type: "${DATABASE_TS_TYPE:cassandra}" # 指定时序数据储存在Cassandra。 可选cassandra, sql, or timescale
ts_latest:
type: "${DATABASE_TS_LATEST_TYPE:cassandra}" # 指定最新时序数据储存在Cassandra。可选cassandra, sql, or timescale
# PostgreSQL数据库信息配置
spring:
jpa:
database-platform: "${SPRING_JPA_DATABASE_PLATFORM:org.hibernate.dialect.PostgreSQLDialect}" # 指定数据库方言
datasource:
driverClassName: "${SPRING_DRIVER_CLASS_NAME:org.postgresql.Driver}" # 指定数据库驱动
url: "${SPRING_DATASOURCE_URL:jdbc:postgresql://localhost:5432/thingsboard}" #填写PostgreSQL连接地址
username: "${SPRING_DATASOURCE_USERNAME:postgres}" # 用户名
password: "${SPRING_DATASOURCE_PASSWORD:postgres}" # 密码
# SQL configuration parameters
sql:
postgres:
# 指定根据时间戳做表分区的大小,可选DAYS, MONTHS, YEARS, INDEFINITE,默认MONTHS
ts_key_value_partitioning: "${SQL_POSTGRES_TS_KV_PARTITIONING:MONTHS}"
cassandra:
keyspace_name: "${CASSANDRA_KEYSPACE_NAME:thingsboard}"
url: "${CASSANDRA_URL:127.0.0.1:9042}"
# Credential parameters #
credentials: "${CASSANDRA_USE_CREDENTIALS:false}"
# Specify your username
username: "${CASSANDRA_USERNAME:}"
# Specify your password
password: "${CASSANDRA_PASSWORD:}"
编译完成后,在安装好的PostgreSQL数据库中创建数据库thingsboard,在安装好的Cassandra数据库keyspaces中创建thingsboard
- 将dao/src/main/resources/sql和dao/src/main/resources/cassandra文件夹拷贝到application/src/main/data文件夹中
- 运行application/src/main/java/org/thingsboard/server/ThingsboardInstallApplication.java文件(勿手动执行sql文件导入)。
- 然后查看PostgreSQL和Cassandra的thingsboard数据库,已经生成了表和部分数据。