| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> TDengine在弘源泰平量化投资中的实践 -> 正文阅读 |
|
[大数据]TDengine在弘源泰平量化投资中的实践 |
公司简介 深圳市弘源泰平资产管理有限公司组建于2016年,团队核心成员来自于知名高校,有丰富的资产配置与策略构建的实践经验。弘源泰平以套戥交易绝对收益型配置工具为起点,致力于为用户提供流动性好、费率公允的资产配置工具。产品线全面、丰富,涵盖股、债、商品等各大类资产,通胀、趋势等各类因子。 场景简介+核心诉求我们的量化交易系统每天要接收大量的行情数据,也要基于行情产生大量的决策信号。这些数据都需要及时存下来,供盘中和盘后使用。 传统存放行情数据的方式有文件系统、关系型数据库或者文档数据库。我们尝试了MySQL和知名的时序数据库InfluxDB,但是性能都没有达到预期。分别遇到了如下问题:
最后,我们改用TDengine彻底解决了实时写入大量数据点和快速查询的问题。 TDengine具体落地对于策略研究员而言,历史行情和信号是交易策略研究的重要素材。下面以行情数据和策略信号数据为案例予以介绍。 数据建模首先,将行情数据和信号数据分别存储。在TDengine中分别创建了一个行情数据库和信号数据库。 虽然是时序数据库,但是TDengine使用了关系型数据库的模型,建库,建表,使用SQL,十分便于传统关系型数据库的用户入手。并且,他们还很有创意地设计了超级表的概念,与我们的场景十分契合。 因为所有行情数据结构相同,行情库中只需要一个超级表,下面每个工具(衍生品基金等)对应一个子表。比如CU2101表示2021年1月份到期的铜期货交易合约。在合约到期之前,都会有行情数据写入。下面重点介绍策略信号数据库。 信号库有两张超级表,分别对应合约级别信号和策略级别信号,每个交易信号对应一张子表,当前共有 40,000多张表,表结构分别如下所示: ?下面是信号库执行show tables的截图: ?数据库配置以及写入 我们选用的TDengine版本是2.2.0.0,由于单机版尚无压力,目前还不需要集群。此外,机器有40核,而TDengine的每一个vnode又是拥有独立运行线程的工作单元。所以,根据文章《这几个神秘参数,教你TDengine集群的正确使用方式》,我调整了minTablesPerVnode、tableIncStepPerVnode和maxVgroupsPerDb参数,让vnode的数量恰好等于CPU核数,让每个核独立运行一个线程,实现了数据的合理化分布,以争取达到最佳性能。 ? 写入性能当前,我们大概每秒写入3万行数据。单节点TDengine可以十分轻松地实现这个级别数据量的写入。同时,消耗服务器资源又比InfluxDB与MySQL小的多。因此,即便未来业务扩大,我们也不需要担心额外的硬件成本。 资源消耗我们当前的服务器配置如下:64G内存+40核 1.8GHz CPU+机械硬盘。 在业务运行期间,taosd的%CPU只有4%上下浮动,进程使用的物理内存百分比为11.2%。虽然内存占用稍多,但这是由于我们的vnode配置的比较多,每个vnode都有自己固定的内存缓冲区。因此,后续即便是继续大量增加新表或者加大写入量,内存占用也不会有明显的浮动了。 ?截至目前,通过TDengine录入的两个信号表已经写入了82亿条数据,原数据大概为92GB,实际占用存储空间为20G左右,压缩率高达23%,如果是整型数据应该还会更高。 ? ?? 查询性能除了写入与存储,使用TDengine做日常查询的速度也十分优秀,即便是对于几十亿级别的大表,也是毫秒级响应。我们来看两个场景。 场景1:查询特定策略信号下一段时间的均值。
以下是我们用场景1查询出的数据进行可视化分析的示例。 场景2:查询满足模糊查询条件的信号的最新值。
? 在修改cachelast缓存之前,查询效率如上。 后面在涛思数据的技术支持之下,我们将cachelast参数设置成了3。 ?再执行了同样的查询,查询效率得到了很大提升: 这两个都是我们比较典型的查询场景,TDengine完美地匹配了我们对功能以及性能上的需求。 写在最后我们目前对TDengine的使用还处于初级阶段,TDengine不仅仅是时序数据库,还可以作为消息队列,支持数据订阅。以后我们会探索将TDengine用于更多的业务场景,以更好地服务于我们的各类分析与交易执行。 关于作者: 丁博,弘源泰平量化工程师。目前负责公司交易执行系统、交易策略信号系统和交易组合管理系统的研发。 |
|
|
上一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 5:40:21- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |