金融高频数据管理:DolphinDB 与 pickle 的性能对比测试和分析

本文对比测试了DolphinDB数据库与pickle在处理金融高频数据时的性能。结果显示,DolphinDB在数据读取速度上可提升10倍以上,而使用DolphinDB的Python API也有2-3倍的提升。测试还揭示了字符串类型对性能的影响,以及多任务并发下的性能对比。DolphinDB凭借列式存储和分布式计算,提供了更好的性能和数据管理优势。
摘要由CSDN通过智能技术生成

 

金融市场 L1/L2 的报价和交易数据是量化交易研究非常重要的数据。国内全市场 L1/L2 的历史数据约为 20~50T,每日新增的数据量约为 20~50G。传统的关系数据库如 MS SQL Server 或 MySQL 均无法支撑这样的数据量级,即便分库分表,查询性能也远远无法达到要求。例如 Impala 和 Greenplum 的数据仓库,以及例如 HBase 的 NoSQL 数据库,可以解决这个数据量级的存储,但是这类通用的存储引擎缺乏对时序数据的友好支持,在查询和计算方面都存在严重的不足,对量化金融普遍采用的 Python 的支持也极为有限。

数据库的局限性使得一部分用户转向文件存储。HDF5,Parquet 和 pickle 是常用的二进制文件格式,其中 pickle 作为 Python 对象序列化/反序列的协议非常高效。由于 Python 是量化金融和数据分析的常用工具,因此许多用户使用 pickle 存储高频数据。但文件存储存在明显的缺陷,譬如大量的数据冗余,不同版本之间的管理困难,不提供权限控制,无法利用多个节点的资源,不同数据间的关联不便,数据管理粒度太粗,检索和查询不便等等。

目前,越来越多的券商和私募开始采用高性能时序数据库 DolphinDB 来处理高频数据。DolphinDB 采用列式存储,并提供多种灵活的分区机制,可充分利用集群中每个节点的资源。DolphinDB 的大量内置函数对时序数据的处理和计算非常友好,解决了传统关系数据库或 NoSQL 数据库处理时序数据方面的局限性。使用 DolphinDB 处理高频数据,既可以保证查询与计算的超高性能,又可以提供数据管理、权限控制、并行计算、数据关联等数据库的优势。

本文测试 DolphinDB 和 pickle 在数据读取方面的性能。与使用 pickle 文件存储相比,直接使用 DolphinDB 数据库,数据读取速度可最多可提升 10 倍以上;若为了考虑与现有 Python 系统的集成,使用 DolphinDB 提供的 Python API 读取数据,速度最多有 2~3 倍的提升。有关 DolphinDB 数据库在数据管理等方面的功能,读者可参考 DolphinDB 的在线文档教程

1. 测试场景和测试数据

本次测试使用了以下两个数据集。

数据集 1 是美国股市一天(2007.08.23) Level 1 的报价和交易数据。该数据共 10 列,其中 2 列是字符串类型,其余是整型或浮点数类型,存储在 dolphindb 中的表结构如下表,一天的数据约为 2 亿 3000 万行。csv 文件大小为 9.5G,转换为 pickle 文件后大小为 11.8G。

数据集 2 是中国股市 3 天(2019.09.10~2019.09.12)的 Level 2 报价数据。数据集总共 78 列,其中 2 列是字符串类型,存储在 dolphindb 中的表结构如下表,一天的数据约为 2170 万行。一天的 csv 文件大小为 11.6G,转换为 pickle 文件后大小为 12.1G。 

 

DolphinDB database 的数据副本数设为 2。将这两个数据集写入 DolphinDB 后,磁盘占用空间为 10.6G,单份数据仅占用 5.3G,压缩比约为 8:1。pickle 文件没有采用压缩存储。测试发现 pickle 文件压缩后,加载时间大幅延长。

对比测试查询一天的数据。对 DolphinDB Python API 与 pickle,记录从客户端发出查询到接收到数据并转换成 Python pandas 的 DataFrame 对象的耗时。

对于 DolphinDB Python API,整个过程包括三个步骤:

  • 从 DolphinDB 数据库查询数据耗时,即若不使用 P

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值