Local EPUB Text
数据存储
通常使用数据库存储搜集到的数据以备后续使用,数据库一般有几种形式。第一种数据库是没有相对关系结构的平面文件(flat file),这种两维的数据库和普通的表格很类似。这种平面文件数据库不会因为需要加载太多内容而变慢,由于简洁而广受欢迎。这种简单的文件结构很容易进行搜索,通常是顺序搜索(如从第一行到最后一行)。但是,想象一下,在有着几百万条记录的平面文件中搜索接近文件末尾的某条记录时,可能需要花费相当长时间。为解决这一问题,很多宽客使用指针平面文件(indexed flat files),增加了额外一步但使得大文件的搜索变得容易。指针为电脑建立了一张虚拟的表格(cheat sheet),提供了一种比顺序搜索更加智能化的算法对大数据集进行搜索。
第二类数据存储系统是关系数据库。关系数据库允许数据集中出现更加复杂的关系。例如,假设我们不仅想追踪股票自身的数据,还需要其所在产业、所在生产部门、所在国指数以及所处的股市的一些数据。这是宽客需要做的常规事项。使用平面文件系统时,我们不得不为每一组数据建立一个独立的表结构。如果每张表的组成元素都没什么变化还比较好办。但现实中,每次发生公司行为、合并或其他事件,我们得对每一张表中该股票的相关记录进行修正,该股票的所有记录都需要进行更新。而在关系数据库中,我们只需要创建一个包含每只股票属性(如所在行业、所在板块、所属市场和所在范围)的表即可。在这张表的基础上,我们很容易对股票及其属性的相关信息进行管理。数据库根据已建立的关系可以对其他部分进行管理。尽管关系数据库具有强大的搜索能力,但搜索过程也可能会很缓慢而冗长,因为搜索时需要扫描很多表单、元表单和数据表之间的关系。
有一类很重要的关系数据库被称为数据立方体(data cube),这一说法源于Stark量化投资公司的前总裁苏德·齐德卡拉(Sudhir Chhikara)。数据立方体强调关系数据库的一致性,把所有金融产品所有属性的取值都放到一个三维数据表中。对某个日期而言,所有产品都列在这张表的一个坐标轴上。第二个轴则存储所有产品给定属性(如当日收盘价)的取值。第三个轴则存储其他属性的取值(如当日每股收益)。这种方法以一种有效的方式对关系进行了简化。换句话说,该方法将某些关系强行连接了起来;进一步通过保留每天每种产品的所有属性,对于给定的产品和属性则不需要去搜索最新的数据点。每天都创建数据立方存储所有的相关数据,这种方法也有自身的缺陷。对关系进行强行连接会导致灵活性的缺乏,所以如果关系的性质或数据查询方式发生变化时,会出现很大问题。
各种数据存储方法都各有优缺点。在一定假设条件下就比较容易说哪种方法“最优”,但实际情况是最优方法取决于所要解决的问题。就像黑箱的其他部分一样,宽客在这里做出的判断会决定成败。