我有一些独特的问题,看起来类似于这里的问题:
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 格式有多么容易,以及是否其中任何一个会使它比其他格式更难。
如果有人有做类似事情的经验,那将是一个很大的帮助。谢谢!