【问题标题】:Best Time Series Format for Querying and Converting to Matlab (HDF5)用于查询和转换为 Matlab (HDF5) 的最佳时间序列格式
【发布时间】:2015-04-23 06:35:52
【问题描述】:

我遇到了一个与这里的问题类似的独特问题:

https://news.ycombinator.com/item?id=8368509

我有一个高速流量分析盒,它以大约 5 Gbps 的速度捕获,并从中挑选出特定的数据包以保存为 C++ 程序中的某种格式。每天可能会有 1-3 TB 写入磁盘。由于它是网络数据,因此所有时间序列都在纳秒级,但最好将其保存在秒或毫秒级,然后让另一个应用程序对嵌入的更高分辨率的时间戳进行排序。我的问题是决定使用哪种格式。我的两个要求是:

  1. 能够使用几个不同的时间戳参数以大约 50 MB/s 的速度连续写入磁盘。
  2. 能够将这些数据块导出到 MATLAB (HDF5) 中。
  3. 每天查询一次或两次此数据以进行分析

另一个不是硬性要求的好东西是:

  1. 将有 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


【解决方案1】:

KDB+ 自动收报机当然能够以这种速度捕获数据,但是您需要确保很多事情(无论您选择哪种解决方案)

  • 正在捕获数据的机器是否有足够的内核?最好是 taskset 一个股票行情,例如,一个没有其他东西可以与之抗衡的核心
  • 与磁盘类似 - SSD,确保总线上没有争用
  • 分离工作负载 - 可以将不同类型的数据(也许数据包可以按源或流分区?)写入不同的 cpus/disks/tickerplant 进程。

基本上有很多方法可以减少这种情况。我可以说,尽管使用适当的硬件 KDB+ 可以完成这项工作。但是,如果您想要 HDF5,最好有一个简单的过程来捕获数据并即时写入/转换到磁盘。

【讨论】:

  • 谢谢!内核不是问题,我们可以根据需要尽可能大或小,但我倾向于 12 核 Xeon。此外,硬件应该能够对数据包进行某种程度的过滤。
猜你喜欢
  • 2017-12-31
  • 2016-08-10
  • 2013-07-01
  • 2018-08-16
  • 1970-01-01
  • 2017-05-24
  • 2011-07-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多