我即将开始实时收集大量数字数据(对于那些感兴趣的人来说,各种股票和 future 的买价/卖价/最后或“磁带”)。稍后将检索数据以进行分析和模拟。这一点也不难,但我想高效地完成它,这带来了很多问题。我不需要最好的解决方案(无论如何,根据指标可能有很多“最佳”)。我只想要一个计算机科学家会认可的解决方案。 (或者不笑?)
(1) 优化磁盘空间、I/O 速度或内存?
对于模拟来说,整体速度很重要。我们希望数据的 I/O(实际上是 I)速度比计算引擎快,因此我们不受 I/O 限制。
(2) 存储文本或其他内容(二进制数字)?
(3) 给定 (1)-(2) 中的一组选择,是否有任何出色的语言/库组合可以完成这项工作 - Java、Python、C++ 或其他语言?
我会将这段代码归类为“写完就忘记”,因此在代码的清晰度/紧凑性上更注重效率。我非常非常愿意坚持使用 Python 来编写模拟代码(因为模拟确实改变了很多并且需要清晰)。因此,优秀的 Pythonic 解决方案会加分。
编辑:这适用于 Linux 系统 (Ubuntu)
谢谢
最佳答案
优化磁盘空间和 IO 速度是同一件事 - 如今,CPU 与 IO 相比速度如此之快,以至于在存储数据之前压缩数据通常总体上更快(您可能确实想这样做)。我确实不认为内存发挥了重要作用(尽管您可能应该使用合理大小的缓冲区来确保进行顺序写入)。
二进制更紧凑(因此更快)。考虑到数据量,我怀疑人类可读是否有任何值(value)。文本格式的唯一优点是,如果它被损坏或丢失解析代码,更容易找出并纠正。
关于java - 收集、存储和检索大量数值数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4098509/