您的位置:首页 > 数据库 > Redis

Redis: 为行情数据库设计键值

2017-12-11 17:28 309 查看


Redis: 为行情数据库设计键值

原创 2015年10月04日
21:06:51

标签:
Redis

1519

       如果说用传统关系数据库如MSSQL,MYSQL,PGSQL来设计一个行情数据库,除表名外,就是列字段了。

       比如,表名:600036.SH_1min,  (这里假定每个个股设计一张表,避免把所有的个股放在一张表中,导致数据以亿计,查询效率太低)

       举例而言,其中一条记录(虚拟)

        code :600036.SH Date :2014-10-09 DateTime: 930 Open: 9.60 High:10.08 Close:10.02 Low :9.54 Volume: 123456 Amount :78964531 Factor: 5.123

        另外,成份股的指数权属作为另外一张表而存在,不放在这里,否则太大,也浪费空间。

        如果以内存数据库Redis来设计key-value,相对的key 就会比较长,但value比较简单。

         因为key的唯一性,

         比如,同样以上面的记录而言,可能就要设计一个唯一的KEY:

         key1:  600036.SH_1min:2014-10-09:0930:Open  => value1 :9.60

         key2:  600036.SH_1min:2014-10-09:0930:High    => value 2:10.08

         key3:  600036.SH_1min:2014-10-09:0930:Close  => value3 :10.02

         key4:  600036.SH_1min:2014-10-09:0930:Low     => value4 :9.54

          ......

          也就是说

          set   600036.SH_1min:2014-10-09:0930:Open  9.60

          set   600036.SH_1min:2014-10-09:0930:High  10.08

          set   600036.SH_1min:2014-10-09:0930:Close   10.02

          set   600036.SH_1min:2014-10-09:0930:Low  9.54

           .......

          这样,就可以建立一系列的KEY-VALUE结构的非结构化数据了。

         下面,针对历史行情数据库中,典型的日度数据,N分钟数据,TICK数据,我们要进行一个整体上的数据库设计。

         (1) 类型的设计

              我个人认为,用hash的方式来设历史行情库,可能会更好。

         (2) KEY 的设计

              一般而言,而行情数据库的KEY要包含代码名称(比如,600036.SH).但是,因为分钟数据和日度数据的粒度相差较大,如何统一考虑?

             其中,不同类型的数据的文件名应有唯一性。

              A、分钟数据:

                           文件变量名:"600036.sh_1min“,假设有6年的数据,6*250*270  约40万条左右的数据记录源(注意KEY个数还要乘以记录的字段数,下同。)

                            KEY : “600036.sh_1min_2014-10-09_930”  => 开盘价,收盘价,最高价,最低价,成交量,成交金额,复权因子....

              B、TICK数据:

                           文件变量名:”600036.sh_Tick_2014-10-09“  

                                                  #  把每天的TICK,有数千条(股票)甚至数万条(期货)放到一个变量中。

                           KEY: ”600036.sh_Tick_2014-10-09 _930_01.001“ =>

              C、日度数据:

                          文件变量名:”600036.sh_1day“,假设6年数据,此文件大约会储存 6*250 =1500条左右数据源。

                          KEY: “ 600036.sh_1day_2014-10-09” =>

             另外,数据中应考虑不同类类型的数据,可能具有不同的特征,如 股票:复权因子,期货:未平仓合约量 。

        (3)性能比较

             数据如何设计,关键要看性能和维度容易程度。这块需要后续实证了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: