【问题标题】:Storing data counts from table into a "trending" table将表中的数据计数存储到“趋势”表中
【发布时间】:2015-07-11 01:35:34
【问题描述】:

我们有一个表格,我们必须为它提供许多不同字段组合的计数。 这需要很长时间才能即时完成并且不提供历史数据,因此我正在考虑将这些计数存储在另一个带有时间戳的表中的最佳方式,这样我们就可以快速查询它们并获取历史趋势。 对于每个计数,我们需要 4 条信息来识别它,并且我们想要存储大约 1000 个不同的指标。 我正在考虑三种不同的策略,具有计数和时间戳,但在识别计数以进行检索的方式上有所不同。

  1. 1 个表有 4 个字段来识别计数,这 4 个字段不会被规范化,因为它们包含来自不同外部表的数据。
  2. 1 表有 1 个“标签”字段,它将包含 4 条信息作为标签。这些标签可以被丰富并保存在另一个表中,每个标签部分可能有一个字段并将它们链接到外部表。
  3. 不同计数组的不同表能够在一个或多个字段上进行规范化,但这需要 6 到数十个表。

我将使用第一个,根本没有标准化,但想知道是否有人有更好或更简单的方法来存储所有这些计数。

值的样本: 状态,已安装,全部,虚拟,1234,01/05/2015

  • 第一个字段,状态,最多可以有 10 个值
  • 第二个字段,已安装,每个不同字段最多可以有 10 个 1
  • 第三个字段,all,最多可以有 10 个不同的值,但它们对于所有类别都是相同的
  • 第四个字段是虚拟的,最多可以有 30 个值,并且对于所有之前的类别也是相同的。
  • 最后两个字段是数字和时间戳

谢谢, 艾萨克

【问题讨论】:

  • 澄清一下,这 4 个字段标识了一个指标,或者对于 4 个字段的每个组合,您有 1000 个指标?
  • 是的,一共1000个指标,每个指标由4条信息标识。
  • 这4个字段有哪些信息?如果您可以使用数据样本修改您的问题会更容易
  • 好点 mucio,我已经更新了一个数据点样本并对每个字段进行了更好的解释。
  • 您还需要使用这些指标进行一些计算吗?以哪种方式?就像您会汇总相同状态和已安装的指标吗?还是您已经在此表中预先计算了所需的所有值?

标签: mysql database database-design data-modeling kpi


【解决方案1】:

当您有很多指标并且不需要使用它们进行指标内计算时,您可以选择 1. 解决方案。

我可能会建一个这样的表

Satus_id | Installed_id | All_id | Virtual_id | Date | Value

或者如果前四列的组合有一个正确的名称,我可能会创建两个表(我认为您将这种可能性称为 2 的第二种解决方案):

Metric Table
Satus_id | Installed_id | All_id | Virtual_id | Metric_id | Metric_Name 

Values Table 
Metric_id | Date | Value

如果您有指标或其他详细信息的名称,这很好,否则您需要为第一种方法的每个组合复制。

在这两种情况下,使用不同的指标进行行内操作会有点复杂,因此这种方法只建议用于高级 KPI。

最后,因为最后两个字段的所有可能组合始终存在于您的表中,您可以考虑将它们转换为列:

Satus_id | Installed_id | Date | All1_Virtual1 | All1_Virtual2 | ... | All10_Virtua30

All 有 10 个值,Virtual 有 30 个值,您将有 300 列,不是很容易处理,但如果您必须执行以下操作,它们将是值得拥有的:

(All1_Virtual2 - All5_Virtual23) * All6_Virtual12

但在这种情况下,我希望(如果可能)提前进行计算以减少列数。

【讨论】:

  • 谢谢@mucio,我想我会在另一个表中合并前四列。它类似于我的 2 选项,但要好得多。它还将使我们能够轻松查看我们正在收集哪些指标并将它们分组,等等......
猜你喜欢
  • 1970-01-01
  • 2018-03-10
  • 2011-08-09
  • 1970-01-01
  • 2013-05-14
  • 1970-01-01
  • 2012-01-13
  • 2013-09-16
  • 1970-01-01
相关资源
最近更新 更多