minio对象存储数据库链接
This commit is contained in:
@@ -6,11 +6,6 @@ https://alidocs.dingtalk.com/i/nodes/NZQYprEoWoexdo1ohPdxXvDbJ1waOeDk?utm_scene=
|
||||
### 程序框架
|
||||
```angular2html
|
||||
intelligence_system/
|
||||
├── config/ # 系统配置中心
|
||||
│ ├── __init__.py # 配置包初始化
|
||||
│ ├── config.py # 配置加载与管理
|
||||
│ └── constants.py # 系统常量定义
|
||||
|
||||
├── data_collection/ # 数据采集层
|
||||
│ ├── spiders/ # 网络爬虫子系统
|
||||
│ │ ├── weibo_spider.py # 黑猫爬虫
|
||||
@@ -20,7 +15,7 @@ intelligence_system/
|
||||
│ │
|
||||
│ └── internal/ # 内部数据收集
|
||||
│ ├── jian_dao_cloud.py # 简道云表单收集器
|
||||
|
||||
│
|
||||
├── data_processing/ # 数据处理层
|
||||
│ ├── structured/ # 结构化数据处理
|
||||
│ │ ├── data_cleaner.py # 数据清洗(去重/标准化)
|
||||
@@ -35,7 +30,7 @@ intelligence_system/
|
||||
│ ├── nlp_processor.py # 自然语言处理引擎
|
||||
│ ├── sentiment_analyzer.py # 情感分析模型
|
||||
│ └── topic_modeler.py # LDA主题建模工具
|
||||
|
||||
│
|
||||
├── services/ # 应用服务层
|
||||
│ ├── monitoring/ # 舆情监控
|
||||
│ │ ├── opinion_monitor.py # 实时舆情追踪
|
||||
@@ -52,7 +47,7 @@ intelligence_system/
|
||||
│ └── alert/ # 预警服务
|
||||
│ ├── alert_trigger.py # 动态阈值告警
|
||||
│ └── notification_center.py # 邮件/短信通知
|
||||
|
||||
│
|
||||
├── system_management/ # 系统管理层
|
||||
│ ├── scheduler/ # 任务调度
|
||||
│ │ └── task_scheduler.py # 任务调度器
|
||||
@@ -60,13 +55,14 @@ intelligence_system/
|
||||
│ └── monitor/ # 系统监控
|
||||
│ ├── health_monitor.py # 服务健康检测
|
||||
│ └── performance_watcher.py # 资源占用监控
|
||||
|
||||
│
|
||||
├── utils/ # 工具库
|
||||
│ ├── file_handler.py # 通用文件操作
|
||||
│ ├── logger.py # 日志系统
|
||||
│ ├── mysql_agent.py # MySQL读写管理器
|
||||
│ └── datetime_parser.py # 时间格式处理
|
||||
|
||||
│
|
||||
├── config.py # 配置加载与管理
|
||||
└── main.py # 系统入口(启动所有服务)
|
||||
```
|
||||
|
||||
@@ -74,6 +70,7 @@ intelligence_system/
|
||||
1. 所有程序尽可能在py文件中运行,尽量避免使用命令行执行
|
||||
2. 配置需要在配置类中定义
|
||||
3. 密钥等信息直接放在配置类中
|
||||
4. 数据存储遵循"结构化存MySQL,非结构化存MinIO"原则,通过元数据关联
|
||||
|
||||
### 主程序设计
|
||||
主程序需要一次启动,一直运行,启动时运行一次(在代码中可取消),之后每天定时生成一次报告
|
||||
@@ -87,32 +84,78 @@ intelligence_system/
|
||||
主程序应包含日报、周报等生成,根据时间定时生成报告,报告需要存储
|
||||
|
||||
### 日志设计
|
||||
日志系统应兼容多个平台,如win、mac和linux,日志需要保存为log文件,并且在日志大于20mb时自动压缩
|
||||
日志系统兼容Windows、Mac、Linux平台,以`log`文件形式存储,超过20MB自动压缩。新增存储相关日志内容:
|
||||
- MySQL操作:批量插入行数、表结构变更、事务状态
|
||||
- MinIO操作:文件上传/下载状态、路径、大小、耗时
|
||||
- 关联日志:MySQL记录与MinIO对象的绑定关系(如"ID:123 关联文件: collector/images/xxx.jpg")
|
||||
- 异常日志:MySQL连接失败、MinIO上传超时、数据关联不一致等告警信息
|
||||
|
||||
### 数据库链接设计
|
||||
数据存储放在数据库中,数据库类型为mysql,数据库名称为intelligence_system
|
||||
### 存储系统设计(MinIO+MySQL)
|
||||
#### 核心存储分工
|
||||
| 存储类型 | 适用数据 | 核心作用 |
|
||||
|----------|----------|----------|
|
||||
| MySQL | 结构化数据、元数据、关系型数据 | 存储业务逻辑数据、非结构化数据的索引信息、任务调度信息等 |
|
||||
| MinIO | 非结构化数据 | 存储图片、视频、PDF文档、原始爬取文件等二进制/大文件数据 |
|
||||
|
||||
数据库表的命名规则与目录一致,数据采集类以collector_为开头,数据处理类以processor_为开
|
||||
头,数据存储类以storage_为开头,应用层类以application_为开头
|
||||
依次类推。
|
||||
|
||||
数据库链接为通用配置,要求数据采集或处理类等,可以直接调用封装好的数据库
|
||||
链接,不必每次都重新写,
|
||||
该链接包含表的增删改查功能,以及执行sql语句功能
|
||||
#### 核心存储配置
|
||||
1. **MySQL配置**
|
||||
- 数据库名称:`intelligence_system`
|
||||
- 连接管理:通过`utils/mysql_agent.py`封装线程安全的连接池,提供结构化数据的增删改查及SQL执行能力
|
||||
- 适配特性:支持多平台(Windows/macOS/Linux)的超时配置和批处理优化
|
||||
|
||||
数据库结构:
|
||||
1. collector_news_api:新闻api数据表
|
||||
2. collector_complaint_spider:投诉数据表
|
||||
3. processor_text_processor:文本处理数据表
|
||||
4. processor_image_processor:图片处理数据表
|
||||
5. main_task 任务调度表
|
||||
6. application_reporter_daily:日报数据表
|
||||
7. application_reporter_monthly:周报数据表
|
||||
2. **MinIO配置**
|
||||
- 存储桶命名规则:按数据类型划分,如`collector-images`(采集层图片)、`processor-videos`(处理层视频)
|
||||
- 连接管理:通过`utils/minio_agent.py`封装客户端,提供对象上传、下载、删除、查询URL等能力
|
||||
- 路径规则:`{数据层}/{来源}/{时间戳}_{唯一ID}.{后缀}`(例:`collector/weibo_spider/20240520_12345.jpg`)
|
||||
|
||||
|
||||
#### 表命名规则(扩展)
|
||||
- 数据采集类:以`collector_`为前缀(存储采集到的结构化数据及MinIO对象元数据)
|
||||
- 数据处理类:以`processor_`为前缀(存储处理结果的结构化数据及MinIO处理后对象的元数据)
|
||||
- 数据存储类:以`storage_`为前缀(存储MinIO对象的索引信息,如哈希、大小、访问权限等)
|
||||
- 应用层类:以`application_`为前缀(对应业务应用数据)
|
||||
- 系统类:如任务调度表等采用功能命名(如`main_task`)
|
||||
|
||||
|
||||
#### 核心表结构
|
||||
1. `collector_news_api`:新闻API采集数据表(存储新闻标题、内容等结构化数据)
|
||||
2. `collector_complaint_spider`:投诉信息爬虫数据表(含投诉文本、附件MinIO路径`attachment_minio_path`等)
|
||||
3. `collector_image_source`:采集层图片元数据表(存储图片URL、MinIO路径、格式、大小等)
|
||||
4. `processor_text_processor`:文本处理结果表(存储NLP分析结果、关联原文ID等)
|
||||
5. `processor_image_processor`:图片处理结果表(存储识别标签、特征向量、处理后图片MinIO路径`result_minio_path`等)
|
||||
6. `storage_object_index`:MinIO对象索引表(存储所有对象的MinIO路径、哈希值、创建时间、过期时间等)
|
||||
7. `main_task`:任务调度表(存储任务名称、路径、执行频率、上次/下次执行时间等)
|
||||
8. `application_reporter_daily`:日报数据表(存储日报结构化内容、报表文件MinIO路径等)
|
||||
9. `application_reporter_monthly`:月报数据表(存储月报结构化内容、报表文件MinIO路径等)
|
||||
|
||||
|
||||
#### 数据交互特性
|
||||
1. **MySQL交互**
|
||||
- 支持DataFrame直接读写,提供分块处理(`chunksize`)和批量插入能力
|
||||
- 自动适配平台特性(如Windows小批次写入优化)
|
||||
- 完善的事务机制确保结构化数据一致性
|
||||
|
||||
2. **MinIO交互**
|
||||
- 支持大文件分片上传、断点续传
|
||||
|
||||
3. **联动机制**
|
||||
- 非结构化数据存储时,先上传至MinIO获取路径,再将路径及元数据写入MySQL
|
||||
- 读取非结构化数据时,先从MySQL获取MinIO路径,再通过路径从MinIO下载
|
||||
- 日志同步记录MySQL操作和MinIO对象操作(如"上传文件至MinIO: {path},关联MySQL记录ID: {id}")
|
||||
|
||||
### 数据采集设计
|
||||
每一个数据采集均为独立python文件,里面执行主程序均为main,以方便调度
|
||||
每一个数据采集均会根据规则创建数据库表,数据处理类以processor_为开头,(或者统一维护到一个表中,按来源去区分)
|
||||
1. 结构化数据(如新闻文本、投诉内容):直接写入对应`collector_`前缀表
|
||||
2. 非结构化数据(如爬取的图片、附件):
|
||||
- 调用`minio_agent.py`上传至对应存储桶
|
||||
- 将MinIO路径、文件大小、格式等元数据写入`collector_`前缀表或`storage_object_index`表
|
||||
3. 每个采集模块(独立py文件,`main`方法入口)需同时处理MySQL和MinIO交互,确保数据关联完整
|
||||
|
||||
### 数据处理
|
||||
从多个数据库库表中获取数据,对数据进行处理,处理完成后将结果保存到数据库中,处理结果可能存储在多个表中
|
||||
数据处理数据库表以processor_为开头
|
||||
|
||||
### 数据处理设计
|
||||
1. 结构化数据处理:从MySQL读取原始数据,处理后写入`processor_`前缀表
|
||||
2. 非结构化数据处理:
|
||||
- 从MySQL获取MinIO路径,通过`minio_agent.py`下载原始文件
|
||||
- 处理后(如图片识别、视频帧提取)将结果文件上传至MinIO(处理层存储桶)
|
||||
- 将处理结果的结构化信息(如识别标签)和处理后文件的MinIO路径写入`processor_`前缀表
|
||||
3. 支持多表关联存储,通过`source_id`关联原始数据与处理结果
|
||||
|
||||
Reference in New Issue
Block a user