【发布时间】:2012-12-19 14:27:36
【问题描述】:
我拥有的是大约 130GB 的数千个金融工具订单簿的时变状态数据。
我拥有的 csv 文件在订单簿状态的每次更改中都包含一行(由于执行的交易、插入的订单等)。状态被描述为:一般订单簿信息的几个字段(例如工具的 isin 代码),有关状态变化的一些信息字段(例如 orderType,时间),最后是当前状态的买入和卖出水平。卖出和买入订单最多有 20 个级别(买入级别 1 代表最佳买入价,卖出级别 1 代表最佳卖出价等),每个级别包含 3 个字段(价格、总成交量和订单金额)。最后,对于买方和卖方,还有 3 个超过 20 级别的聚合数据字段。这相当于每个州最多 21*2*3 = 126 个级别数据字段。
问题在于,由于几乎不存在接近 20 个级别的任何地方,因此为每个级别保留字段似乎没有意义。例如。我会有一行有 3 个买入级别,其余字段为空。另一方面,同一订单簿可能在片刻后有 7 个买入级别。
我肯定会将一般订单信息标准化到它自己的表中,但我不知道如何有效地处理级别。
任何帮助将不胜感激。
【问题讨论】:
-
也许您应该看看其他非关系数据库系统,例如 CouchDB 或 MongoDB。它们都不像 MySQL 那样严格,因为您可以在“表”的每条记录中定义不同的字段。
-
似乎您可以将“级别”放在单独的表中,然后加入并排序以获得第一个、第二个等。如果您需要将它们全部显示在一行中进行选择,您将使用一系列 ifnull() 子句。
-
@mvillaress:这已经超出了我的想法,但是由于我现有的系统、数据(在 MySQL 数据库中)和技能/知识,如果我只能在 MySQL 中执行此操作会更方便它以某种方式工作。
-
@ethrbunny:我不确定我是否理解您的建议。我看到用于帮助解决不必要字段问题的级别的单独表的唯一方法是源数据中是否有一个表/行,因为所需字段的数量因订单簿而异,并且随着时间的推移对于单个订单簿。
标签: mysql