2012-02-02 33 views
1

我有很多外匯交易數據需要保存。我的問題是最好的方法是什麼?保存外匯交易大量金融數據的最好方法

這裏是我的例子:我只從EURUSD對​​收集1個月的數據。它原本是136MB大的CSV文件,有2465671行。我使用了一個庫:http://www.codeproject.com/Articles/9258/A-Fast-CSV-Reader,它花費了大約30秒的時間來讀取所有刻度並將其保存在2465671個對象中。首先,它是否足夠快?

其次,有沒有比CSV更好的方法?例如,二進制文件可能會更快,您是否有任何關於任何數據庫最好的建議?我嘗試了db4o,但它不是很令人印象深刻。我認爲這是一些開銷,將數據保存爲對象的屬性,並且當我們必須在db4o的Yap文件中保存2465671個對象時。

+0

我們不能告訴你,如果它是快速enough-只你可以回答這個問題。同樣,除非我們更瞭解您的要求,否則我們無法告訴您是否有任何事情比CSV更「好」或「更糟」。即使如此,這個問題可能太廣泛而無法得到一個好的答案。 – 2012-02-02 16:30:13

+0

謝謝你的回答。 – 2012-02-02 16:33:25

回答

5

我想過此之前,如果我正在收集該數據,我會拆散過程:

  1. 從進料收集數據,形成一條線(我會使用固定寬度) ,並且附加到文本文件中。
  2. 我將創建一個新的文本文件,每分鐘並將其命名爲類似rawdata.yymmddhhmm.txt
  3. 然後我會在另一個進程在後臺讀取這些文件,並通過一個參數插入查詢,然後推到一個數據庫工作。

我可能會在二進制文件上使用文本,因爲我知道會附加沒有任何問題,但我也打算打開一個二進制文件以追加。這實際上可能會好一點。

另外,您想以追加模式打開文件,因爲這是寫入文件的最快方式。這顯然需要超快速。

+0

我終於決定使用剛剛描述的類似方法。 – 2012-02-02 21:47:36

+0

但我會壓縮他們到二進制的東西,而不是關係數據庫。 – 2012-02-02 21:48:34

+0

爲什麼二進制(我假設的文件)?爲什麼不是數據庫?我想我更喜歡數據庫,因爲我可以聚合並對其進行其他「設置」類型的分析,而不是遍歷所有內容。 KWIM?順便說一句,如果你有興趣,我想談談更多關於這個離線。我的連接詳情在我的個人資料中。 – 2012-02-03 00:04:29

1

也許看看這個產品: http://kx.com/kdb+.php 它似乎是爲了這個目的。

+0

男人。這對於金融機構而言非常昂貴。 – 2012-02-02 16:33:46

0

保存數據空間(希望是時間)的一種方法是將數字保存爲數字而不是文本,這是CSV的作用。

你也許可以從每一行中創建一個對象,並使每個對象的讀和寫都成爲一個序列化問題,這在C#中有很好的支持。

0

如果你有幾百萬的空閒空間,Kx的kdb數據庫將是一個非常好的包裝。但是,您可以輕鬆編寫自己的列式數據庫來存儲和分析高頻數據以獲得最佳性能。

+0

您可否給我一個您剛剛提到的面向列的數據庫的示例或參考書?順便感謝 – 2012-02-12 14:56:23

+0

,kx的kdb非常昂貴,專爲機構玩家設計。我猜。 – 2012-02-12 14:58:56

+1

是的,這是非常昂貴的,只有深入的口袋才能負擔得起。我建議你將每一列寫入一個數組,並將每一列序列化到磁盤(如c1.dat,c2.dat)。然後,您需要編寫一種查詢語言來將數據從表格中過濾出來,以便實現類似SQL的語法。 – algolicious 2012-02-13 08:58:39

0

我使用C#/ .NET內置的gzip壓縮/解壓縮閱讀器來動態解壓縮,我將terabytes保存爲壓縮二進制文件(GZIP)。

相關問題