01-数据方案设计

数据库的顶层设计文档。围绕"趋势定投分析需要什么样的数据基础设施"展开,覆盖选型、表结构、接口映射、更新策略、质量校验五个维度,给出可落地的方案与边界判断。

设计目标

数据库的核心目标是:为站点分析提供可用、可信、可查的本地数据,让中间段与终点段的分析文档不依赖外部接口实时调用,所有结论基于本地 SQLite 库得出。

设计判断基于以下前提:

  • 数据量在 50-500MB 级别,单机使用
  • 读多写少,每日批量更新写入,分析时只读
  • 个人投资分析,非量化交易,不需要毫秒级响应
  • 零运维优先,避免引入数据库服务

文档结构

文档核心问题关键结论
01-数据库选型说明用什么数据库SQLite(WAL 模式),不选 DuckDB/PostgreSQL/CSV
02-数据架构与表结构设计表怎么分按业务域分 8 组共 23 张表,维度表 + 事实表模式
03-数据获取接口与映射数据从哪来akshare 为主,主备接口,fetcher 层抽象可切换数据源
04-数据更新与调度策略何时更新按数据类型分级更新,Windows 任务计划程序调度
05-数据质量与校验规则数据是否可信完整性/准确性/一致性/时效性/交叉验证五维度校验

关键设计取舍

  1. 本地库为可信源:所有分析基于本地 SQLite,不直接依赖外部接口实时调用。外部接口失效不影响已有数据分析。

  2. akshare 是抓取层而非数据源:akshare 聚合了东方财富、新浪、同花顺、雪球、理杏仁等上游,接口稳定性依赖上游网站。关键数据准备主备接口,版本写入 requirements.txt 锁定。

  3. fetcher 层抽象:业务层不直接调用 akshare,所有外部接口集中在 fetcher_*.py 层。接口失效时只需修改 fetcher 层,不影响查询接口。

  4. 数据治理字段内嵌:每条数据带 data_qualitysourceupdated_at 字段,校验失败的标的写入 update_failure_log,分析查询默认过滤异常数据。

与其他模块的关系

  • 数据方案设计是数据库的顶层蓝图,决定 02-数据脚本 的实现方式与 04-查询接口 的查询能力
  • 表结构定义后,db.py 按此建表,fetcher_*.py 按接口映射填充数据
  • 数据质量规则决定查询接口中 data_quality IN ('ok', 'manual_fixed') 过滤条件的合理性

何时回查本文档