共计 1986 个字符,预计需要花费 5 分钟才能阅读完成。
作者:刘健 同心源(三亚)基金
小 T 导读:同心源(三亚)基金治理有限公司是一家致力于采取迷信办法,在二级市场进行投资的私募公司。公司的团队成员均来自于国内外优良大学,创始人具备计算机博士学位,有多年的算法钻研、软件系统开发的教训。
从我司的业务模式登程,业务人员次要通过数据挖掘和主动模式识别这两种形式来发现市场的交易法则。因而,咱们的工作场景是基于大量的金融数据之上的,次要包含如下几类:
- 国内期货市场的实时高频数据,逐笔数据等
- 国内期货市场的历史高频数据,逐笔数据
- 国内股票市场的高频数据,逐笔数据等
- 国内股票市场的历史高频数据,逐笔数据
- 根据以上数据产生的更大量级衍生数据
通过多年倒退,股票市场数据量非常宏大,随着每日新数据的荡涤写入,总量变得更加水涨船高。对于十几 TB 的数据量,单是进行存储曾经不易,如果还要对数据进行查问下载等操作,更是难上加难。这些问题横亘眼前,也让咱们对市面上的支流数据库逐步丢失信念。
起初,通过专业人士的推荐,咱们尝试了 TDengine,没想到它轻轻松松地就适配了咱们的以后业务。
具体实际与落地成果
选好数据库之后咱们马上开始了搭建,并抉择了过后最新的 2.1.3.2 的版本部署落地,不同数据品种对应的数据库别离如下:
1)股票高频数据库,包含股票市场的历史数据 + 每日新增数据:
这类数据每日通过 Python 连接器的形式,在开盘后批量导入再做剖析。其中每个表代表一个股票,共 85 列,以 Float 数据为主,共 32311 张。
根据上述表构造计算,当前情况每行大略有 408 字节的长度,而后咱们用脚本对所有表进行了行数查问,大略是 320 亿行。
以上述数据为根底对入库的总数据量进行下估算,粗略计算为 408*320 亿行,大略 12TB 左右,前面通过统计最终理论占用磁盘空间却只有 2T 左右,这令咱们非常震惊——压缩率高达 16.7%。
家喻户晓,Float 类型的数据压缩始终是数据库畛域的一个难题,尤其是对于行式存储的数据库更是艰难, 快乐之余也非常感谢 TDengine 的列式存储,帮忙咱们完满解决了这个辣手的问题。
之后从官网人员处咱们得悉,在后续版本中,TDengine 还对浮点类型数据做了更进一步的算法优化,压缩率还能取得大幅晋升。只不过目前须要手动编译,具体操作形式能够分割官网人员。
2)期货库:
期货库是部署在另一个服务器上的,有如下三个:期货高频数据库、期货 X 频率数据库、期货 Y 频率数据库。他们别离代表着国内全副期货的高频数据和不同工夫频率的聚合数据:
1)期货高频数据库:实时记录交易所发送的 tick 数据
2)期货 X 频率数据库:依据工夫周期 X 设定,记录聚合后的数据
3)期货 Y 频率数据库:依据工夫周期 Y 设定,记录聚合后的数据
以上三个库别离蕴含 3351、5315、5208 张子表,与股票库一样,它们同样包含长期的历史数据以及实时数据。
具体的表构造如下所示:
在查问方面,因为以后咱们的查问只是针对单表进行,因而逻辑比较简单,代码如下:
此外,因为期货不存在间断多年的行情,所以对于长期的数据展现,咱们抉择用多段的每 X 个月数据进行拼接,查问效率十分快。例如:在 TDengine 客户端服务器应用 Python 从服务端拉取间断两个月的期货行情数据,耗时仅需 0.16 秒。
下图为因子 1 在期货菜粕上的收益曲线,从这张图中咱们也能够看出,一些其余罕用的函数比方 max、last,基于 TDengine 的缓存等技术也都实现了毫秒级返回数据。
从“两点问题”到深刻单干
仔细的读者可能也留意到了文章中的两个小问题:
- 为什么咱们在估算原数据量时,是通过脚本来统计所有子表行数,再将其乘以单行字节,而不是间接通过 TDengine 的“超级表”?
- 又为什么在文章结尾的数据分类形容中,1- 4 条都在后文中都看到了理论对应的数据库,然而唯独没有呈现第 5 条——根据以上数据产生的大量衍生数据?
其实是这样,因为我的项目初期没有多表聚合查问的需要,外加为了升高数据迁徙的复杂度,因而在环境搭建初期时咱们并没有抉择超级表。
然而随着业务的不断完善,咱们将会须要更大量的数据来做更简单的剖析,这也就呈现了第 5 条的数据品种——根据以上数据产生的更大量级衍生数据。所以说,这部分数据将来源于咱们前面的待上线业务中。
届时,咱们将会更深刻地用到 TDengine 的其余外围个性,如超级表、泛滥计算函数等等。但仅就当下而言,TDengine 弱小的存储能力和疾速查问曾经十分令咱们惊喜,也让咱们对将来更加深刻的单干充斥期待。
对于作者:
刘健,北京航空航天大学模式识别业余硕士学历,已经供职于中国航天科技集团从事软件研发工作。2014 年与敌人一起守业从事外汇、期货、股票 ETF 的主动交易至今。着重致力于通过数据挖掘、主动模式识别等形式在国内二级市场中进行主动量化交易。
想理解更多 TDengine Database 的具体细节,欢送大家在 GitHub 上查看相干源代码。