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.

147 lines
3.3 KiB

# 数据表分表完成总结
## 完成状态: ✅ 全部完成
## 股票数据表分表
### 日线分表 (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张** |