十年期货股票行情数据轻松处理——TDengine在同心源基金的应用


十年期货股票行情数据轻松处理——TDengine在同心源基金的应用
文章图片

文章图片

作者:刘健 同心源(三亚)基金小 T 导读:同心源(三亚)基金管理有限公司是一家致力于采取科学方法 , 在二级市场进行投资的私募公司 。公司的团队成员均来自于国内外优秀大学 , 创始人具有计算机博士学位 , 有多年的算法研究、软件系统开发的经验 。
从我司的业务模式出发 , 业务人员主要通过数据挖掘和自动模式识别这两种方式来发现市场的交易规律 。因此 , 我们的工作场景是基于大量的金融数据之上的 , 主要包括如下几类: 国内期货市场的实时高频数据 , 逐笔数据等国内期货市场的历史高频数据 , 逐笔数据国内股票市场的高频数据 , 逐笔数据等国内股票市场的历史高频数据 , 逐笔数据依据以上数据产生的更大量级衍生数据
经过多年发展 , 股票市场数据量十分庞大 , 随着每日新数据的清洗写入 , 总量变得更加水涨船高 。对于十几 TB 的数据量 , 单是进行存储已经不易 , 如果还要对数据进行查询下载等操作 , 更是难上加难 。这些问题横亘眼前 , 也让我们对市面上的主流数据库逐渐丧失信心 。
后来 , 经过专业人士的引荐 , 我们尝试了 TDengine , 没想到它轻轻松松地就适配了我们的当前业务 。
具体实践与落地效果
选好数据库之后我们马上开始了搭建 , 并选择了当时最新的 2.1.3.2 的版本部署落地 , 不同数据种类对应的数据库分别如下:
1)股票高频数据库 , 包括股票市场的历史数据+每日新增数据:
这类数据每日通过 Python 连接器的方式 , 在收盘后批量导入再做分析 。其中每个表代表一个股票 , 共 85 列 , 以 Float 数据为主 , 共 32311 张 。

十年期货股票行情数据轻松处理——TDengine在同心源基金的应用
文章图片

文章图片


十年期货股票行情数据轻松处理——TDengine在同心源基金的应用
文章图片

文章图片


十年期货股票行情数据轻松处理——TDengine在同心源基金的应用
文章图片

文章图片

根据上述表结构计算 , 当前情况每行大概有 408 字节的长度 , 然后我们用脚本对所有表进行了行数查询 , 大概是 320 亿行 。
以上述数据为基础对入库的总数据量进行下估算 , 粗略计算为 408*320 亿行 , 大概 12TB 左右 , 后面经过统计最终实际占用磁盘空间却只有 2T 左右 , 这令我们十分震惊——压缩率高达 16.7% 。

十年期货股票行情数据轻松处理——TDengine在同心源基金的应用
文章图片

文章图片

众所周知 , Float 类型的数据压缩一直是数据库领域的一个难题 , 尤其是对于行式存储的数据库更是困难 , 高兴之余也非常感谢 TDengine 的列式存储 , 帮助我们完美解决了这个棘手的问题 。
之后从官方人员处我们得知 , 在后续版本中 , TDengine 还对浮点类型数据做了更进一步的算法优化 , 压缩率还能获得大幅提升 。只不过目前需要手动编译 , 具体操作方式可以联系官方人员 。
2)期货库:
期货库是部署在另一个服务器上的 , 有如下三个:期货高频数据库、期货 X 频率数据库、期货 Y 频率数据库 。他们分别代表着国内全部期货的高频数据和不同时间频率的聚合数据:
1)期货高频数据库:实时记录交易所发送的 tick 数据