收集、存储和检索大量数字数据
我准备开始实时收集大量的数字数据(如果你感兴趣的话,就是各种股票和期货的买入价、卖出价和最后成交价,或者称为“行情”)。这些数据之后会被提取出来用于分析和模拟。这个过程其实并不复杂,但我希望能做到高效,这就引出了很多问题。我并不需要最好的解决方案(而且根据不同的标准,可能会有很多“最好”的选择)。我只希望能找到一个计算机科学家会认可的方案。(或者不会嘲笑的方案?)
(1) 是优化磁盘空间、输入输出速度,还是内存?
对于模拟来说,整体速度是很重要的。我们希望数据的输入输出速度(其实就是我说的速度)能比计算引擎快一点,这样我们就不会被输入输出速度限制。
(2) 是存储文本,还是其他形式(比如二进制数字)?
(3) 在(1)和(2)的选择中,有没有特别推荐的语言/库组合来完成这个任务——比如Java、Python、C++,或者其他的?
我会把这段代码归类为“写完就忘”,所以在效率上要比代码的清晰度和简洁性更重要。我非常非常希望能用Python来写模拟代码(因为模拟的内容变化很大,需要保持清晰)。所以如果有好的Python解决方案,那就更好了。
编辑:这是在Linux系统(Ubuntu)上进行的。
谢谢!
6 个回答
使用D-Bus格式来发送信息可能对你有好处。这个格式是标准的、二进制的,而且D-Bus可以用多种编程语言来实现。它不仅可以在网络上发送信息,也可以在同一台机器上的不同程序之间进行通信。
为了节省磁盘空间和提高输入输出速度,其实是同一回事。现在的CPU速度非常快,相比之下,输入输出的速度就显得慢很多。所以,有时候在存储数据之前先压缩一下,整体上会更快(你可能真的需要这样做)。我觉得内存的作用不大(不过你最好使用一个合适大小的缓冲区,这样可以确保你是顺序写入数据)。
二进制格式的数据更紧凑(所以速度也更快)。考虑到数据量,我怀疑人类可读性有什么价值。文本格式唯一的好处就是,如果数据损坏了或者你丢失了解析代码,文本格式更容易理解和修复。