free-stockdb本地金融数据库核心设计

#前言:

如果使用sql强行关联,那么你拿到的数据就是一个黑盒数据,是否完全对齐:未知,是否存在某个数据缺失:未知。

###解决需求:

# free-stockdb 架构取舍逻辑

传统的sql需要预置表格头,写一长串sql建立死表,后续数据无法灵活扩展。比如某天新增一个技术因子、某天新增事件标签、自定义截面指标,要么执行ALTER TABLE修改表结构,海量历史数据伴随迁移开销;要么新建附属表,引入复杂联表逻辑,长期积累大量工程债务。

落到 free-stockdb 的架构取舍逻辑

它抛弃旧关系模型、放弃 SQL,本质是意识到:

股票研究不需要预先定义好的数据关联;

我们需要的是自由读取原始时序数据,在代码层动态构建关联---------即:动态关系(因子)挖掘。

###通用数据库设计

目标是 "什么业务都能跑",必须做出大量折中;

free-stockdb 从底层架构到上层接口,全部围绕股票时序研究定向取舍:

主动放弃通用 SQL、关系型数据库

✅ 无 Schema,随意新增自定义因子、嵌套数据,无需调整存储;

✅ code+时间索引针对行情查询深度优化;

✅ 内置 A 股全套业务规则:增量同步、复权、停牌、代码更替;

✅ Python + HTTP 双接口,JS 直接访问,静态 HTML 实现 K 线分析;

✅ pipe 批量原子读写,适配一边写行情、一边并行回测;

✅ 原生板块双向映射,快速构建自定义股票池。

###free-stockdb做法

c++股票专用数据库。

基于时序设计:rd.set/setr/get/keys/vals/len(code,time,data)

code:标识,可以是A股,美股,期货,基金...

data:数据,可以是分钟线,日,周,月线,L1_tick,L2_tick,财务,指标,因子...

data-type:类型,可以是int,float,dict,list,str,bytes,df...

能力:

rd.get("日k","600*",date1<date2):60.all().get("close").set(val) #正则*,范围,截取,排序,子对象,列式访问,修改极简api...

额外能力:

pipe,wal,链式调用,同步异步混用,http原生支持,仅2.2mb单文件完成。

SQL查询 与 free-stockdb rd.get 实战用法对比

场景:单标的区间行情获取

需求:获取【000001.SZ】2025-01-01 ~ 2025-12-31 日线行情

通用数据库 + SQL(DuckDB/MySQL)

第一步:提前建表,字段固化

sql 复制代码
CREATE TABLE stock_daily(
ts_code TEXT,
trade_date DATE,
open FLOAT,close FLOAT,high FLOAT,low FLOAT,vol FLOAT
);
查询语句
SELECT * FROM stock_daily
WHERE ts_code='000001.SZ' AND trade_date BETWEEN '2025-01-01' AND '2025-12-31'
ORDER BY trade_date ASC;

free-stockdb 单条完成。

python 复制代码
data = rd.get(code="000001.SZ", start="2025-01-01", end="2025-12-31", period="1d")

痛点

后续存入 MA5、资金流向、自定义情绪因子二选一:

ALTER TABLE增加字段,海量历史数据产生迁移成本;

新建独立因子表,回测必须多表 JOIN,逻辑复杂度持续上升;

所有字段、数据类型在建表时锁定,阻碍因子快速迭代。

free-stockdb无需预先定义表结构,直接调用:

python 复制代码
运行
data = rd.get(code="000001.SZ", start="2025-01-01", end="2025-12-31", period="1d")

运行

随时扩展新增指标,无需改动底层存储:# 动态计算因子直接写入bar

python 复制代码
bar["ma5"] = calc_ma5(bar_series)
bar["capital_flow"] = calc_money_flow(bar_series)
rd.set("000001.SZ", trade_date, bar, period="1d")

对比显而易见。

相关推荐
wno7046 小时前
postgresSQL压缩版安装与基本命令
数据库·postgresql
聚美智数8 小时前
智能结构化识别-图片结构解析-图像结构化解析-照片结构化解析
android·java·数据库
瀚高PG实验室8 小时前
瀚高数据库常用系统表查询入门指南(附常用SQL)
数据库·sql·postgresql·瀚高数据库
ben9518chen8 小时前
mysql数据库基本操作
数据库·mysql
2603_965148118 小时前
电商选品调研:通过关键词搜索API获取市场热销商品,结合商品详情API分析竞品卖点与定价
开发语言·数据库·人工智能·python·信息可视化
土豆.exe9 小时前
nf_tables 的 verdict 被读了两次:一个十年未闭合的位域错配
java·数据库·网络安全·缓存
缓慢更新9 小时前
表单引擎的存储建模:宽表与文档库的取舍
运维·服务器·网络·数据库·低代码·oracle·适配器模式
Web3&Basketball11 小时前
实测Gemini4Argon:ERQA 87%登顶长程任务榜
数据库·python·大模型·多模态·gemini·长上下文·推理优化
xiaogai_gai11 小时前
金蝶收料通知单查询策略实战教程:从源系统拉取到中间层落地的完整路径
java·前端·数据库
注塑机数据采集联网11 小时前
注塑机数据采集网关对接MES系统数字化技术方案
大数据·网络·数据库·物联网·数据挖掘·数据分析