量化数据存储选型:ClickHouse 还是 DolphinDB?

在构建量化交易系统时,历史行情数据(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 将这两者打通,实现自动化的数据清洗流水线。