如何在 kdb+ 中存储聚合数据

egor7

我遇到了一个架构问题:我应该选择什么策略来存储聚合数据。

我知道在一些时间序列数据库中,比如RRDTools,可以有几个数据库层来存储 1H,1W,1M,1Y 聚合数据。

kdb+使用相同的策略是否是正常的做法:拥有多个带有日期/月/年/int(用于周和其他)分区的 HDB?(关于网关的规则如何找到合适的来源。)

作为替代方案,我想将所有数据存储在单个 HDB 中的表中,例如 tablename agg但对我来说,它看起来不像几个 HDB 那样流畅。

我应该考虑哪些方面的决定?

特里林奇

由于每个人的要求都不同,因此很难给出一般性答案,但我可以根据我的经验说,通常的做法是拥有一个按日期分区的 HDB,因为这可以容纳最广泛的历史数据集。在增加聚合粒度方面:

  1. 完整刻度数据 - 在 sym 上使用 `p# 进行日期分区时效果最佳
  2. 分钟聚合的数据 - 在 sym 或分钟上使用 `p# 进行日期分区,在分钟或 sym 上使用 `g# 进行日期分区时仍然工作良好
  3. 每小时汇总的数据 - 可以根据数量进行日期分区或展开。同样,您可以在 sym 和/或聚合时间单位(在本例中为小时)上有一些属性组合
  4. 每周汇总数据 - 考虑到这会压缩多少数据,您现在可能正在查看此日期分区数据库中的展开表。使用属性如上。
  5. 每月/每年汇总的数据 - 考虑到这些表格的大小,当然可以展开甚至可能平坦。在平面情况下几乎不需要属性。

维护许多具有不同分区样式的不同 HDB 对我来说似乎有点过分。但这一切都取决于情况和所涉及的数据量以及数据的预期使用模式。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章