跳转至

数据库与数据边界

项目将应用状态与市场行情仓库分开,以避免策略/用户数据和高频或大体量行情数据混用同一个职责边界。

两类连接

连接 配置 存储内容
应用数据库 DATABASE_TYPEDATABASE_URL 用户、权限、策略、版本、回测任务、工作区、组合与审计相关状态
行情数据仓 AKSHARE_DATA_DATABASE_URL AkShare 行情、覆盖信息、质量辅助数据和在线补齐缓存

应用数据库支持 SQLite、PostgreSQL 和 MySQL。SQLite 适合本机开发;团队和生产环境应使用受管理的 PostgreSQL 或 MySQL,并配置备份、连接权限与监控。

访问原则

  • 后端通过 SQLAlchemy 异步会话和仓库/服务层访问应用数据库;不要在页面或路由中拼接 SQL。
  • 行情仓读取失败时,市场数据接口给出通用可读提示,不暴露连接字符串、主机、用户或密码。
  • 需要写入或迁移时使用参数化 SQL、受控权限账户和可回滚迁移;不要以运行时自动建表替代生产迁移流程。
  • 数据同步与应用数据库迁移是不同操作,均应先在备份或测试环境验证。

初始化与迁移

开发环境可按 .env 选择是否通过 DB_AUTO_CREATE_SCHEMADB_AUTO_CREATE_DEFAULT_ADMIN 自举。生产环境应默认关闭这类自动自举,并使用项目的 Alembic/运维迁移流程。详细操作见工程手册 docs/operations/DATABASE_INIT.mddocs/how-to/database-migration-playbook.md

数据可复现性

回测记录至少应能关联策略版本、标的、周期、数据范围、资金、手续费和运行时间。若使用在线补齐数据,记录该查询的来源与日期范围,并在重新验证时检查覆盖和质量。