|
|
# 日志分表与分析设计(草案)
|
|
|
|
|
|
## 目标与范围
|
|
|
- 对采集日志实现按月分区写入,提升写入吞吐和查询历史的性能。
|
|
|
- 提供可查询的分析摘要字段,便于后台看板展示本次采集及对比分析。
|
|
|
- 不引入新的依赖,不改变现有接口接口风格,确保向后兼容。
|
|
|
|
|
|
## 设计原则
|
|
|
- 高并发写入:分区写入尽量避免锁争用,分区表应有合理的索引覆盖查询条件。
|
|
|
- 易维护:分区边界需要可扩展,提供脚本自动创建未来分区的能力。
|
|
|
- 可观测:数据结构中包括分析摘要字段,便于 API 与前端直接展示。
|
|
|
- 兼容性:尽量复用现有字段名与数据类型,避免大规模重构。
|
|
|
|
|
|
## 目标表设计(草案)
|
|
|
- 新增分区表 logs_partitioned,字段如下:
|
|
|
- id BIGINT 自增主键
|
|
|
- machine_id INT:机床唯一标识
|
|
|
- program_name VARCHAR(128):加工程序名
|
|
|
- log_time DATETIME:日志时间点
|
|
|
- log_level VARCHAR(16):日志等级,默认 INFO
|
|
|
- raw_payload JSON:原始日志数据
|
|
|
- analysis_summary TEXT:本次采集的分析摘要(可追溯、可回放)
|
|
|
- analysis_version VARCHAR(64):分析逻辑版本
|
|
|
- 索引:idx_machine_time(machine_id, log_time)、idx_program_time(program_name, log_time)
|
|
|
- 分区:PARTITION BY RANGE (TO_DAYS(log_time))
|
|
|
- 示例分区:p202401, p202402, ..., p202501(按月份边界)
|
|
|
|
|
|
## 分区键与分区策略
|
|
|
- 使用 LOG_TIME 的日期维度进行分区:TO_DAYS(log_time) 作为分区区间值。
|
|
|
- 分区命名建议:按 yyyyMM 命名,如 p202401、p202402,以便直观查看。
|
|
|
- 初始覆盖期:从系统落地起,覆盖过去 24 个月及未来 12 个月的分区。
|
|
|
- 未来分区维护:提供周期性脚本( monthly_partition_maintenance.sql )来创建新月份分区。
|
|
|
|
|
|
## 分区维护脚本(草案)
|
|
|
- 提供简单的迁移脚本 skeleton,示例位于 database/sqls/partitioned_logs.sql 的分区创建段。
|
|
|
- 未来可将分区维护封装成 SQL store 程序或外部脚本(bash/python),自动按月扩容。
|
|
|
- 维护内容包括:创建新的分区、对旧分区归档/归档策略,及对相关日志表的清理策略。
|
|
|
|
|
|
## 数据分析字段与 API 将暴露的摘要
|
|
|
- analysis_summary 字段存放本次采集的要点、差异、以及可能的异常记录。
|
|
|
- 通过 API 提供最新采集日志及其分析摘要,便于前端看板展示与对比。
|
|
|
- 日志写入路径保持向后兼容:原有原始日志字段保留,新增分析字段仅供访问。
|
|
|
|
|
|
## API/前端对接要点
|
|
|
- 后端应提供查询接口:
|
|
|
- 根据 machine_id、时间范围筛选日志
|
|
|
- 返回最新采集日志及分析摘要
|
|
|
- 前端看板要显示:
|
|
|
- 最新日志时间、机器、程序、分析摘要要点
|
|
|
- 与历史时间点对比的分析摘要对比信息
|
|
|
|
|
|
## 验证与测试计划(草案)
|
|
|
- 基础验证:分区表创建是否成功、是否能够写入数据、是否能查询到分区信息。
|
|
|
- 功能验证:
|
|
|
- 日志写入时附带 analysis_summary 字段
|
|
|
- API 能返回最新采集日志及分析摘要
|
|
|
- 性能/压力测试:在高并发写入情况下分区表的锁争用情况、查询历史时的响应时间。
|
|
|
- 回归测试:现有日志写入路径不受影响,现有看板字段仍可访问
|
|
|
|
|
|
## 后续工作与风险
|
|
|
- 风险:分区设计对现有 ORM/DAO 层的影响,旧查询路径需兼容。
|
|
|
- 后续:与前端看板字段对齐、以及归档/清理策略的落地实现。
|
|
|
|
|
|
### 草案作者:CI 项目组
|
|
|
### 审核日期:2026-05
|
|
|
|
|
|
## 看板草案设计摘要(日志看板)
|
|
|
- 目标:展示最近采集日志、分析摘要,以及提供筛选入口,便于运维与分析人员快速定位问题。
|
|
|
- 数据字段:日志时间戳、机床ID、加工程序名、日志等级、日志摘要。以及可选的分析摘要文本。
|
|
|
- 后端端点草案:GET /api/logs/dashboard,返回数据结构包含最近日志、等级分布、总条数和可展示的分析摘要。
|
|
|
- 前端展示要点:顶部筛选区、摘要统计、最近日志表格、日志摘要截断预览。
|
|
|
- 验证要点:前端路由可打开,后端接口能返回结构化数据,字段与前端模板对齐。
|