有趣的股票壁虱数据情景

时间:2012-06-26 15:54:17

标签: java php c++ python ruby

好吧所以这个问题今天整天都在破坏我的大脑。

问题:我目前通过多播以极高的速率接收股票价格数据。我已经解析了这些数据,并以下列形式接收了它。

-StockID:Int-64
-TimeStamp:Epoch的微秒数 - 价格:Int
-Quantity:Int

每秒解析数百个这些数据包。我试图通过将这些数据打包成由stockID(key == stockID)(值= = [timestamp,price,quantity]元素的数组)散列的字典/哈希表来减少存储端的计算。

我还希望每个字典在5分钟的时间间隔内表示时间戳。当传入数据的时间戳超过5分钟的时间间隔时,我希望这些新数据进入代表下一个时间间隔的新字典。此外,一个特殊的密钥将在密钥-1处进行哈希处理,告诉该字典属于每天5个特定的分钟间隔(因此,如果您在上午12:32收到某些内容,它应该在密钥-1中散列到值为7的字典中因为这代表了特定日期的上午12:30到12:35的时间间隔。一旦时间过去,有时间到期的字典可以发送到dataWrapper。

现在,您可能正在提出一些想法。但这是一个很大的限制因素。进入的时间戳不一定严格增加;但是,如果在间隔结束后等待大约10秒,则可以安全地假设进入的每个数据都属于当前间隔。

我正在做所有这些复杂的事情的原因是减少我的应用程序的存储方面的计算。通过上面的设置,我的存储端线程可以简单地遍历字典中的所有键值对,并将它们存储在存储系统上的相同位置,而无需重新打开文件,重新分配组或更改目录。

祝你好运!我将非常感谢任何答案顺便说一句。 :)

首选,如果你可以发送一些python(这就是我正在做的项目),但我可以完全理解Java,C ++,Ruby或PHP。

摘要

我正在尝试将股票数据放入每个字典代表5分钟间隔的字典中。数据附带的时间戳决定了它应该放入哪个特定字典。这可能相对容易,除非时间戳没有严格增加,因此一旦5分钟过去,字典就不能立即发送到数据包装器。时间戳,因为不能保证在10秒内不再接收任何数据,之后可以将它发送到包装器。

我只是想要任何可以帮助我安排这个的想法,算法或部分实现。我们如何在时间戳(数据)和实际时间(10秒缓冲区)内切换当前字典的使用。

澄清编辑

5分钟的窗口应该是数据驱动的(基于时间戳),但10秒的超时似乎是时钟时间。

1 个答案:

答案 0 :(得分:2)

也许我错过了什么......

看起来您希望将数据保存在5分钟的存储桶中,但是您无法确定存储桶的所有数据在翻转后最长可达10秒。

这意味着您需要保留当前存储桶和之前的存储桶。当它超过5分钟边界10秒时,您可以发布/写出旧桶。