# 数据表分表完成总结 ## 完成状态: ✅ 全部完成 ## 股票数据表分表 ### 日线分表 (3张表) | 表名 | 用途 | 状态 | |------|------|------| | `stock_klines_1d_base` | 基础K线数据 (OHLCV) | ✅ | | `stock_klines_1d_quote` | 行情指标 (均线/MACD/涨跌幅) | ✅ | | `stock_klines_1d_finance` | 财务数据 (市值/股本/利润) | ✅ | ### 分钟线 (2张表) | 表名 | 用途 | 状态 | |------|------|------| | `stock_klines_1m` | 1分钟线 | ✅ | | `stock_klines_5m` | 5分钟线 | ✅ | ### 实时数据 (1张表) | 表名 | 用途 | 状态 | |------|------|------| | `stock_realtime_quotes` | 实时行情快照 | ✅ | --- ## 期货数据表分表 ### 日线分表 (2张表) | 表名 | 用途 | 状态 | |------|------|------| | `futures_klines_1d_base` | 基础K线数据 (OHLCV+持仓量) | ✅ | | `futures_klines_1d_quote` | 行情指标 (均线/MACD/持仓变化) | ✅ | ### 分钟线 (2张表) | 表名 | 用途 | 状态 | |------|------|------| | `futures_klines_1m_base` | 1分钟基础线 | ✅ | | `futures_klines_5m_base` | 5分钟基础线 | ✅ | ### 实时数据 (1张表) | 表名 | 用途 | 状态 | |------|------|------| | `futures_realtime_quotes` | 实时行情快照 | ✅ | --- ## 代码文件 ### 模型定义 - `app/repositories/models.py` - 所有分表模型定义 ### 数据仓库 - `app/repositories/stock_repository_v2.py` - 股票分表仓库 - `app/repositories/futures_repository_v2.py` - 期货分表仓库 ### 创建脚本 - `scripts/create_split_tables.py` - 创建所有分表 - `scripts/add_stock_split_tables.py` - 添加股票分表 - `scripts/fix_models.py` - 添加期货分表 --- ## 使用方法 ### 1. 创建分表 ```bash python scripts/create_split_tables.py ``` ### 2. 股票数据操作 ```python from app.repositories.stock_repository_v2 import StockRepositoryV2 from app.repositories.database import SessionLocal from app.models import Frequency db = SessionLocal() repo = StockRepositoryV2(db) # 查询基础数据 base_data = repo.get_klines_base( symbol="600519.SH", freq=Frequency.FREQ_1D, start=datetime(2024, 1, 1), end=datetime(2024, 3, 1) ) # 查询行情指标 quote_data = repo.get_klines_quote( symbol="600519.SH", start_date="2024-01-01", end_date="2024-03-01" ) # 查询财务数据 finance_data = repo.get_klines_finance( symbol="600519.SH", start_date="2024-01-01", end_date="2024-03-01" ) ``` ### 3. 期货数据操作 ```python from app.repositories.futures_repository_v2 import FuturesRepositoryV2 db = SessionLocal() repo = FuturesRepositoryV2(db) # 查询基础数据 base_data = repo.get_klines_base( symbol="RB2410.SH", freq=Frequency.FREQ_1D, start=datetime(2024, 1, 1), end=datetime(2024, 3, 1) ) # 查询行情指标 quote_data = repo.get_klines_quote( symbol="RB2410.SH", start_date="2024-01-01", end_date="2024-03-01" ) ``` --- ## 分表设计优势 1. **查询性能**: 只需基础数据时,只查询轻量的base表 2. **更新解耦**: - 基础数据: 每日更新 - 行情指标: 计算后更新 - 财务数据: 财报季更新 3. **扩展性**: 新增指标只需修改quote表 4. **存储优化**: 冷热数据分离 --- ## 总表数统计 | 类别 | 表数量 | |------|--------| | 股票分表 | 6张 | | 期货分表 | 5张 | | **总计** | **11张** |