从零搭建智能交易系统贰使用TDengine存储数据速度至少快10倍

vnpy各个数据库方案对比

如果你使用的是小时线以上级别的k线。或者只保存几个品种的数据,那么就不用看这篇文章了。

如果你想保存所有的分钟或者tick数据,数据总量会到达亿级。那么就需要好好构思下数据存储的方案。

首先我们看下vnpy数据库的模块

SQL类

SQLite(sqlite):轻量级单文件数据库,无需安装和配置数据服务程序,VeighNa的默认选项,适合入门新手用户

MySQL(mysql):主流的开源关系型数据库,文档资料极为丰富,且可替换其他NewSQL兼容实现(如TiDB)

PostgreSQL(postgresql):特性更为丰富的开源关系型数据库,支持通过扩展插件来新增功能,只推荐熟手使用

NoSQL类

DolphinDB(dolphindb):一款高性能分布式时序数据库,适用于对速度要求极高的低延时或实时性任务

Arctic(arctic):高性能金融时序数据库,采用了分块化储存、LZ4压缩等性能优化方案,以实现时序数据的高效读写

TDengine(taos):分布式、高性能、支持SQL的时序数据库,带有内建的缓存、流式计算、数据订阅等系统功能,能大幅减少研发和运维的复杂度

TimescaleDB(timescaledb):基于PostgreSQL开发的一款时序数据库,以插件化扩展的形式安装,支持自动按空间和时间对数据进行分区

MongoDB(mongodb):基于分布式文件储存(bson格式)的文档式数据库,内置的热数据内存缓存提供更快读写速度

InfluxDB(influxdb):针对TimeSeries Data专门设计的时序数据库,列式数据储存提供极高的读写效率和外围分析应用

LevelDB(leveldb):由Google推出的高性能Key/Value数据库,基于LSM算法实现进程内存储引擎,支持数十亿级别的海量数据

首先排除sql类型数据库,由于行情属于属于高频低信息含量的数据,比较适合OLAP储存方案,也就是clickhouse类型的数据库以及专门为时间序列准备的数据库,所有剩下的方案只有

dolphindb, arctic , tdengine, timescaledb,InfluxDB

而从性能上考虑,只有两个能打的

dolphindb,tdengine 这两个都是国产!中国在时间序列数据库上可以说遥遥领先。

最流行的influxdb为什么不选,单点丢失数据严重,集群功能不开源。

dolphindb免费版本支持2核8G的内存,如果不保存tick数据或者股票的level2行情绝对够用。

如果想保存tick行情和level2行情,那么使用tdengine吧! 开源,并且支持集群功能,绝对的国产良心。

TDengine安装

看文章的大部分都是windows系统,安装TDengine前需要先安装docker

https://www.docker.com/products/docker-desktop/

安装完成后不要着急打开,因为默认的安装路径是c盘,而安装数据库后,数据会把c盘撑爆。所以需要把docker迁移到d盘中

// 把F:\DockerDesktop\data\docker-desktop.tar替换成自己的目录
wsl --export docker-desktop F:\DockerDesktop\data\docker-desktop.tar
// 把F:\DockerDesktop\data\docker-desktop-data.tar替换成自己的目录
wsl --export docker-desktop-data F:\DockerDesktop\data\docker-desktop-data.tar
wsl --unregister docker-desktop-data
wsl --unregister docker-desktop
//F:\DockerDesktop\docker-desktop\ 是安装目录 F:\DockerDesktop\data\docker-desktop.tar是上面命令的备份文件
wsl --import docker-desktop F:\DockerDesktop\docker-desktop\ F:\DockerDesktop\data\docker-desktop.tar --version 2
wsl --import docker-desktop-data F:\DockerDesktop\docker-desktop-data\ F:\DockerDesktop\data\docker-desktop-data.tar --version 2

打开cmd 使用docker安装TDengine

docker pull tdengine/tdengine:latest
docker run --name tdengine -d -p 6030:6030 -p 6041:6041 -p 6043-6049:6043-6049 -p 6043-6049:6043-6049/udp tdengine/tdengine

出现图中的标志就是安装成功。

从零搭建智能交易系统贰使用TDengine存储数据速度至少快10倍

tdengine在查询和存储上会比mongodb快很多,未来就算数据量到达TB级别,也可以通过扩展集群的方式轻松驾驭。

在vnpy中使用TDengine

  1. 安装vnpy_taos 这是TDengine的调用库
  2. 设置数据库配置
  3. 默认的用户名是root 用户密码 taosdata

从零搭建智能交易系统贰使用TDengine存储数据速度至少快10倍

从零搭建智能交易系统贰使用TDengine存储数据速度至少快10倍

从零搭建智能交易系统贰使用TDengine存储数据速度至少快10倍

其他的存储方案

其实行情数据最适合的是文件存储,因为所有的行情我们在提取的时候都是按照合约来调用的,所以每一个合约存储一个文件,或者把tick行情按照合约(代码)/日期 进行存储,进行适当的压缩,这样更加方便管理。

其实在wondertrader中,我们就可以看到这种方案的设计思想,压缩率高,使用方便,并且文件管理更加直观一些。

这个系列会记录我从头打造一个智能交易系统,基本上都是每天的开发随笔记录。中间会踩不少的坑,跟随我你能发现量化交易的开发会是多么无聊又刺激的一件事情!

发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/73762
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!

(0)
股市刺客的头像股市刺客
上一篇 2024 年 7 月 10 日
下一篇 2024 年 7 月 10 日

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注