我要保存很多Forex Tick数据。我的问题是最好的方法是什么?
这是一个例子:我只从EURUSD对中收集1个月的数据。它最初是CSV文件,大136MB,有2465671行。我使用了一个由http://www.codeproject.com/Articles/9258/A-Fast-CSV-Reader编写的库,它花了大约30秒来读取所有刻度并将其保存在2465671个对象中。首先,它是否足够快?
其次,有没有比CSV好的方法?例如,二进制文件可能更快,是否有任何关于任何数据库的推荐是最好的?我试过db4o,但它不是很令人印象深刻。我认为这是将数据保存为对象属性以及何时需要在db4o的Yap文件中保存2465671对象的一些开销。
答案 0 :(得分:5)
之前我已经考虑过了,如果我收集这些数据,我会打破这个过程:
我可能会在二进制文件上使用文本,因为我知道它会在没有任何问题的情况下附加,但我也会考虑打开一个二进制文件以便追加。这实际上可能会更好一点。
此外,您希望以追加模式打开文件,因为这是写入文件的最快方式。这显然需要超快。
答案 1 :(得分:1)
也许看看这个产品: http://kx.com/kdb+.php 它似乎是出于这个目的。
答案 2 :(得分:0)
保存数据空间(希望是时间)的一种方法是将数字保存为数字而不是文本,这就是CSV的功能。
你可以在每一行中创建一个对象,并使每个对象的读取和写入成为序列化问题,这在C#中有很好的支持。
答案 3 :(得分:0)
Kx的kdb数据库将是一个非常好的包,如果你有几百万的备用。但是,您可以轻松编写自己的面向列的数据库来存储和分析高频数据,以获得最佳性能。
答案 4 :(得分:0)
我将TB保存为压缩二进制文件(GZIP),使用C#/ .NET内置的gzip压缩/解压缩读取器动态解压缩。
答案 5 :(得分:0)
HDF5广泛用于大数据,包括一些金融公司。与KDB不同,它可以免费使用,并且有很多库可供使用,例如.NET wrapper