2012-06-26 34 views
1

好吧,所以這個問題今天一整天都在破壞我的大腦。有趣的股票價格數據情景

問題:我目前通過多點傳送以極高的速率接收股票報價數據。我已經解析了這些數據,並以下面的形式收到它。

-StockID:INT-64
-TimeStamp:微秒從曆元
-Price的:int
-Quantity的:int

數百個數據的這些數據包進行解析每一秒。我試圖通過將這些數據打包到stockID(key == stockID)散列的字典/散列表中([timestamp,price,quantity]元素的value ==數組)來減少存儲端的計算。

我也希望每個詞典在5分鐘內表示時間戳。當傳入數據的時間戳超過5分鐘的時間間隔時,我希望這個新數據進入一個代表下一個時間間隔的新字典。此外,一個特殊的密鑰將在密鑰-1處被散列,以告知每一天該字典屬於哪一個特定的分鐘間隔(所以如果你在上午12點32分收到一些東西,它應該散列到在密鑰-1處具有值7的字典,因爲這表示該特定日的上午12:30至上午12:35的時間間隔)。一旦時間流逝,時間已過的字典可以發送到dataWrapper。

現在,你可能會想出一些關於現在的想法。但是這是一個很大的限制。 中的時間戳不一定嚴格增加;然而,如果在間隔結束後大約10秒鐘等待,則可以安全地假設進入的每個數據都屬於當前間隔。

我做所有這些複雜的事情的原因是減少我的應用程序的存儲方面的計算。通過上面的設置,我的存儲端線程可以遍歷字典中的所有鍵值對,並將它們存儲在存儲系統的相同位置,而無需重新打開文件,重新分配組或更改目錄。

祝你好運!我將非常感謝任何答案btw。 :)

首選如果你可以給我一些東西在python(這就是我在做項目),但我可以完全理解Java,C++,Ruby或PHP。

摘要

我試圖把股票數據轉變成能夠代表5分鐘的時間間隔爲每個字典詞典。數據附帶的時間戳決定了應該放入哪個特定的字典。除了時間戳不會隨着時間戳的嚴格增加而變化時,這可能相對比較容易,所以字典無法在經過5分鐘後立即發送到數據包裝器時間戳,因爲它不能保證在10秒內沒有收到更多的數據,在這之後它可以發送給包裝器。

我只是想要任何種類的想法,算法或部分實現,可以幫助我調度這一點。我們如何在時間戳(數據)和實際時間(10秒緩衝區)內切換當前使用的字典。

澄清編輯

5分鐘窗口應該驅動的數據(基於時間戳),然而10秒超時似乎是時鐘時間。

+0

你的問題到底是什麼?你能簡潔地表達它嗎? –

+0

是的,我將添加它作爲編輯。 – jab

+4

你的具體問題是什麼?我假設你沒有期待任何人爲你免費爲你工作。 –

回答

2

也許我失去了一些東西....

它似乎要保持數據在5個分鐘內桶,但你不能確保你有一個桶中的所有數據長達10秒在它翻身後。

這意味着您需要保留當前存儲桶和前一個存儲桶。當它超過5分鐘邊界10秒時,您可以發佈/寫出舊桶。

+0

對不起,我的意思是10秒。只是改變了它,實現方式是5分鐘桶本身就是實際的字典,但爲了便於解釋,這應該不重要。 – jab

+0

好的,修復我的答案。 –