标签:项目 策略 方式 水平 空间 api接口 平台 写入 关系型数据库
原文链接:http://sqlhis.com/index.php/2020/05/14/5-数据库存储leveliii的优缺点/
从前面的讨论来看,除了实时策略数据一定不落地外,对于需要将历史数据落地的情况。实际上有两个选择。(注:其实还有第三种选择,提供一个高频数据的计算平台,这种编程量就很大的,是个大工 程。)
1.文件存储,然后搞一套API接口读取数据,当然这个数据供应商会帮你做好。但是无论如何进行策略回测的时候,研究人员需要自己编写一套程序;又或者研究人员没有这个能力,就需要加上一个专门的程序员来完成研究人员的想法,其中的沟通成本非常高。
2.将历史数据放到数据库中进行存储,这也是我比较推崇的方式。之前的项目曾使用SQL SERVER存储Level2数据。那用数据库存储到底有什么优缺点以及难点呢?
先谈谈数据库存储的缺点:
.磁盘占用空间大。
这点是不容置疑的,虽然数据库都有压缩功能,可以提高空间利用率。但使用的是通用压缩方法,由于定制文件压缩可以根据数据特征有针对性的压缩,所以在大家都做到极致的情况下,数据库存储占用的空间一定比定制文件存储要大。需要解释什么是做到极致,计算机语言速度大致是“C++”>”C#”,但是一个顶级C#程序员写出的程序性能会强于一个菜鸟C++程序员,我这里“极致”的意思是大家的技术水平都非常高。
在做到极致的情况下,和文件存储比较,数据库存储沪深LEVEL2的单日存储应该可以控制在3G以内,按年算的话,可以控制在1T以内,买个20T的磁盘,数据可以存20年了。
所以,磁盘空间占用虽然大,但是还是可以接受的。
再谈谈优点:
.编程复杂度降低了,开发效率提高
都说关系型数据库入门容易精通难,但是对于策略研究人员来说,在数据库里面进行分析,比采用API读取文件要简单的多,直接采用SELECT语句就可以开始干活了,或者需要将数据导入到其他软件中,数据库接口是开放接口,只要有数据库驱动即可。如果是专用的API接口,使用起来会复杂很多。
再谈谈中性特点:
.计算性能
很难武断的说关系数据库是快还是慢,这取决于进行何种计算,但是可以确认的是,关系型数据库有数据缓冲,如果进行一个小区间计算的话,配上64G以上的内存,数据可以全部放到缓冲里面,性能是足够强大的。
总之,笔者认为,在语句写的没问题的情况下,速度是足够快的。
.除了计算性能,通常比较担心的是插入性能
LELVEL2数据那么大,数据库的写入会不会成为瓶颈?其实数据库的写入能力远比我们想象中强大,其实写入能力最关键的是网络和磁盘,在千兆网下,传输性能大概是100M字节每秒,一般磁盘阵列的写入能力可以达到400M字节每秒。数据库的写入能力也就被这两个指标限制住了,只要设计良好,数据库是可以以50M字节每秒的速度写入的,写入3G数据按理论算,仅仅需要60秒。
在笔者之前的项目中,是将文件存储的数据通过API取出来,存到数据库中,而数据库的插入并不是瓶颈,通过API读取文件才是瓶颈。
标签:项目 策略 方式 水平 空间 api接口 平台 写入 关系型数据库
原文地址:https://www.cnblogs.com/artmouse/p/12912502.html