1 ThingsBoard数据库总览
ThingsBoard软件版本为 3.3.2。
ThingsBoard使用的数据库类型为关系型数据库PostgreSQL。
1.1 数据库信息
1.1.1 数据库名称
数据库名称为thingsboard,数据库名一般和应用名称保持一致。
1.1.2 数据库用户名及密码
默认的用户名和密码均为postgres。
1.1.3 数据库表
数据库包含共计40张数据表。
1.2 数据库表命名规范
- 首先确定单个单词能否涵盖业务的全部功能;
- 其次按照“业务名称_表的作用”进行细分;
- 最后按照“业务名称_表的作用_状态信息”继续细分;
1.3 40张数据表信息
按照功能单元分类如下表所示。
序号 | 业务名称 | 功能 | 表名 | 描述 |
1 | 规则引擎 | 规则链 | rule_chain | 存放规则链信息,如规则链的模式 |
2 | 规则引擎 | 规则链节点 | rule_node | 存放规则节点信息,如节点的配置信息 |
3 | 规则引擎 | 规则链节点状态 | rule_node_state | 存放规则节点的状态数据 |
4 | 设备实体 | 设备信息 | device | 存放设备基本信息,如设备配置文件、固件及软件版本 |
5 | 设备实体 | 设备鉴权 | device_credentials | 存放设备鉴权信息,如鉴权类型、鉴权号码 |
6 | 设备实体 | 设备配置 | device_profile | 存放设备配置文件数据,如设备的图标、配置详情信息 |
7 | 资产实体 | 资产信息 | asset | 存放资产信息数据,如资产的类型、资产的描述 |
8 | 租户实体 | 租户信息 | tenant | 存放租户数据,如租户的地址、电话信息 |
9 | 租户实体 | 租户配置 | tenant_profile | 存放租户数据,如租户的地址、电话信息,租户的租用能力 |
10 | 客户实体 | 客户信息 | customer | 存放客户数据,如客户的详细地址、所归属的租户 |
11 | 用户实体 | 用户信息 | tb_user | 存放软件用户信息,如用户所属的客户及租户 |
12 | 用户实体 | 用户鉴权 | user_credentials | 存放软件用户鉴权信息,如用户的用户名、密码,重置令牌 |
13 | 告警实体 | 告警信息 | alarm | 存放软件告警信息,如告警信息的程度、处理状态 |
14 | OTA实体 | 空中下载升级包信息 | ota_package | 存放设备升级软件包的信息,如软件的版本、文件名、校验码 |
15 | 仪表盘实体 | 用户信息 | dashboard | 存放软件看板信息,如看板的配置、分配客户的信息 |
16 | 属性实体 | 属性信息 | attribute_kv | 存放属性键值对信息,如属性的类型、属性值 |
17 | 遥测实体 | 遥测信息 | tb_kv | 存放遥测键值对数据,如遥测的键及其值 |
18 | 遥测实体 | 最新遥测信息 | tb_kv_latest | 存放最新的遥测键值对数据,如遥测的键及其值 |
19 | 遥测实体 | 遥测字典 | tb_kv_dictiontry | 存放遥测键的字典数据 |
20 | 组件 | 组件描述 | component_descriptor | 存放规则引擎组件的描述信息,如配置数据 |
21 | 部件 | 部件类型 | widget_type | 存放部件信息 |
22 | 部件 | 部件库 | widget_bundle | 存放部件库信息,相当于将部件归类 |
23 | 审计 | 审计日志信息 | aduit_log | 存放审计日志数据,如用户使用本软件的ip地址、浏览器信息、操作系统信息 |
24 | OAuth2 | 授权服务注册 | oauth2_registration | 存放授权注册信息,如访问令牌URI、授权用户信息 |
25 | OAuth2 | 授权服务注册 | oauth2_client_registration_template | 存放客户端注册信息模板,如GitHub的授权信息所需配置项、Apple的授权信息所需的配置项 |
26 | OAuth2 | 授权服务注册 | oauth2_params | 存放授权用户信息,如租户信息 |
27 | OAuth2 | 移动端授权 | oauth2_mobile | 存放移动端授权登录信息,如应用包名、应用令牌 |
28 | OAuth2 | 授权域信息 | oauth2_domain | 存放授权域相关信息,如域名、域访问协议 |
29 | OAuth2 | 授权域信息 | oauth2_client_registration_info | 存放授权客户端注册相关信息,如域名、域访问协议 |
30 | OAuth2 | 授权域信息 | oauth2_client_registration | 存放授权域相关信息,如域名、域协议 |
31 | 边缘计算 | 边缘计算 | edge | 存放边缘计算服务信息 |
32 | 边缘计算 | 边缘计算事件 | edge_event | 存放边缘计算发生的事件数据,如事件信息 |
33 | 实体视图 | 实体视图 | entity_view | 类似数据库的视图功能,存放视图信息,如分配视图的起止时间 |
34 | 资源 | 资源 | resource | 存放资源数据信息,如秘钥文件信息 |
35 | rpc | 远程过程调用 | rpc | 存放远程过程调用数据,如请求数据、响应数据 |
36 | 关系实体 | 关系数据 | relation | 存放实体间的关系,如资产与资产的包含类型、起始实体类型数据 |
37 | 事件实体 | 事件 | event | 存放各实体类事件的信息,如事件类型、事件数据 |
38 | 设置 | 管理员设置 | admin_setting | 存放设置信息,如基本设置、邮件设置 |
39 | 接口 | 接口状态 | api_usage_state | 存放接口使用信息,如各类展示卡片激活状态 |
40 | 版本 | 版本设置 | tb_schema_settings | 存放软件版本信息 |
2 遥测数据存放数据表
2.1 分区表
遥测数据存放表名为ts_kv,按照时间(月份)进行分区表设计,如下图所示。
2.2 字段
遥测的数据类型有五种,包括:
public enum DataType { STRING, LONG, BOOLEAN, DOUBLE, JSON; }
最新遥测数据保存表名为ts_kv_latest,当表达到预定行数值后将数据复制到表ts_kv中。
2.3 压缩
键名字段key是数值,在表ts_kv_dictionary有其对应关系,当遥测数据中含有相应的键名时,在ts_kv使用数字进行对应存储,可以节省磁盘空间。
3 一些字段命名问题
3.1 create_time
字段必有
大致看一下这40张表的字段,create_time字段的出现的频次极高,因为数据的创建时间对后期运维有很大参考价值。