选择数据库方案
ThingsBoard使用数据库存储实体(设备,资产,客户,仪表板等)和遥测(属性,时间序列数据,统计信息,事件)数据。
支持下面三类/四种方案可供选择:
SQL
NoSQL
(不建议使用)
将所有实体和遥测存储在Cassandra数据库中。
Hybrid
PostgreSQL + Cassandra
将所有实体存储在PostgreSQL数据库中,并将时间序列数据存储在Cassandra数据库中
PostgreSQL + TimescaleDB
将所有实体存储在PostgreSQL数据库中,并将时间序列数据存储在Timescale数据库中。
根据需求选择数据库方案。(SQL和Hybrid方案的部分功能差异可以参考ThingsBoard 数据持久化策略)
修改配置
所有配置参数都在Thingsboard.yml中,所有环境变量都在Thingsboard.conf中。全部配置项参考官网配置文档。
所有配置参数都有相应的环境变量名称和默认值**,**改配置只需修改默认值。例如修改端口:
server:# Server bind portport: "${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 timescalets_latest:type: "${DATABASE_TS_LATEST_TYPE:sql}" # 指定最新时序数据储存在PostgreSQL。可选cassandra, sql, or timescale# SQL DAO Configurationspring: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 parameterssql:postgres:# 指定根据时间戳做表分区的大小,可选DAYS, MONTHS, YEARS, INDEFINITE,默认MONTHSts_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 Configurationexport DATABASE_ENTITIES_TYPE=sqlexport DATABASE_TS_TYPE=sqlexport SPRING_JPA_DATABASE_PLATFORM=org.hibernate.dialect.PostgreSQLDialectexport SPRING_DRIVER_CLASS_NAME=org.postgresql.Driverexport SPRING_DATASOURCE_URL=jdbc:postgresql://localhost:5432/thingsboardexport SPRING_DATASOURCE_USERNAME=postgresexport SPRING_DATASOURCE_PASSWORD=PUT_YOUR_POSTGRESQL_PASSWORD_HEREexport SPRING_DATASOURCE_MAXIMUM_POOL_SIZE=5# 指定根据时间戳做表分区的大小,可选DAYS, MONTHS, YEARS, INDEFINITEexport SQL_POSTGRES_TS_KV_PARTITIONING=MONTHS
PostgreSQL + Cassandra
源码编译方式修改Thingsboard.yml文件:
database:ts:type: "${DATABASE_TS_TYPE:cassandra}" # 指定时序数据储存在Cassandra。 可选cassandra, sql, or timescalets_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 parameterssql:postgres:# 指定根据时间戳做表分区的大小,可选DAYS, MONTHS, YEARS, INDEFINITE,默认MONTHSts_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 usernameusername: "${CASSANDRA_USERNAME:}"# Specify your passwordpassword: "${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数据库,已经生成了表和部分数据。
