【问题标题】:How to store aggregated data in kdb+如何在 kdb+ 中存储聚合数据
【发布时间】:2021-07-07 14:24:08
【问题描述】:

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

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

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

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

在做决定时我应该考虑哪些方面?

【问题讨论】:

    标签: kdb


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2017-11-01
      • 1970-01-01
      • 2017-02-10
      • 1970-01-01
      • 2016-03-07
      • 1970-01-01
      • 2023-03-08
      • 1970-01-01
      • 2015-12-22
      相关资源
      最近更新 更多