【问题标题】:The best way to save huge amount of financial tick data of forex保存大量外汇金融报价数据的最佳方式
【发布时间】:2012-02-25 07:40:46
【问题描述】:

我有很多外汇报价数据要保存。我的问题是最好的方法是什么?

这是一个例子:我只从 EURUSD 货币对收集了 1 个月的数据。它最初是 136MB 大的 CSV 文件,有 2465671 行。我使用由 http://www.codeproject.com/Articles/9258/A-Fast-CSV-Reader 编写的库,读取所有刻度并将其保存在 2465671 个对象中大约需要 30 秒。首先,它是否足够快?

其次,有没有比 CSV 更好的方法?例如,可能更快的二进制文件以及您是否对任何最好的数据库有任何建议?我尝试了 db4o,但它不是很令人印象深刻。我认为这是将数据保存为对象属性的一些开销,以及当我们必须在 db4o 的 Yap 文件中保存 2465671 个对象时。

【问题讨论】:

  • 我们不能告诉你它是否足够快——只有你可以回答这个问题。同样,除非我们更了解您的要求,否则我们无法告诉您是否有任何东西比 CSV“更好”或“更差”。即使这样,这个问题也可能过于宽泛而无法得到很好的答案。

标签: c# csv binaryfiles


【解决方案1】:

也许看看这个产品: http://kx.com/kdb+.php 它似乎是为此目的而制作的。

【讨论】:

    【解决方案2】:

    节省数据空间(希望是时间)的一种方法是将数字保存为数字而不是文本,这正是 CSV 所做的。

    您也许可以从每一行中创建一个对象,并使读取和写入每个对象成为一个序列化问题,这在 C# 中有很好的支持。

    【讨论】:

      【解决方案3】:

      我之前考虑过这个问题,如果我正在收集这些数据,我会打破这个过程:

      1. 从提要中收集数据,形成一条线(我会使用固定宽度),然后将其追加到一个文本文件中。
      2. 我会每分钟创建一个新的文本文件,并将其命名为 rawdata.yymmddhhmm.txt 之类的名称
      3. 然后我会让另一个进程在后台读取这些文件,然后通过参数化插入查询将其推送到数据库中。

      我可能会在二进制文件上使用文本,因为我知道追加不会有任何问题,但我也会考虑打开二进制文件进行追加。这实际上可能会好一些。

      此外,您希望以追加模式打开文件,因为这是写入文件的最快方式。这显然需要非常快。

      【讨论】:

      • 我最终决定使用您刚才描述的类似方式。
      • 但我会将它们压缩成二进制而不是关系数据库。
      • 为什么是二进制(我假设的文件)?为什么不是数据库?我想我更喜欢数据库,因为我可以聚合并对其进行其他“集合”类型的分析,而不是遍历它来处理所有事情。克维姆?顺便说一句-如果您有兴趣,我想离线讨论一下。我的连接详情在我的个人资料中。
      • 我也是。我更喜欢和你离线交谈。已与您联系。
      【解决方案4】:

      如果您有几百万可用,Kx 的 kdb 数据库将是一个很棒的现成软件包。但是,您可以轻松编写自己的面向列的数据库来存储和分析高频数据以获得最佳性能。

      【讨论】:

      • 能否给我一个你刚才提到的面向列的数据库的例子或参考书?非常感谢
      • 顺便说一句,kx 的 kdb 相当昂贵,并且是为机构玩家设计的。我猜。
      • 是的,它非常昂贵,只有财力雄厚的人才买得起。我建议你将每一列写成一个数组并将每一列序列化到磁盘(如 c1.dat、c2.dat)。然后,您需要编写一种查询语言来过滤表中的数据,从而实现类似 SQL 的语法。
      【解决方案5】:

      我将 TB 保存为压缩二进制文件 (GZIP),我使用 C#/.NET 内置的 gzip 压缩/解压缩阅读器动态解压缩。

      【讨论】:

        【解决方案6】:

        HDF5 广泛用于大数据,包括一些金融公司。与 KDB 不同,它是免费使用的,并且有很多库可供使用,例如 .NET wrapper

        This SO question might help you get started.

        HDF5 homepage

        【讨论】:

          猜你喜欢
          • 2021-04-19
          • 2011-11-26
          • 1970-01-01
          • 1970-01-01
          • 2023-04-08
          • 2012-10-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多