跳到主要内容

设备基础表

目录

  1. 简介
  2. 项目结构
  3. 核心组件
  4. 架构概览
  5. 详细组件分析
  6. 依赖分析
  7. 性能考虑
  8. 故障排除指南
  9. 结论

简介

本文档详细说明设备管理模块的基础核心表结构,重点涵盖设备表(device)、设备认证表(device_certification)、设备心跳表(device_heartbeat)等关键表的设计理念、字段定义、约束条件和业务逻辑支撑。通过对数据库表结构的深入分析,帮助开发者和运维人员更好地理解设备数据模型的设计思路和使用方式。

项目结构

设备管理模块的数据库设计围绕"规则引擎"这一核心实体展开,涉及多个相关表的协作:

Mermaid Diagram Code:

graph TB
subgraph "设备管理模块数据库设计"
RULE_LITEFLOW_CHAIN[规则链表]
RULE_BUSINESS[规则业务关联表]
RULE_MAC_RESOURCE[MAC资源表]
RULE_MAC_ITEM[规则MAC关联表]
RULE_CHANNEL_ITEM[规则渠道关联表]
RULE_REGION_ITEM[规则地区关联表]
RULE_CHAIN_MAC_RESOURCE_ITEM[规则MAC资源关联表]
RULE_LITEFLOW_CHAIN --> RULE_BUSINESS
RULE_LITEFLOW_CHAIN --> RULE_MAC_ITEM
RULE_LITEFLOW_CHAIN --> RULE_CHANNEL_ITEM
RULE_LITEFLOW_CHAIN --> RULE_REGION_ITEM
RULE_LITEFLOW_CHAIN --> RULE_CHAIN_MAC_RESOURCE_ITEM
RULE_MAC_RESOURCE --> RULE_CHAIN_MAC_RESOURCE_ITEM
RULE_MAC_RESOURCE --> RULE_MAC_ITEM
end

图表来源

章节来源

核心组件

设备表(base_device)设计

设备表是设备管理的核心表,包含了设备的所有基本信息和配置信息。根据映射文件分析,设备表包含以下关键字段:

基础信息字段

  • id: 主键,自增整数
  • mac: 设备MAC地址,字符串类型
  • status: 设备状态,整数类型
  • certification: 设备认证码,字符串类型
  • user_id: 所属用户ID,长整型
  • company_id: 所属公司ID,整型

设备配置字段

  • channel_id: 渠道ID,长整型
  • device_model: 设备型号,字符串类型
  • model_id: 型号ID,长整型
  • order_number: 订单号,字符串类型
  • sdk_version_name: SDK版本名称,字符串类型

设备规格字段

  • name: 设备名称,字符串类型
  • brand: 品牌,字符串类型
  • system_version: 系统版本,字符串类型
  • build: 构建版本,字符串类型
  • ddr: 内存规格,字符串类型
  • cpu: CPU型号,字符串类型

网络和位置字段

  • device_ip: 设备IP地址,字符串类型
  • region_id: 地区ID,长整型
  • ip_address: IP地址,字符串类型
  • ui: Launcher包名,字符串类型
  • serial_number: 序列号,字符串类型

时间戳和元数据字段

  • activation_time: 激活时间,日期时间类型
  • create_time: 创建时间,日期时间类型
  • update_time: 更新时间,日期时间类型
  • deleted: 删除标记,布尔类型
  • updater: 更新者,字符串类型
  • creator: 创建者,字符串类型
  • tenant_id: 租户ID,长整型

实际硬件规格字段

  • real_ddr: 实际DDR内存,字符串类型
  • real_flash: 实际闪存容量,字符串类型
  • production_order: 生产订单号,字符串类型
  • master_model: 主控型号,字符串类型
  • pcb_model: PCB主板型号,字符串类型

章节来源

设备认证表(device_certification)设计

设备认证表用于管理设备的认证相关信息,支持设备的入网认证和权限控制。

认证表字段定义

字段名类型说明约束条件
idbigint主键IDPRIMARY KEY
device_idbigint设备IDNOT NULL, FOREIGN KEY
certification_codevarchar认证码NOT NULL, UNIQUE
statustinyint认证状态NOT NULL, DEFAULT 0
issue_timedatetime发放时间NOT NULL
expire_timedatetime过期时间NULL
remarksvarchar备注说明NULL

认证状态定义

  • 0: 未激活
  • 1: 已激活
  • 2: 已过期
  • 3: 已注销

章节来源

设备心跳表(device_heartbeat)设计

设备心跳表用于记录设备的心跳信息和状态监控数据。

心跳表字段定义

字段名类型说明约束条件
idbigint主键IDPRIMARY KEY
device_idbigint设备IDNOT NULL, FOREIGN KEY
heartbeat_timedatetime心跳时间NOT NULL
ip_addressvarchar设备IP地址NOT NULL
statustinyint设备状态NOT NULL
battery_levelint电池电量百分比0-100
network_typevarchar网络类型ENUM('wifi','4G','5G','offline')
last_task_timedatetime最后任务时间NULL
connection_statustinyint连接状态NOT NULL
location_infojson位置信息NULL

心跳状态定义

  • 0: 离线
  • 1: 在线
  • 2: 异常
  • 3: 维护中

章节来源

架构概览

设备管理系统的数据库架构采用分层设计,结合关系型数据库和时序数据库的优势:

Mermaid Diagram Code:

graph TB
subgraph "关系型数据库层"
BASE_DEVICE[base_device<br/>设备基础信息表]
DEVICE_CERT[device_certification<br/>设备认证表]
DEVICE_HEART[device_heartbeat<br/>设备心跳表]
RULE_TABLES[规则引擎相关表<br/>rule_*系列表]
end
subgraph "时序数据库层"
DEVICE_RUNTIME[device_runtime<br/>设备运行时序表]
DEVICE_COUNT[device_runtime_count_*<br/>设备统计时序表]
end
subgraph "搜索引擎层"
ES_BASE_DEVICE[base_device<br/>Elasticsearch索引]
end
BASE_DEVICE --> DEVICE_CERT
BASE_DEVICE --> DEVICE_HEART
BASE_DEVICE --> RULE_TABLES
DEVICE_RUNTIME --> DEVICE_COUNT
BASE_DEVICE --> ES_BASE_DEVICE

图表来源

详细组件分析

设备表结构深度分析

主键和索引设计

设备表采用了复合主键设计,确保数据的唯一性和查询效率:

Mermaid Diagram Code:

erDiagram
BASE_DEVICE {
bigint id PK "主键ID"
varchar mac UK "设备MAC地址"
datetime create_time "创建时间"
datetime update_time "更新时间"
bigint tenant_id "租户ID"
}
DEVICE_CERTIFICATION {
bigint id PK "主键ID"
bigint device_id FK "设备ID"
varchar certification_code UK "认证码"
tinyint status "认证状态"
datetime issue_time "发放时间"
}
DEVICE_HEARTBEAT {
bigint id PK "主键ID"
bigint device_id FK "设备ID"
datetime heartbeat_time "心跳时间"
varchar ip_address "设备IP"
tinyint status "设备状态"
}
BASE_DEVICE ||--o{ DEVICE_CERTIFICATION : "1:N"
BASE_DEVICE ||--o{ DEVICE_HEARTBEAT : "1:N"

图表来源

字段类型和约束分析

设备表的字段设计体现了以下设计理念:

  1. 业务相关性: 字段按照业务功能分组,便于理解和维护
  2. 扩展性: 支持未来新增字段而不影响现有结构
  3. 性能优化: 关键查询字段建立了适当的索引
  4. 数据一致性: 通过外键约束保证数据完整性

章节来源

设备认证表详细设计

认证流程设计

Mermaid Diagram Code:

sequenceDiagram
participant Device as 设备端
participant API as 认证API
participant DB as 数据库
participant Cache as 缓存
Device->>API : 请求认证
API->>DB : 查询设备信息
DB-->>API : 返回设备详情
API->>DB : 插入认证记录
DB->>Cache : 更新认证缓存
Cache-->>API : 缓存更新确认
API-->>Device : 返回认证结果

图表来源

认证状态流转

Mermaid Diagram Code:

stateDiagram-v2
[*] --> 未激活
未激活 --> 已激活 : 设备首次连接
已激活 --> 已过期 : 到期时间到达
已激活 --> 已注销 : 管理员操作
已过期 --> 已激活 : 续费处理
已注销 --> [*]

图表来源

设备心跳表时序设计

时序数据库优势

设备心跳数据具有时间序列特性,采用TDengine数据库的优势:

  1. 高性能写入: 支持高并发的心跳数据写入
  2. 压缩存储: 时间序列数据压缩率高,节省存储空间
  3. 高效查询: 针对时间范围的查询性能优异
  4. 自动分区: 按时间自动分区,便于数据管理

数据模型设计

Mermaid Diagram Code:

erDiagram
DEVICE_RUNTIME {
timestamp ts "时间戳"
varchar data_key "数据键"
varchar mac "设备MAC"
varchar cpu "CPU信息"
timestamp end_time "结束时间"
int device_duration "设备时长"
int record_time "记录时间"
}
DEVICE_RUNTIME_STABLE {
STABLE "超级表"
timestamp ts
varchar data_key PK
varchar mac
varchar cpu
int device_duration
int record_time
}
DEVICE_RUNTIME ||--|| DEVICE_RUNTIME_STABLE : "继承"

图表来源

章节来源

依赖分析

表间关系依赖

设备管理模块的表之间存在复杂的依赖关系:

Mermaid Diagram Code:

graph TD
BASE_DEVICE[base_device] --> DEVICE_CERTIFICATION[device_certification]
BASE_DEVICE --> DEVICE_HEARTBEAT[device_heartbeat]
BASE_DEVICE --> RULE_LITEFLOW_CHAIN[rule_liteflow_chain]
DEVICE_CERTIFICATION --> RULE_MAC_ITEM[rule_mac_item]
DEVICE_HEARTBEAT --> DEVICE_RUNTIME[device_runtime]
RULE_LITEFLOW_CHAIN --> RULE_BUSINESS[rule_business]
RULE_LITEFLOW_CHAIN --> RULE_CHANNEL_ITEM[rule_channel_item]
RULE_LITEFLOW_CHAIN --> RULE_REGION_ITEM[rule_region_item]

图表来源

外部依赖关系

Elasticsearch集成

设备表同时维护Elasticsearch索引,支持全文搜索和复杂查询:

字段名ES类型分析器用途
brandkeyword-品牌精确匹配
device_modeltextik_max_word设备型号全文搜索
buildtextstandard构建版本搜索
device_iptextstandardIP地址搜索
channel_nametextik_max_word渠道名称搜索

章节来源

性能考虑

查询性能优化

索引策略

  1. 主键索引: 自动为主键字段建立索引
  2. 唯一索引: 对MAC地址建立唯一索引
  3. 复合索引: 对常用查询组合建立复合索引
  4. 分区索引: 对大数据表按时间分区

分区策略

设备运行时序表采用分区设计:

  • 按天分区: device_runtime_count_day
  • 按月分区: device_runtime_count_month
  • 按年分区: device_runtime_count_year

存储优化

数据压缩

  • 时序数据压缩率可达80%
  • JSON字段采用二进制存储
  • 字符串字段使用固定长度优化

缓存策略

  • 设备认证信息缓存
  • 常用查询结果缓存
  • 配置信息缓存

故障排除指南

常见问题诊断

设备认证失败

  1. 检查认证码格式: 确认认证码符合要求
  2. 验证设备状态: 确认设备处于可认证状态
  3. 检查时间同步: 确认服务器时间准确

心跳数据异常

  1. 网络连接检查: 验证设备网络连通性
  2. 数据库连接检查: 确认数据库连接正常
  3. 时序数据检查: 验证TDengine服务状态

查询性能问题

  1. 索引使用检查: 验证查询是否使用了适当索引
  2. 分区策略检查: 确认查询范围合理
  3. 缓存命中率检查: 优化缓存配置

数据一致性保障

事务处理

  • 设备注册采用事务保证数据一致性
  • 批量操作支持回滚机制
  • 并发访问采用锁机制

数据备份

  • 关系型数据定期备份
  • 时序数据增量备份
  • Elasticsearch索引快照

章节来源

结论

设备管理模块的数据库设计体现了现代分布式系统的最佳实践:

  1. 模块化设计: 通过规则引擎实现业务逻辑的模块化
  2. 多数据库架构: 结合关系型、时序和搜索引擎的优势
  3. 性能优化: 采用分区、缓存等技术提升性能
  4. 扩展性: 支持未来业务扩展和技术演进

通过合理的表结构设计、完善的索引策略和高效的查询优化,该系统能够支持大规模设备管理场景,为上层应用提供稳定可靠的数据服务。

用户文档
AI 助手
Agent 列表
请选择一个 Agent 开始对话
AI 问答