You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1.8 KiB
1.8 KiB
Proposal: Analysis Storage Refactor
问题背景
当前 futures_analysis.db 是独立的 SQLite 数据库,存储 14 张表(AI 分析、复盘计划、交易记录等)。与行情数据(已迁移到 MySQL/Redis)分离存储,存在以下问题:
- 数据孤岛:分析数据与行情数据分离,无法统一管理和备份
- 扩展性差:SQLite 不适合高并发读写场景
- 架构不一致:行情数据已采用 Redis→MySQL→SQLite 三级降级策略,分析数据仍使用单一 SQLite
目标
将 futures_analysis.db 的 14 张表迁移到 MySQL buffer_platform 数据库,并引入 Redis 缓存层,与行情数据存储策略保持一致。
范围
包含
- 复用现有 MySQL 连接(
mysql_engine)和 Redis 连接(redis_client) - 实现三级降级:Redis 缓存 → MySQL 持久化 → SQLite 兜底
- 启动时自动迁移现有 SQLite 数据到 MySQL
- 保持 ORM 模型定义不变
- 保持 API 接口不变
不包含
- 行情数据存储(已完成)
- 前端代码修改
- 新增业务功能
非目标
- 不改变现有 ORM 模型定义
- 不改变 API 接口签名
- 不引入新的业务逻辑
验收标准
- 启动时检测 MySQL/Redis 可用,自动创建 analysis 表并迁移数据
- API 读写 analysis 表时优先使用 Redis 缓存,未命中回源 MySQL
- MySQL 不可用时降级到 SQLite
- 现有功能(AI 分析、复盘计划、交易记录)正常工作
- 单元测试覆盖三级降级场景
风险
| 风险 | 缓解措施 |
|---|---|
| 数据迁移失败 | 保留 SQLite 作为降级方案,迁移失败时自动降级 |
| Redis 缓存一致性 | 写入时先删缓存,再写 MySQL,最后回填缓存 |
| 表结构不兼容 | 复用现有 ORM 模型,MySQL 自动创建表结构 |