数据库与数据边界¶
项目将应用状态与市场行情仓库分开,以避免策略/用户数据和高频或大体量行情数据混用同一个职责边界。
两类连接¶
| 连接 | 配置 | 存储内容 |
|---|---|---|
| 应用数据库 | DATABASE_TYPE、DATABASE_URL | 用户、权限、策略、版本、回测任务、工作区、组合与审计相关状态 |
| 行情数据仓 | AKSHARE_DATA_DATABASE_URL | AkShare 行情、覆盖信息、质量辅助数据和在线补齐缓存 |
应用数据库支持 SQLite、PostgreSQL 和 MySQL。SQLite 适合本机开发;团队和生产环境应使用受管理的 PostgreSQL 或 MySQL,并配置备份、连接权限与监控。
访问原则¶
- 后端通过 SQLAlchemy 异步会话和仓库/服务层访问应用数据库;不要在页面或路由中拼接 SQL。
- 行情仓读取失败时,市场数据接口给出通用可读提示,不暴露连接字符串、主机、用户或密码。
- 需要写入或迁移时使用参数化 SQL、受控权限账户和可回滚迁移;不要以运行时自动建表替代生产迁移流程。
- 数据同步与应用数据库迁移是不同操作,均应先在备份或测试环境验证。
初始化与迁移¶
开发环境可按 .env 选择是否通过 DB_AUTO_CREATE_SCHEMA 和 DB_AUTO_CREATE_DEFAULT_ADMIN 自举。生产环境应默认关闭这类自动自举,并使用项目的 Alembic/运维迁移流程。详细操作见工程手册 docs/operations/DATABASE_INIT.md 与 docs/how-to/database-migration-playbook.md。
数据可复现性¶
回测记录至少应能关联策略版本、标的、周期、数据范围、资金、手续费和运行时间。若使用在线补齐数据,记录该查询的来源与日期范围,并在重新验证时检查覆盖和质量。