在构建量化交易系统时,历史行情数据(Tick/Bar)的存储和查询速度是决定回测效率的关键。最近我在重构实验室的数据底层,面临了一个经典的选择:是继续使用通用的 OLAP 神器 ClickHouse,还是转向金融专用的 DolphinDB?
性能与场景的权衡
1. ClickHouse:在大规模日志与宽表中的王者
ClickHouse 的列式存储和向量化执行引擎,让它在处理海量数据的聚合查询(Group By)时表现惊人。
- 优点:开源社区活跃,生态完善,对于非标准的宽表数据处理极快。
- 痛点:在处理复杂的时序窗口函数(如
moving average)和面板数据对齐(AsOf Join)时,SQL 写法较为繁琐,且性能在某些特定金融场景下不如专用数据库。
2. DolphinDB:为时序而生
DolphinDB 引入了许多针对金融时序数据的原生函数。
- 优点:内置了大量金融技术指标计算函数,
AsOf Join性能极佳,非常适合做因子计算和流式处理。 - 痛点:学习曲线较陡峭,需要适应其特有的脚本语言。
远思实验室的决策
考虑到我的核心需求是 高频数据的因子挖掘 和 ST-GNN 模型的特征工程,我决定采用 混合架构:
冷数据与归档:使用 ClickHouse 存储海量的原始 Tick 数据,利用其高压缩比节省磁盘空间。 热数据与计算:将近期数据和需要频繁重算的因子层放入 DolphinDB,利用其内存计算优势加速迭代。
下一步,我将分享如何使用 Python 将这两者打通,实现自动化的数据清洗流水线。