选择数据库方案

ThingsBoard使用数据库存储实体(设备,资产,客户,仪表板等)和遥测(属性,时间序列数据,统计信息,事件)数据。
支持下面三类/四种方案可供选择:

SQL

将所有实体遥测存储在PostgreSQL数据库中。

NoSQL

(不建议使用)
将所有实体和遥测存储在Cassandra数据库中。

Hybrid

(SQL和NoSQL混合使用)

PostgreSQL + Cassandra

将所有实体存储在PostgreSQL数据库中,并将时间序列数据存储在Cassandra数据库中

PostgreSQL + TimescaleDB

将所有实体存储在PostgreSQL数据库中,并将时间序列数据存储在Timescale数据库中。

根据需求选择数据库方案。(SQL和Hybrid方案的部分功能差异可以参考ThingsBoard 数据持久化策略

修改配置

所有配置参数都在Thingsboard.yml中,所有环境变量都在Thingsboard.conf。全部配置项参考官网配置文档
所有配置参数都有相应的环境变量名称默认值**,**改配置只需修改默认值。例如修改端口:

  1. server:
  2. # Server bind port
  3. 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
  • 微服务安装
    • 每个组件都有后单独的配置文件

      SQL

      假设选择SQL方案,需要安装PostgreSQL数据库,然后进行下面配置。
  1. 源码编译方式修改Thingsboard.yml文件:

    1. database:
    2. ts:
    3. type: "${DATABASE_TS_TYPE:sql}" # 指定时序数据储存在PostgreSQL。 可选cassandra, sql, or timescale
    4. ts_latest:
    5. type: "${DATABASE_TS_LATEST_TYPE:sql}" # 指定最新时序数据储存在PostgreSQL。可选cassandra, sql, or timescale
    6. # SQL DAO Configuration
    7. spring:
    8. jpa:
    9. database-platform: "${SPRING_JPA_DATABASE_PLATFORM:org.hibernate.dialect.PostgreSQLDialect}" # 指定数据库方言
    10. datasource:
    11. driverClassName: "${SPRING_DRIVER_CLASS_NAME:org.postgresql.Driver}" # 指定数据库驱动
    12. url: "${SPRING_DATASOURCE_URL:jdbc:postgresql://localhost:5432/thingsboard}" #填写PostgreSQL连接地址
    13. username: "${SPRING_DATASOURCE_USERNAME:postgres}" # 用户名
    14. password: "${SPRING_DATASOURCE_PASSWORD:postgres}" # 密码
    15. # SQL configuration parameters
    16. sql:
    17. postgres:
    18. # 指定根据时间戳做表分区的大小,可选DAYS, MONTHS, YEARS, INDEFINITE,默认MONTHS
    19. ts_key_value_partitioning: "${SQL_POSTGRES_TS_KV_PARTITIONING:MONTHS}"
  2. 编译完成后,在安装好的PostgreSQL数据库中创建数据库thingsboard

  3. dao/src/main/resources/sql文件夹拷贝到application/src/main/data文件夹中
  4. 运行application/src/main/java/org/thingsboard/server/ThingsboardInstallApplication.java文件(勿手动执行sql文件导入)。
  5. 然后查看PostgreSQL的thingsboard数据库,已经生成了表和部分数据。

整体安装方式修改/etc/thingsboard/conf/thingsboard.conf中关于数据库的配置

  1. # DB Configuration
  2. export DATABASE_ENTITIES_TYPE=sql
  3. export DATABASE_TS_TYPE=sql
  4. export SPRING_JPA_DATABASE_PLATFORM=org.hibernate.dialect.PostgreSQLDialect
  5. export SPRING_DRIVER_CLASS_NAME=org.postgresql.Driver
  6. export SPRING_DATASOURCE_URL=jdbc:postgresql://localhost:5432/thingsboard
  7. export SPRING_DATASOURCE_USERNAME=postgres
  8. export SPRING_DATASOURCE_PASSWORD=PUT_YOUR_POSTGRESQL_PASSWORD_HERE
  9. export SPRING_DATASOURCE_MAXIMUM_POOL_SIZE=5
  10. # 指定根据时间戳做表分区的大小,可选DAYS, MONTHS, YEARS, INDEFINITE
  11. export SQL_POSTGRES_TS_KV_PARTITIONING=MONTHS

PostgreSQL + Cassandra

  1. 源码编译方式修改Thingsboard.yml文件:

    1. database:
    2. ts:
    3. type: "${DATABASE_TS_TYPE:cassandra}" # 指定时序数据储存在Cassandra。 可选cassandra, sql, or timescale
    4. ts_latest:
    5. type: "${DATABASE_TS_LATEST_TYPE:cassandra}" # 指定最新时序数据储存在Cassandra。可选cassandra, sql, or timescale
    6. # PostgreSQL数据库信息配置
    7. spring:
    8. jpa:
    9. database-platform: "${SPRING_JPA_DATABASE_PLATFORM:org.hibernate.dialect.PostgreSQLDialect}" # 指定数据库方言
    10. datasource:
    11. driverClassName: "${SPRING_DRIVER_CLASS_NAME:org.postgresql.Driver}" # 指定数据库驱动
    12. url: "${SPRING_DATASOURCE_URL:jdbc:postgresql://localhost:5432/thingsboard}" #填写PostgreSQL连接地址
    13. username: "${SPRING_DATASOURCE_USERNAME:postgres}" # 用户名
    14. password: "${SPRING_DATASOURCE_PASSWORD:postgres}" # 密码
    15. # SQL configuration parameters
    16. sql:
    17. postgres:
    18. # 指定根据时间戳做表分区的大小,可选DAYS, MONTHS, YEARS, INDEFINITE,默认MONTHS
    19. ts_key_value_partitioning: "${SQL_POSTGRES_TS_KV_PARTITIONING:MONTHS}"
    20. cassandra:
    21. keyspace_name: "${CASSANDRA_KEYSPACE_NAME:thingsboard}"
    22. url: "${CASSANDRA_URL:127.0.0.1:9042}"
    23. # Credential parameters #
    24. credentials: "${CASSANDRA_USE_CREDENTIALS:false}"
    25. # Specify your username
    26. username: "${CASSANDRA_USERNAME:}"
    27. # Specify your password
    28. password: "${CASSANDRA_PASSWORD:}"
  2. 编译完成后,在安装好的PostgreSQL数据库中创建数据库thingsboard,在安装好的Cassandra数据库keyspaces中创建thingsboard

  3. dao/src/main/resources/sqldao/src/main/resources/cassandra文件夹拷贝到application/src/main/data文件夹中
  4. 运行application/src/main/java/org/thingsboard/server/ThingsboardInstallApplication.java文件(勿手动执行sql文件导入)。
  5. 然后查看PostgreSQL和Cassandra的thingsboard数据库,已经生成了表和部分数据。