【发布时间】:2015-04-23 06:35:52
【问题描述】:
我遇到了一个与这里的问题类似的独特问题:
https://news.ycombinator.com/item?id=8368509
我有一个高速流量分析盒,它以大约 5 Gbps 的速度捕获,并从中挑选出特定的数据包以保存为 C++ 程序中的某种格式。每天可能会有 1-3 TB 写入磁盘。由于它是网络数据,因此所有时间序列都在纳秒级,但最好将其保存在秒或毫秒级,然后让另一个应用程序对嵌入的更高分辨率的时间戳进行排序。我的问题是决定使用哪种格式。我的两个要求是:
- 能够使用几个不同的时间戳参数以大约 50 MB/s 的速度连续写入磁盘。
- 能够将这些数据块导出到 MATLAB (HDF5) 中。
- 每天查询一次或两次此数据以进行分析
另一个不是硬性要求的好东西是:
- 将有 4 个这样的盒子独立运行,如果可能的话,最好查询所有这些盒子并合并数据。我应该提到所有 4 个盒子都位于物理上不同的位置,因此共享数据会产生一些开销。
由于遗留应用程序,我无法更改第二个,但我认为第一个更重要。我可能想要导出到 matlab 的查询类型类似于“在时间 Y 和 Z 之间拉度量 X”,因此最终必须进入 HDF5 格式。如果需要,我可以使用一个名为 MatIO 的外部库来编写 matlab 文件,但如果没有翻译步骤会更好。我已经阅读了上面提到的整个线程,并且有许多选项似乎很突出:kdb+、Cassandra、PyTables 和 OpenTSDB。所有这些似乎都在做我想做的事,但我真的不知道将它变成 MATLAB HDF5 格式有多容易,以及是否其中任何一个会使它比其他格式更难。
如果有人有做过类似事情的经验,那将是一个很大的帮助。谢谢!
【问题讨论】:
-
以防万一您不知道,kdb+ 并不便宜(是的,有一个免费的 32 位版本,但它有 4gb 的内存限制,这将很难实现您的目标寻找)。您的所有其他选项似乎都是免费/开源的。如果钱不是问题,那么 kdb+ 绝对是任何时间序列数据集的最佳选择。
-
“不便宜”是什么意思?我听过好几次了,但没有看到数字。我提交了两个请求,让他们的销售团队与我联系,但尚未收到回复。
-
不是我可以引用数字的地方,但我相信他们的销售团队会回复您。也请询问入门包,这会便宜一些(但同样受到更多限制)
标签: matlab cassandra hdf5 kdb q-lang