黑名单主表结构
引用文件
目录
简介
本文档详细解析黑名单主表(blacklisted)的结构设计,涵盖黑名单实体表的核心字段定义、数据类型规范、业务逻辑实现以及系统集成架构。该系统采用MySQL作为主存储,TDengine作为时序数据存储,实现了黑名单管理的完整生命周期。
项目结构
黑名单模块在整体项目架构中的位置如下:
图表来源
章节来源
核心组件
黑名单类型枚举
黑名单类型枚举定义了系统支持的黑名单类别:
| 枚举值 | 代码 | 描述 | 业务含义 |
|---|---|---|---|
| DELETE | 0 | 卸载 | 应用被用户主动卸载 |
| KILL | 1 | 杀死(闪退) | 应用异常崩溃或被系统杀死 |
主要数据模型
AppBlacklistedDO - 黑名单主表实体
黑名单主表的核心字段定义:
| 字段名 | 数据类型 | 长度限制 | 允许为空 | 默认值 | 说明 |
|---|---|---|---|---|---|
| id | BIGINT | - | 否 | - | 自增主键 |
| applicationName | VARCHAR | 255 | 是 | NULL | 应用名称 |
| packageName | VARCHAR | 255 | 否 | - | 应用包名(唯一标识) |
| status | INT | - | 否 | 1 | 状态:1启用,0禁用 |
| type | INT | - | 否 | 0 | 黑名单类型(DELETE/KILL) |
| version | VARCHAR | 50 | 是 | NULL | 版本号 |
| remark | TEXT | - | 是 | NULL | 备注说明 |
| createBy | VARCHAR | 64 | 是 | NULL | 创建人 |
| updateBy | VARCHAR | 64 | 是 | NULL | 更新人 |
| bpmStatus | INT | - | 是 | NULL | 工作流状态 |
| processInstanceId | VARCHAR | 50 | 是 | NULL | 流程实例ID |
| valid | INT | - | 是 | NULL | 生效状态 |
AppKillRecordDO - 杀死记录实体
时序数据表字段定义:
| 字段名 | 数据类型 | 长度限制 | 允许为空 | 默认值 | 说明 |
|---|---|---|---|---|---|
| ts | TIMESTAMP | - | 否 | - | 记录日期 |
| dataKey | VARCHAR | 1000 | 否 | - | 主键:mac+cpu_id |
| mac | VARCHAR | 20 | 否 | - | 设备MAC地址 |
| cpuId | VARCHAR | 255 | 否 | - | CPU序列号 |
| frequency | INT | - | 否 | - | 杀死次数 |
| createTime | TIMESTAMP | - | 否 | - | 创建时间 |
| blackListId | INT | - | 否 | - | 关联黑名单ID |
章节来源
架构概览
黑名单系统的整体架构设计:
图表来源
详细组件分析
数据模型关系图
图表来源
字段详细说明
核心标识字段
- id: 主键,自增设计,确保每条黑名单记录的唯一性
- packageName: 唯一索引,作为应用的唯一标识符
业务状态字段
- status: 控制黑名单的启用/禁用状态,默认启用
- type: 黑名单类型,支持应用卸载和应用杀死两种模式
- valid: 生效状态管理,支持草稿、生效、移除标记等状态
版本控制字段
- version: 版本号,用于并发控制和审计追踪
- bpmStatus: 工作流状态,支持审批流程集成
审计字段
- createBy/updateBy: 操作人员追踪
- created_at/updated_at: 时间戳自动维护
章节来源
数据类型设计原则
数值类型选择
- 使用BIGINT存储主键,支持大规模数据量
- INT类型用于状态和类型字段,占用空间小且语义明确
- 时序数据使用TIMESTAMP精确到毫秒级别
字符串类型设计
- VARCHAR(255)满足大多数应用名称和包名需求
- TEXT类型用于备注说明,支持长文本存储
- 主键组合使用VARCHAR(1000),确保足够的字符空间
约束设计
- 主键约束确保数据唯一性
- 唯一约束保证应用包名的唯一性
- 外键约束关联时序数据表
章节来源
业务流程分析
图表来源
依赖关系分析
组件间依赖关系
图表来源
外部依赖分析
| 依赖项 | 版本 | 用途 | 重要性 |
|---|---|---|---|
| MyBatis-Plus | 最新版本 | ORM映射和数据库操作 | 高 |
| Lombok | 最新版本 | 简化Java代码 | 中 |
| TDengine驱动 | 兼容版本 | 时序数据访问 | 高 |
| Jackson | 最新版本 | JSON序列化 | 中 |
章节来源
性能考虑
查询优化策略
-
索引设计
- 主键索引:id字段
- 唯一索引:packageName字段
- 状态索引:status字段用于快速筛选启用的黑名单
-
分页查询
- 支持大数据量的分页查询
- 优化WHERE条件的索引使用
-
缓存策略
- 热点数据缓存
- 配置信息缓存
- 查询结果缓存
存储优化
-
时序数据分区
- 按日期分区存储杀死记录
- 支持历史数据清理
-
压缩策略
- 时序数据压缩
- 历史数据归档